14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/osdn/cli/command/frs_upload.rb', line 14
def run
update_token
opts = GetoptLong.new(
[ '--dry-run', '-n', GetoptLong::NO_ARGUMENT ],
[ '--project', '-p', GetoptLong::REQUIRED_ARGUMENT ],
[ '--release', '-r', GetoptLong::REQUIRED_ARGUMENT ],
[ '--visibility', '-v', GetoptLong::REQUIRED_ARGUMENT ],
)
opts.each do |opt, arg|
case opt
when '--project'
arg.empty? or
@target_proj = arg
when '--visibility'
unless %w(public private hidden).member?(arg)
logger.fatal "Invalid visibility status: #{arg}"
exit
end
@visibility = arg
when '--dry-run'
@dry_run = true
end
end
@target_dir = Pathname.new(ARGV.shift || '.')
proj_info = api.get_project target_proj
Pathname.glob(@target_dir+'*').each do |pdir|
unless load_variables(pdir).package_id
logger.info "Createing new package '#{pdir.basename}'"
pinfo = api.create_package target_proj, pdir.basename, visibility: @visibility
update_variables pdir, package_id: pinfo.id
$stdout.puts "New package '#{pinfo.name}' has been created; #{pinfo.url}"
end
Pathname.glob(pdir + '*').each do |rdir|
vars = load_variables(rdir)
rinfo = nil
if vars.release_id
rinfo = api.get_release target_proj, target_package(rdir), target_release(rdir)
else vars.release_id
logger.info "Createing new release '#{rdir.basename}'"
rinfo = nil
if api.respond_to? :create_reelase rinfo = api.create_reelase target_proj, target_package(rdir), rdir.basename, visibility: @visibility
else
rinfo = api.create_release target_proj, target_package(rdir), rdir.basename, visibility: @visibility
end
update_variables rdir, release_id: rinfo.id
$stdout.puts "New release '#{rinfo.name}' has been created; #{rinfo.url}"
end
Pathname.glob(rdir + '*').each do |file|
if file.directory?
logger.error "Skip direcotry #{file}"
next
end
if rinfo.files.find { |f| f.name == file.basename.to_s }
logger.warn "Skip already uploaded file '#{file}'"
else
logger.info "Uploading file #{file} (#{file.size} bytes)"
finfo = api.create_release_file target_proj, target_package(rdir), target_release(rdir), file.open, visibility: @visibility
logger.info "Upload completed."
$stdout.puts "New file '#{file}' has been uploaded; #{finfo.url}"
end
end
end
end
end
|