lib/unwrappr/cli.rb in unwrappr-0.3.1 vs lib/unwrappr/cli.rb in unwrappr-0.3.2

- old
+ new

@@ -1,45 +1,83 @@ # frozen_string_literal: true require 'clamp' +# Welcome to unwrappr... module Unwrappr # Entry point for the app class CLI < Clamp::Command self.default_subcommand = 'all' - option ['--version', '-v'], :flag, 'Show version' do + option ['-v', '--version'], :flag, 'Show version' do puts "unwrappr v#{Unwrappr::VERSION}" exit(0) end subcommand 'all', 'run bundle update, push to github, '\ 'create a pr and annotate changes' do def execute - puts 'Doing the unwrappr thing...' - GitCommandRunner.create_branch! - BundlerCommandRunner.bundle_update! - GitCommandRunner.commit_and_push_changes! - GitHub::Client.make_pull_request! + Unwrappr.run_unwapper_in_pwd end end subcommand 'annotate-pull-request', 'Annotate Gemfile.lock changes in a Github pull request' do - option '--repo', 'REPO', + option ['-r', '--repo'], 'REPO', 'The repo in github <owner/project>', required: true - option '--pr', 'PR', + option ['-p', '--pr'], 'PR', 'The github PR number', required: true def execute LockFileAnnotator.annotate_github_pull_request( repo: repo, pr_number: pr.to_i ) end end + + subcommand('clone', <<~DESCRIPTION) do + Clone one git repository or more and create an annotated bundle update PR for each. + DESCRIPTION + + option(['-r', '--repo'], + 'REPO', + <<~DESCRIPTION, + a repo in github <owner/project>, may be specified multiple times + DESCRIPTION + required: true, + multivalued: true) + + def execute + repo_list.each do |repo| + unless Dir.exist?(repo) + GitCommandRunner.clone_repository( + "https://github.com/#{repo}", + repo + ) + end + + Dir.chdir(repo) { Unwrappr.run_unwapper_in_pwd } + end + end + end + end + + def self.run_unwapper_in_pwd + return unless lockfile_present? + + puts "Doing the unwrappr thing in #{Dir.pwd}" + + GitCommandRunner.create_branch! + BundlerCommandRunner.bundle_update! + GitCommandRunner.commit_and_push_changes! + GitHub::Client.make_pull_request! + end + + def self.lockfile_present? + GitCommandRunner.file_exist?('Gemfile.lock') end end