lib/kameleon/repository.rb in kameleon-builder-2.10.1 vs lib/kameleon/repository.rb in kameleon-builder-2.10.2

- old
+ new

@@ -26,21 +26,61 @@ end def self.update(name) check_git_binary git_repo = File.join(Kameleon.env.repositories_path, name) + raise RepositoryError, "Repository not found '#{name}'" if not File.directory?(git_repo) cmd = ["git", "--git-dir", File.join(git_repo, ".git"), "--work-tree", git_repo, "pull", "--verbose"] process = ChildProcess.build(*cmd) process.io.inherit! process.start process.wait process.stop end - def self.list + def self.list(kwargs = {}) Dir["#{Kameleon.env.repositories_path}/*"].each do |repo_path| - Kameleon.ui.info File.basename("#{repo_path}") + if kwargs[:git] + show_git_repository(repo_path) + else + Kameleon.ui.info File.basename(repo_path) + end end + end + + def self.remove(name) + repo_path = File.join(Kameleon.env.repositories_path, name) + raise RepositoryError, "Repository not found '#{name}'" if not File.directory?(repo_path) + Kameleon.ui.shell.say "Removing: ", :red, false + show_git_repository(repo_path) + FileUtils.rm_rf(repo_path) + end + + def self.show_git_repository(repo_path) + cmd = ["git", "remote", "-v"] + r, w = IO.pipe + process = ChildProcess.build(*cmd) + process.io.stdout = w + process.cwd = repo_path + process.start + w.close + url = r.readline.split[1] + process.wait + process.stop + cmd = ["git", "rev-parse", "--abbrev-ref", "HEAD"] + r, w = IO.pipe + process = ChildProcess.build(*cmd) + process.io.stdout = w + process.cwd = repo_path + process.start + w.close + branch = r.readline.chomp + process.wait + process.stop + Kameleon.ui.shell.say "#{File.basename("#{repo_path}")}", nil, false + Kameleon.ui.shell.say " <-", :magenta, false + Kameleon.ui.shell.say " #{url}", :cyan, false + Kameleon.ui.shell.say " (#{branch})", :yellow end end end