X-Git-Url: http://git.osdn.net/view?p=osdn-codes%2Fosdn-cli.git;a=blobdiff_plain;f=lib%2Fosdn%2Fcli%2Fcommand%2Fpackage.rb;h=c8865f581413b0f54aaf3734aa16871d885ac3db;hp=0d3783135b0ff6a611289873eb69be7f8e02a11d;hb=9ffb4d214856f039b9177b3fad8a1160fe528fcc;hpb=354d55dab69ff4bf41c4b0b4613d97c46a01ff2a diff --git a/lib/osdn/cli/command/package.rb b/lib/osdn/cli/command/package.rb index 0d37831..c8865f5 100644 --- a/lib/osdn/cli/command/package.rb +++ b/lib/osdn/cli/command/package.rb @@ -1,10 +1,12 @@ +require 'osdn/cli/command/frs_base' + module OSDN; module CLI; module Command - class Package < Base + class Package < FrsBase def help puts "#{$0} package [opts] [list]" puts "#{$0} package [opts] create " - puts "#{$0} package [opts] update [name]" - puts "#{$0} package [opts] delete " + puts "#{$0} package [opts] update [numeric-package-id] [name]" + puts "#{$0} package [opts] delete [numeric-package-id]" puts "Options:" puts " -f --format= Set output format" puts " -p --project= Target project (numeric id or name)" @@ -12,11 +14,10 @@ module OSDN; module CLI; module Command end def self.description - "Manipulate release package of project" + "Manipulate frs packages of project" end - def run - update_token + def process_options opts = GetoptLong.new( [ '--format', '-f', GetoptLong::REQUIRED_ARGUMENT ], [ '--project', '-p', GetoptLong::REQUIRED_ARGUMENT ], @@ -38,25 +39,12 @@ module OSDN; module CLI; module Command @visibility = arg end end - command = ARGV.shift || 'list' - if !command || command.empty? - logger.fatal "subcommand is missing." - help - return - end - if self.respond_to? command - self.send command - else - logger.fatal "Invalid subcommand: #{command}" - help - return - end end def list list = api.list_packages target_proj if format == 'json' - puts list.to_json + puts list.map{|i| i.to_hash}.to_json else list.each do |p| puts format_package(p) @@ -77,42 +65,30 @@ module OSDN; module CLI; module Command end def update - target_id = ARGV.shift - args = {name: ARGV.shift} + _set_package_id + args = {} + if ARGV[1].to_s != "" + args[:name] = ARGV[1] + end if @visibility args[:visibility] = @visibility end - p = api.update_package target_proj, target_id, args - logger.info "Package #{target_id} has been updated." + logger.debug "Updating package #{target_package} as #{args.inspect}" + p = api.update_package target_proj, target_package, args + logger.info "Package #{target_package} has been updated." puts format_package(p) end def delete - target_id = ARGV.shift - p = api.delete_package target_proj, target_id - logger.info "Package #{target_id} has been deleted." - end - - private - def target_proj - @target_proj and return @target_proj - vars = load_variables - vars.project && !vars.project.empty? and - return vars.project - logger.fatal "No target project is specified." - exit + _set_package_id + p = api.delete_package target_proj, target_package + logger.info "Package #{target_package} has been deleted." end - def api - OSDNClient::ProjectApi.new + def _set_package_id + return if ARGV[0].to_i == 0 + @target_package = ARGV[0].to_i end - def format_package(p) - if format == 'json' - p.to_json - else - "##{p.id} #{p.name} (#{p.visibility}, #{[*p.releases].count} releases)\n #{p.url}" - end - end end end; end; end