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)
68 target_id = ARGV.shift
69 args = {name: ARGV.shift}
71 args[:visibility] = @visibility
73 p = api.update_package target_proj, target_id, args
74 logger.info "Package #{target_id} has been updated."
75 puts format_package(p)
79 target_id = ARGV.shift
80 p = api.delete_package target_proj, target_id
81 logger.info "Package #{target_id} has been deleted."