osdn-cli 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/osdn/cli.rb +27 -3
- data/lib/osdn/cli/command/frs_base.rb +80 -0
- data/lib/osdn/cli/command/frs_mkdirs.rb +1 -1
- data/lib/osdn/cli/command/frs_upload.rb +6 -60
- data/lib/osdn/cli/command/login.rb +1 -1
- data/lib/osdn/cli/command/package.rb +6 -39
- data/lib/osdn/cli/command/release.rb +91 -0
- data/lib/osdn/cli/command/relfile.rb +123 -0
- data/lib/osdn/cli/overrides.rb +16 -0
- data/lib/osdn/cli/runner.rb +2 -2
- data/lib/osdn/cli/version.rb +1 -1
- metadata +6 -3
- data/lib/osdn/cli/common.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32c466e6ff582c2e2ae91f4e1fc455e34630828e
|
4
|
+
data.tar.gz: 66080054808d8d1e077b95955e0dddac754159d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82f165bb2dd2afda2f954fbbeb228e498b41fd9e723dd593bb01c6a4f62724b940bc3058a82e2fb0801c4672959bd5c8b407f5b192ab444eb2f5725b75b815c3
|
7
|
+
data.tar.gz: 2302b89c7b4cb842b798cbb72103183c8a17078163c1387eacbf29a3b09775eee17b7a500a5e382f0252394ef9cfb9c2acb952456934029b1e560f3a57d9e6cb
|
data/lib/osdn/cli.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "osdn/cli/version"
|
2
2
|
require "osdn/cli/runner"
|
3
|
+
require "osdn/cli/overrides"
|
3
4
|
require 'getoptlong'
|
4
5
|
require 'logger'
|
5
6
|
require 'pathname'
|
@@ -8,6 +9,7 @@ require 'fileutils'
|
|
8
9
|
require 'osdn-client'
|
9
10
|
require 'hashie'
|
10
11
|
require 'json'
|
12
|
+
require 'digest'
|
11
13
|
|
12
14
|
module OSDN
|
13
15
|
module CLI
|
@@ -19,13 +21,23 @@ module OSDN
|
|
19
21
|
def client_secret
|
20
22
|
@@client_secret
|
21
23
|
end
|
22
|
-
|
24
|
+
|
25
|
+
@@_show_progress = false
|
26
|
+
def _show_progress
|
27
|
+
@@_show_progress
|
28
|
+
end
|
29
|
+
def _show_progress=(v)
|
30
|
+
@@_show_progress = v
|
31
|
+
end
|
32
|
+
|
33
|
+
module_function :client_id, :client_secret,
|
34
|
+
:_show_progress, :_show_progress=
|
23
35
|
|
24
36
|
module Command
|
25
37
|
autoload :Login, 'osdn/cli/command/login'
|
26
38
|
autoload :Package, 'osdn/cli/command/package'
|
27
|
-
|
28
|
-
|
39
|
+
autoload :Release, 'osdn/cli/command/release'
|
40
|
+
autoload :Relfile, 'osdn/cli/command/relfile'
|
29
41
|
autoload :FrsMkdirs, 'osdn/cli/command/frs_mkdirs'
|
30
42
|
autoload :FrsUpload, 'osdn/cli/command/frs_upload'
|
31
43
|
|
@@ -155,6 +167,18 @@ module OSDN
|
|
155
167
|
def update_variables(dir, vars)
|
156
168
|
write_variables(load_variables(dir, false).merge(vars), dir)
|
157
169
|
end
|
170
|
+
|
171
|
+
private
|
172
|
+
def hexdigest(klass, file)
|
173
|
+
fio = file.open
|
174
|
+
dig = klass.new
|
175
|
+
while buf = fio.read(1024*1024) and buf.length > 0
|
176
|
+
dig << buf
|
177
|
+
end
|
178
|
+
fio.close
|
179
|
+
dig.hexdigest
|
180
|
+
end
|
181
|
+
|
158
182
|
end
|
159
183
|
|
160
184
|
class Ping < Base
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module OSDN; module CLI; module Command
|
2
|
+
class FrsBase < Base
|
3
|
+
def run
|
4
|
+
update_token
|
5
|
+
process_options
|
6
|
+
command = ARGV.shift || 'list'
|
7
|
+
if !command || command.empty?
|
8
|
+
logger.fatal "subcommand is missing."
|
9
|
+
help
|
10
|
+
return
|
11
|
+
end
|
12
|
+
if self.respond_to? command
|
13
|
+
self.send command
|
14
|
+
else
|
15
|
+
logger.fatal "Invalid subcommand: #{command}"
|
16
|
+
help
|
17
|
+
return
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def process_options
|
22
|
+
raise NotImplementedError
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
def target_proj
|
27
|
+
@target_proj and return @target_proj
|
28
|
+
vars = load_variables
|
29
|
+
vars.project && !vars.project.empty? and
|
30
|
+
return vars.project
|
31
|
+
logger.fatal "No target project is specified."
|
32
|
+
exit
|
33
|
+
end
|
34
|
+
|
35
|
+
def target_package
|
36
|
+
@target_package and return @target_package
|
37
|
+
vars = load_variables
|
38
|
+
vars.package_id && !vars.package_id.empty? and
|
39
|
+
return vars.package_id
|
40
|
+
logger.fatal "No target package is specified."
|
41
|
+
exit
|
42
|
+
end
|
43
|
+
|
44
|
+
def target_release
|
45
|
+
@target_release and return @target_release
|
46
|
+
vars = load_variables
|
47
|
+
vars.release_id && !vars.release_id.empty? and
|
48
|
+
return vars.release_id
|
49
|
+
logger.fatal "No target release is specified."
|
50
|
+
exit
|
51
|
+
end
|
52
|
+
|
53
|
+
def api
|
54
|
+
OSDNClient::ProjectApi.new
|
55
|
+
end
|
56
|
+
|
57
|
+
def format_object(o, children = nil)
|
58
|
+
if format == 'json'
|
59
|
+
o.to_hash.to_json
|
60
|
+
else
|
61
|
+
children_str = ''
|
62
|
+
children and
|
63
|
+
children_str = ", #{[*o.send(children)].count} #{children}"
|
64
|
+
"##{o.id} #{o.name} (#{o.visibility}#{children_str})\n #{o.url}"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def format_release(r)
|
69
|
+
format_object(r, :files)
|
70
|
+
end
|
71
|
+
|
72
|
+
def format_package(p)
|
73
|
+
format_object(p, :releases)
|
74
|
+
end
|
75
|
+
|
76
|
+
def format_file(f)
|
77
|
+
format_object(f)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end; end; end
|
@@ -33,7 +33,7 @@ module OSDN; module CLI; module Command
|
|
33
33
|
|
34
34
|
logger.debug "Getting Package list..."
|
35
35
|
packages = api.list_packages target_proj
|
36
|
-
logger.debug "Making each package
|
36
|
+
logger.debug "Making each package directory"
|
37
37
|
|
38
38
|
packages.each do |package|
|
39
39
|
pname = fsname(package.name)
|
@@ -1,46 +1,3 @@
|
|
1
|
-
require 'digest'
|
2
|
-
require 'ethon'
|
3
|
-
|
4
|
-
module OSDN; module CLI; module Command
|
5
|
-
class FrsUpload < Base
|
6
|
-
@@_show_progress = false
|
7
|
-
def self._show_progress
|
8
|
-
@@_show_progress
|
9
|
-
end
|
10
|
-
def self._show_progress=(v)
|
11
|
-
need_reset = (!!@@_show_progress != !!v)
|
12
|
-
@@_show_progress = v
|
13
|
-
need_reset and _reset_all_typhoeus_pool
|
14
|
-
end
|
15
|
-
|
16
|
-
def self._reset_all_typhoeus_pool
|
17
|
-
first_easyid = nil
|
18
|
-
while true
|
19
|
-
e = Typhoeus::Pool.get
|
20
|
-
Typhoeus::Pool.release(e)
|
21
|
-
e.__id__ == first_easyid and break
|
22
|
-
first_easyid ||= e.__id__
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end; end; end
|
27
|
-
|
28
|
-
module Ethon
|
29
|
-
class Easy
|
30
|
-
module Callbacks
|
31
|
-
alias_method :set_callbacks_orig, :set_callbacks
|
32
|
-
def set_callbacks
|
33
|
-
set_callbacks_orig
|
34
|
-
if OSDN::CLI::Command::FrsUpload._show_progress
|
35
|
-
Curl.set_option(:noprogress, false, handle)
|
36
|
-
else
|
37
|
-
Curl.set_option(:noprogress, true, handle)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
1
|
module OSDN; module CLI; module Command
|
45
2
|
class FrsUpload < Base
|
46
3
|
def help
|
@@ -87,7 +44,7 @@ module OSDN; module CLI; module Command
|
|
87
44
|
@target_dir = Pathname.new(ARGV.shift || '.')
|
88
45
|
proj_info = api.get_project target_proj # check project existance
|
89
46
|
|
90
|
-
Pathname.glob(@target_dir+'*').each do |pdir|
|
47
|
+
Pathname.glob(@target_dir+'*').sort.each do |pdir|
|
91
48
|
unless load_variables(pdir).package_id
|
92
49
|
logger.info "Createing new package '#{pdir.basename}'"
|
93
50
|
if @dry_run
|
@@ -99,7 +56,7 @@ module OSDN; module CLI; module Command
|
|
99
56
|
$stdout.puts "New package '#{pinfo.name}' has been created; #{pinfo.url}"
|
100
57
|
end
|
101
58
|
|
102
|
-
Pathname.glob(pdir + '*').each do |rdir|
|
59
|
+
Pathname.glob(pdir + '*').sort.each do |rdir|
|
103
60
|
vars = load_variables(rdir)
|
104
61
|
rinfo = nil
|
105
62
|
if vars.release_id
|
@@ -115,7 +72,7 @@ module OSDN; module CLI; module Command
|
|
115
72
|
$stdout.puts "New release '#{rinfo.name}' has been created; #{rinfo.url}"
|
116
73
|
end
|
117
74
|
|
118
|
-
Pathname.glob(rdir + '*').each do |file|
|
75
|
+
Pathname.glob(rdir + '*').sort.each do |file|
|
119
76
|
if file.directory?
|
120
77
|
logger.error "Skip direcotry #{file}"
|
121
78
|
next
|
@@ -138,16 +95,16 @@ module OSDN; module CLI; module Command
|
|
138
95
|
finfo = Hashie::Mash.new id: '(dry-run)', url: '(dry-run)'
|
139
96
|
else
|
140
97
|
logger.level <= Logger::INFO and
|
141
|
-
|
98
|
+
OSDN::CLI._show_progress = true
|
142
99
|
fio = file.open
|
143
100
|
logger.info "Starting upload #{file}..."
|
144
101
|
finfo = api.create_release_file target_proj, target_package(rdir), target_release(rdir), fio, visibility: @visibility
|
145
102
|
fio.close
|
146
|
-
|
103
|
+
OSDN::CLI._show_progress = false
|
147
104
|
if digests.find { |type, dig| dig != finfo.send("digest_#{type}") }
|
148
105
|
logger.error "File digests are mismatch! Upload file #{file} may be broken! Please check."
|
149
106
|
else
|
150
|
-
logger.info "Upload
|
107
|
+
logger.info "Upload complete."
|
151
108
|
end
|
152
109
|
end
|
153
110
|
$stdout.puts "New file '#{file}' has been uploaded; #{finfo.url}"
|
@@ -192,16 +149,5 @@ module OSDN; module CLI; module Command
|
|
192
149
|
def api
|
193
150
|
OSDNClient::ProjectApi.new
|
194
151
|
end
|
195
|
-
|
196
|
-
def hexdigest(klass, file)
|
197
|
-
fio = file.open
|
198
|
-
dig = klass.new
|
199
|
-
while buf = fio.read(1024*1024) and buf.length > 0
|
200
|
-
dig << buf
|
201
|
-
end
|
202
|
-
fio.close
|
203
|
-
dig.hexdigest
|
204
|
-
end
|
205
|
-
|
206
152
|
end
|
207
153
|
end; end; end
|
@@ -30,7 +30,7 @@ module OSDN; module CLI; module Command
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def launch_brwoser(url)
|
33
|
-
puts "Access
|
33
|
+
puts "Access following URL to get auth code;\n#{url}"
|
34
34
|
if ENV['DISPLAY']
|
35
35
|
%w(/usr/bin/xdg-open /usr/bin/X11/xdg-open /usr/local/bin/xdg-open
|
36
36
|
/usr/bin/x-www-browser /usr/bin/firefox /usr/local/bin/firefox
|
@@ -1,6 +1,8 @@
|
|
1
|
+
require 'osdn/cli/command/frs_base'
|
2
|
+
|
1
3
|
module OSDN; module CLI; module Command
|
2
|
-
class Package <
|
3
|
-
def
|
4
|
+
class Package < FrsBase
|
5
|
+
def help
|
4
6
|
puts "#{$0} package [opts] [list]"
|
5
7
|
puts "#{$0} package [opts] create <new-package-name>"
|
6
8
|
puts "#{$0} package [opts] update <numeric-package-id> [name]"
|
@@ -15,8 +17,7 @@ module OSDN; module CLI; module Command
|
|
15
17
|
"Manipulate release package of project"
|
16
18
|
end
|
17
19
|
|
18
|
-
def
|
19
|
-
update_token
|
20
|
+
def process_options
|
20
21
|
opts = GetoptLong.new(
|
21
22
|
[ '--format', '-f', GetoptLong::REQUIRED_ARGUMENT ],
|
22
23
|
[ '--project', '-p', GetoptLong::REQUIRED_ARGUMENT ],
|
@@ -38,25 +39,12 @@ module OSDN; module CLI; module Command
|
|
38
39
|
@visibility = arg
|
39
40
|
end
|
40
41
|
end
|
41
|
-
command = ARGV.shift || 'list'
|
42
|
-
if !command || command.empty?
|
43
|
-
logger.fatal "subcommand is missing."
|
44
|
-
help
|
45
|
-
return
|
46
|
-
end
|
47
|
-
if self.respond_to? command
|
48
|
-
self.send command
|
49
|
-
else
|
50
|
-
logger.fatal "Invalid subcommand: #{command}"
|
51
|
-
help
|
52
|
-
return
|
53
|
-
end
|
54
42
|
end
|
55
43
|
|
56
44
|
def list
|
57
45
|
list = api.list_packages target_proj
|
58
46
|
if format == 'json'
|
59
|
-
puts list.to_json
|
47
|
+
puts list.map{|i| i.to_hash}.to_json
|
60
48
|
else
|
61
49
|
list.each do |p|
|
62
50
|
puts format_package(p)
|
@@ -93,26 +81,5 @@ module OSDN; module CLI; module Command
|
|
93
81
|
logger.info "Package #{target_id} has been deleted."
|
94
82
|
end
|
95
83
|
|
96
|
-
private
|
97
|
-
def target_proj
|
98
|
-
@target_proj and return @target_proj
|
99
|
-
vars = load_variables
|
100
|
-
vars.project && !vars.project.empty? and
|
101
|
-
return vars.project
|
102
|
-
logger.fatal "No target project is specified."
|
103
|
-
exit
|
104
|
-
end
|
105
|
-
|
106
|
-
def api
|
107
|
-
OSDNClient::ProjectApi.new
|
108
|
-
end
|
109
|
-
|
110
|
-
def format_package(p)
|
111
|
-
if format == 'json'
|
112
|
-
p.to_json
|
113
|
-
else
|
114
|
-
"##{p.id} #{p.name} (#{p.visibility}, #{[*p.releases].count} releases)\n #{p.url}"
|
115
|
-
end
|
116
|
-
end
|
117
84
|
end
|
118
85
|
end; end; end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require 'osdn/cli/command/frs_base'
|
2
|
+
|
3
|
+
module OSDN; module CLI; module Command
|
4
|
+
class Release < FrsBase
|
5
|
+
def help
|
6
|
+
puts "#{$0} release [opts] [list]"
|
7
|
+
puts "#{$0} release [opts] create <new-release-name>"
|
8
|
+
puts "#{$0} release [opts] update <numeric-release-id> [name]"
|
9
|
+
puts "#{$0} release [opts] delete <numeric-release-id>"
|
10
|
+
puts "Options:"
|
11
|
+
puts " -f --format=<pretty|json> Set output format"
|
12
|
+
puts " -p --project=<project> Target project (numeric id or name)"
|
13
|
+
puts " --package=<project> Target package (numeric id)"
|
14
|
+
puts " -v --visibility=<public|private|hidden>"
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.description
|
18
|
+
"Manipulate release (includes by package) of project"
|
19
|
+
end
|
20
|
+
|
21
|
+
def process_options
|
22
|
+
opts = GetoptLong.new(
|
23
|
+
[ '--format', '-f', GetoptLong::REQUIRED_ARGUMENT ],
|
24
|
+
[ '--project', '-p', GetoptLong::REQUIRED_ARGUMENT ],
|
25
|
+
[ '--package', GetoptLong::REQUIRED_ARGUMENT ],
|
26
|
+
[ '--visibility', '-v', GetoptLong::REQUIRED_ARGUMENT ],
|
27
|
+
)
|
28
|
+
opts.each do |opt, arg|
|
29
|
+
case opt
|
30
|
+
when '--format'
|
31
|
+
arg == 'json' and
|
32
|
+
self.format = arg
|
33
|
+
when '--project'
|
34
|
+
arg.empty? or
|
35
|
+
@target_proj = arg
|
36
|
+
when '--package'
|
37
|
+
arg.empty? or
|
38
|
+
@target_package = arg
|
39
|
+
when '--visibility'
|
40
|
+
unless %w(public private hidden).member?(arg)
|
41
|
+
logger.fatal "Invalid visibility status: #{arg}"
|
42
|
+
exit
|
43
|
+
end
|
44
|
+
@visibility = arg
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def list
|
50
|
+
package = api.get_package target_proj, target_package
|
51
|
+
list = package.releases
|
52
|
+
if format == 'json'
|
53
|
+
puts list.map{|i| i.to_hash}.to_json
|
54
|
+
else
|
55
|
+
list.each do |r|
|
56
|
+
puts format_release(r)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def create
|
62
|
+
name = ARGV.shift
|
63
|
+
if !name
|
64
|
+
logger.fatal "Release name is missing."
|
65
|
+
help
|
66
|
+
return
|
67
|
+
end
|
68
|
+
r = api.create_release target_proj, target_package, name, visibility: @visibility
|
69
|
+
logger.info "New release has been created."
|
70
|
+
puts format_release(r)
|
71
|
+
end
|
72
|
+
|
73
|
+
def update
|
74
|
+
target_id = ARGV.shift
|
75
|
+
args = {name: ARGV.shift}
|
76
|
+
if @visibility
|
77
|
+
args[:visibility] = @visibility
|
78
|
+
end
|
79
|
+
r = api.update_release target_proj, target_package, target_id, args
|
80
|
+
logger.info "Release #{target_id} has been updated."
|
81
|
+
puts format_release(r)
|
82
|
+
end
|
83
|
+
|
84
|
+
def delete
|
85
|
+
target_id = ARGV.shift
|
86
|
+
r = api.delete_release target_proj, target_package, target_id
|
87
|
+
logger.info "Release #{target_id} has been deleted."
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
end; end; end
|
@@ -0,0 +1,123 @@
|
|
1
|
+
require 'osdn/cli/command/frs_base'
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
module OSDN; module CLI; module Command
|
5
|
+
class Relfile < FrsBase
|
6
|
+
def help
|
7
|
+
puts "#{$0} relfile [opts] [list]"
|
8
|
+
puts "#{$0} relfile [opts] create <target-file>"
|
9
|
+
puts "#{$0} relfile [opts] update <numeric-file-id>"
|
10
|
+
puts "#{$0} relfile [opts] delete <numeric-file-id>"
|
11
|
+
puts "Options:"
|
12
|
+
puts " -f --format=<pretty|json> Set output format"
|
13
|
+
puts " -p --project=<project> Target project (numeric id or name)"
|
14
|
+
puts " --package=<project> Target package (numeric id)"
|
15
|
+
puts " --release=<project> Target release (numeric id)"
|
16
|
+
puts " -v --visibility=<public|private|hidden>"
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.description
|
20
|
+
"Manipulate release (includes by package) of project"
|
21
|
+
end
|
22
|
+
|
23
|
+
def process_options
|
24
|
+
opts = GetoptLong.new(
|
25
|
+
[ '--format', '-f', GetoptLong::REQUIRED_ARGUMENT ],
|
26
|
+
[ '--project', '-p', GetoptLong::REQUIRED_ARGUMENT ],
|
27
|
+
[ '--package', GetoptLong::REQUIRED_ARGUMENT ],
|
28
|
+
[ '--release', GetoptLong::REQUIRED_ARGUMENT ],
|
29
|
+
[ '--visibility', '-v', GetoptLong::REQUIRED_ARGUMENT ],
|
30
|
+
)
|
31
|
+
opts.each do |opt, arg|
|
32
|
+
case opt
|
33
|
+
when '--format'
|
34
|
+
arg == 'json' and
|
35
|
+
self.format = arg
|
36
|
+
when '--project'
|
37
|
+
arg.empty? or
|
38
|
+
@target_proj = arg
|
39
|
+
when '--package'
|
40
|
+
arg.empty? or
|
41
|
+
@target_package = arg
|
42
|
+
when '--release'
|
43
|
+
arg.empty? or
|
44
|
+
@target_release = arg
|
45
|
+
when '--visibility'
|
46
|
+
unless %w(public private hidden).member?(arg)
|
47
|
+
logger.fatal "Invalid visibility status: #{arg}"
|
48
|
+
exit
|
49
|
+
end
|
50
|
+
@visibility = arg
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def list
|
56
|
+
release = api.get_release target_proj, target_package, target_release
|
57
|
+
list = release.files
|
58
|
+
if format == 'json'
|
59
|
+
puts list.map{|i| i.to_hash}.to_json
|
60
|
+
else
|
61
|
+
list.each do |f|
|
62
|
+
puts format_file(f)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def create
|
68
|
+
filename = ARGV.shift
|
69
|
+
if !filename
|
70
|
+
logger.fatal "Target filename is missing."
|
71
|
+
help
|
72
|
+
return
|
73
|
+
end
|
74
|
+
file = Pathname('.') + filename
|
75
|
+
logger.debug "Calculating digest for #{file}..."
|
76
|
+
digests = {
|
77
|
+
sha256: hexdigest(Digest::SHA256, file),
|
78
|
+
sha1: hexdigest(Digest::SHA1, file),
|
79
|
+
md5: hexdigest(Digest::MD5, file),
|
80
|
+
}
|
81
|
+
fio = file.open
|
82
|
+
logger.level <= Logger::INFO and
|
83
|
+
OSDN::CLI._show_progress = true
|
84
|
+
logger.info "Starting upload #{file}..."
|
85
|
+
f = api.create_release_file target_proj, target_package, target_release, fio, visibility: @visibility
|
86
|
+
fio.close
|
87
|
+
OSDN::CLI._show_progress = false
|
88
|
+
if digests.find { |type, dig| dig != f.send("digest_#{type}") }
|
89
|
+
logger.error "File digests are mismatch! Upload file #{file} may be broken! Please check."
|
90
|
+
else
|
91
|
+
logger.info "Upload complete."
|
92
|
+
end
|
93
|
+
puts format_file(f)
|
94
|
+
end
|
95
|
+
|
96
|
+
def update
|
97
|
+
target_id = ARGV.shift
|
98
|
+
if !target_id
|
99
|
+
logger.fatal "Target file ID is missing."
|
100
|
+
help
|
101
|
+
return
|
102
|
+
end
|
103
|
+
if @visibility.nil?
|
104
|
+
logger.fatal "Visibility status is missing. Use '-v <public|private|hidden>'."
|
105
|
+
return
|
106
|
+
end
|
107
|
+
f = api.update_release_file target_proj, target_package, target_release, target_id, visibility: @visibility
|
108
|
+
logger.info "file #{target_id} has been updated."
|
109
|
+
puts format_file(f)
|
110
|
+
end
|
111
|
+
|
112
|
+
def delete
|
113
|
+
target_id = ARGV.shift
|
114
|
+
if !target_id
|
115
|
+
logger.fatal "Target file ID is missing."
|
116
|
+
help
|
117
|
+
return
|
118
|
+
end
|
119
|
+
f = api.delete_release_file target_proj, target_package, target_release, target_id
|
120
|
+
logger.info "file #{target_id} has been deleted."
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end; end; end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'typhoeus/easy_factory'
|
2
|
+
|
3
|
+
module Typhoeus
|
4
|
+
class EasyFactory
|
5
|
+
alias_method :get_orig, :get
|
6
|
+
def get(*args)
|
7
|
+
easy = get_orig(*args)
|
8
|
+
if OSDN::CLI._show_progress
|
9
|
+
Ethon::Curl.set_option(:noprogress, false, easy.handle)
|
10
|
+
else
|
11
|
+
Ethon::Curl.set_option(:noprogress, true, easy.handle)
|
12
|
+
end
|
13
|
+
easy
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/osdn/cli/runner.rb
CHANGED
@@ -7,7 +7,7 @@ module OSDN
|
|
7
7
|
class Runner
|
8
8
|
def initialize
|
9
9
|
@logger = Logger.new(STDERR)
|
10
|
-
@logger.level = Logger::
|
10
|
+
@logger.level = Logger::INFO
|
11
11
|
@logger.formatter = proc { |severity, time, progname, msg|
|
12
12
|
"[%s] %s\n" % [severity, msg]
|
13
13
|
}
|
@@ -88,7 +88,7 @@ module OSDN
|
|
88
88
|
elsif err["error_description"]
|
89
89
|
logger.fatal err["error_description"]
|
90
90
|
else
|
91
|
-
logger.fatal "Command failed: #{e.
|
91
|
+
logger.fatal "Command failed by ApiError: #{e.response_body}"
|
92
92
|
end
|
93
93
|
rescue
|
94
94
|
logger.fatal "Command failed: #{e.inspect}"
|
data/lib/osdn/cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: osdn-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OSDN
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -91,11 +91,14 @@ files:
|
|
91
91
|
- exe/osdn
|
92
92
|
- lib/osdn-cli.rb
|
93
93
|
- lib/osdn/cli.rb
|
94
|
+
- lib/osdn/cli/command/frs_base.rb
|
94
95
|
- lib/osdn/cli/command/frs_mkdirs.rb
|
95
96
|
- lib/osdn/cli/command/frs_upload.rb
|
96
97
|
- lib/osdn/cli/command/login.rb
|
97
98
|
- lib/osdn/cli/command/package.rb
|
98
|
-
- lib/osdn/cli/
|
99
|
+
- lib/osdn/cli/command/release.rb
|
100
|
+
- lib/osdn/cli/command/relfile.rb
|
101
|
+
- lib/osdn/cli/overrides.rb
|
99
102
|
- lib/osdn/cli/runner.rb
|
100
103
|
- lib/osdn/cli/version.rb
|
101
104
|
homepage: https://osdn.jp/projects/osdn-codes/wiki/CommandLineInterface
|