1 require 'osdn/cli/command/frs_base'
3 module OSDN; module CLI; module Command
4 class Package < FrsBase
6 puts "#{$0} package [opts] [list]"
7 puts "#{$0} package [opts] create <new-package-name>"
8 puts "#{$0} package [opts] update [numeric-package-id] [name]"
9 puts "#{$0} package [opts] delete [numeric-package-id]"
11 puts " -f --format=<pretty|json> Set output format"
12 puts " -p --project=<project> Target project (numeric id or name)"
13 puts " -v --visibility=<public|private|hidden>"
17 "Manipulate frs packages of project"
21 opts = GetoptLong.new(
22 [ '--format', '-f', GetoptLong::REQUIRED_ARGUMENT ],
23 [ '--project', '-p', GetoptLong::REQUIRED_ARGUMENT ],
24 [ '--visibility', '-v', GetoptLong::REQUIRED_ARGUMENT ],
26 opts.each do |opt, arg|
35 unless %w(public private hidden).member?(arg)
36 logger.fatal "Invalid visibility status: #{arg}"
45 list = api.list_packages target_proj
47 puts list.map{|i| i.to_hash}.to_json
50 puts format_package(p)
58 logger.fatal "Package name is missing."
62 p = api.create_package target_proj, name, visibility: @visibility
63 logger.info "New package has been created."
64 puts format_package(p)
74 args[:visibility] = @visibility
76 logger.debug "Updating package #{target_package} as #{args.inspect}"
77 p = api.update_package target_proj, target_package, args
78 logger.info "Package #{target_package} has been updated."
79 puts format_package(p)
84 p = api.delete_package target_proj, target_package
85 logger.info "Package #{target_package} has been deleted."
89 return if ARGV[0].to_i == 0
90 @target_package = ARGV[0].to_i