FIX: Accept github theme urls with a trailing slash

FIX: Accept github theme urls with a trailing slash

diff --git a/lib/theme_store/git_importer.rb b/lib/theme_store/git_importer.rb
index 6d8cee3..673e9a4 100644
--- a/lib/theme_store/git_importer.rb
+++ b/lib/theme_store/git_importer.rb
@@ -11,6 +11,7 @@ class ThemeStore::GitImporter
   def initialize(url, private_key: nil, branch: nil)
     @url = url
     if @url.start_with?("https://github.com") && !@url.end_with?(".git")
+      @url = @url.gsub(/\/$/, '')
       @url += ".git"
     end
     @temp_folder = "#{Pathname.new(Dir.tmpdir).realpath}/discourse_theme_#{SecureRandom.hex}"
diff --git a/spec/components/theme_store/git_importer_spec.rb b/spec/components/theme_store/git_importer_spec.rb
index 0df9836..46783d5 100644
--- a/spec/components/theme_store/git_importer_spec.rb
+++ b/spec/components/theme_store/git_importer_spec.rb
@@ -10,6 +10,7 @@ describe ThemeStore::GitImporter do
   context "#import" do
 
     let(:url) { "https://github.com/example/example.git" }
+    let(:trailing_slash_url) { "https://github.com/example/example/" }
     let(:ssh_url) { "git@github.com:example/example.git" }
     let(:branch) { "dev" }
 
@@ -27,6 +28,13 @@ describe ThemeStore::GitImporter do
       importer.import!
     end
 
+    it "should work with trailing slash url" do
+      Discourse::Utils.expects(:execute_command).with("git", "clone", url, @temp_folder)
+
+      importer = ThemeStore::GitImporter.new(trailing_slash_url)
+      importer.import!
+    end
+
     it "should import from ssh url" do
       Discourse::Utils.expects(:execute_command).with({
         'GIT_SSH_COMMAND' => "ssh -i #{@ssh_folder}/id_rsa -o StrictHostKeyChecking=no"

GitHub sha: 0508546f

2 Likes

This commit has been mentioned on Discourse Meta. There might be relevant details there:

If you fix it why not make it:

@url = @url.gsub(/\/+$/, '')