From b6c32eb7e0f23cadde93d893938d745c69c1ad45 Mon Sep 17 00:00:00 2001 From: Yuji Ueki Date: Tue, 24 Sep 2019 02:23:55 +0900 Subject: [PATCH] :+1: Add last option to build command --- lib/circleci/cli.rb | 1 + lib/circleci/cli/command/build_command.rb | 20 ++++++++++++++++++-- spec/circler/command/build_command_spec.rb | 6 ++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/circleci/cli.rb b/lib/circleci/cli.rb index b09b0af..2ab0162 100644 --- a/lib/circleci/cli.rb +++ b/lib/circleci/cli.rb @@ -36,6 +36,7 @@ def builds desc 'build', 'show build description' method_option :project, aliases: 'p', type: :string, banner: 'user/project' method_option :build, aliases: 'n', type: :numeric, banner: 'build-number' + method_option :last, aliases: 'l', type: :boolean, banner: 'get last build' def build Command::BuildCommand.run(options) end diff --git a/lib/circleci/cli/command/build_command.rb b/lib/circleci/cli/command/build_command.rb index 1af48b9..82ecc7b 100644 --- a/lib/circleci/cli/command/build_command.rb +++ b/lib/circleci/cli/command/build_command.rb @@ -8,10 +8,26 @@ class << self def run(options) setup_token username, reponame = project_name(options).split('/') - number = build_number(options) - build = Response::Build.get(username, reponame, number) + build = + if options.last + get_last_build(username, reponame) + else + get_build(username, reponame, options) + end say Printer::StepPrinter.new(build.steps).to_s end + + private + + def get_build(username, reponame, options) + number = build_number(options) + Response::Build.get(username, reponame, number) + end + + def get_last_build(username, reponame) + builds = Response::Build.all(username, reponame) + Response::Build.get(username, reponame, builds.map(&:build_number).max) + end end end end diff --git a/spec/circler/command/build_command_spec.rb b/spec/circler/command/build_command_spec.rb index cc0a211..aba329c 100644 --- a/spec/circler/command/build_command_spec.rb +++ b/spec/circler/command/build_command_spec.rb @@ -46,4 +46,10 @@ it_behaves_like 'a command asks project name' it_behaves_like 'a command show build information' end + + context 'with last option' do + let(:options) { OpenStruct.new(project: 'unhappychoice/Circler', branch: nil, last: true) } + + it_behaves_like 'a command show build information' + end end