osdn-cli 0.0.1 → 0.0.2
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/command/frs_mkdirs.rb +20 -4
- data/lib/osdn/cli/command/frs_upload.rb +39 -10
- data/lib/osdn/cli/command/login.rb +1 -1
- data/lib/osdn/cli/runner.rb +6 -0
- data/lib/osdn/cli/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4aa4a8b62253ab0ed65d450c8d525306d2e2d99a
|
4
|
+
data.tar.gz: 6d7f94ca2a2b67534dab98e754d84e36d187f41e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f027851b7fe92c2bc9a18a84c573acb661f3726daec977245650d50f7d768670acb8f8d00a25dd531a949498c60109625cc5ccf2d402c6fa528958fb6fc924e1
|
7
|
+
data.tar.gz: a12bb95e117c22e5cb61c5d884cdea10c3a881f0b3ccd15a6e1fa958d1398285d04a7276050b7f74ed04455d9a4ad09ccbb1144be72c48398e057b607c27f9ab
|
@@ -36,13 +36,21 @@ module OSDN; module CLI; module Command
|
|
36
36
|
logger.debug "Making each package directry"
|
37
37
|
|
38
38
|
packages.each do |package|
|
39
|
-
|
40
|
-
|
39
|
+
pname = fsname(package.name)
|
40
|
+
if pname != package.name
|
41
|
+
logger.warn "Package name '#{package.name}' is not suitable for filesystem, using '#{pname}'."
|
42
|
+
end
|
43
|
+
logger.info "Making directory for package #{pname}"
|
44
|
+
pdir = target_dir + pname
|
41
45
|
FileUtils.mkdir_p(pdir)
|
42
46
|
update_variables pdir, package_id: package.id
|
43
47
|
package.releases.each do |release|
|
44
|
-
|
45
|
-
|
48
|
+
rname = fsname(release.name)
|
49
|
+
if rname != release.name
|
50
|
+
logger.warn "Release name '#{release.name}' is not suitable for filesystem, using '#{rname}'."
|
51
|
+
end
|
52
|
+
logger.info "Making directory for release #{rname}"
|
53
|
+
rdir = pdir + rname
|
46
54
|
FileUtils.mkdir_p(rdir)
|
47
55
|
update_variables rdir, release_id: release.id
|
48
56
|
end
|
@@ -66,5 +74,13 @@ module OSDN; module CLI; module Command
|
|
66
74
|
def api
|
67
75
|
OSDNClient::ProjectApi.new
|
68
76
|
end
|
77
|
+
|
78
|
+
def fsname(name)
|
79
|
+
name = name.to_s.tr('/', '-')
|
80
|
+
if name.empty?
|
81
|
+
name = '(no-name)'
|
82
|
+
end
|
83
|
+
name
|
84
|
+
end
|
69
85
|
end
|
70
86
|
end; end; end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'digest'
|
2
|
+
|
1
3
|
module OSDN; module CLI; module Command
|
2
4
|
class FrsUpload < Base
|
3
5
|
def help
|
@@ -47,8 +49,12 @@ module OSDN; module CLI; module Command
|
|
47
49
|
Pathname.glob(@target_dir+'*').each do |pdir|
|
48
50
|
unless load_variables(pdir).package_id
|
49
51
|
logger.info "Createing new package '#{pdir.basename}'"
|
50
|
-
|
51
|
-
|
52
|
+
if @dry_run
|
53
|
+
pinfo = Hashie::Mash.new id: '(dry-run)', name: pdir.basename, url: '(dry-run)'
|
54
|
+
else
|
55
|
+
pinfo = api.create_package target_proj, pdir.basename, visibility: @visibility
|
56
|
+
update_variables pdir, package_id: pinfo.id
|
57
|
+
end
|
52
58
|
$stdout.puts "New package '#{pinfo.name}' has been created; #{pinfo.url}"
|
53
59
|
end
|
54
60
|
|
@@ -59,13 +65,12 @@ module OSDN; module CLI; module Command
|
|
59
65
|
rinfo = api.get_release target_proj, target_package(rdir), target_release(rdir)
|
60
66
|
else vars.release_id
|
61
67
|
logger.info "Createing new release '#{rdir.basename}'"
|
62
|
-
|
63
|
-
|
64
|
-
rinfo = api.create_reelase target_proj, target_package(rdir), rdir.basename, visibility: @visibility
|
68
|
+
if @dry_run
|
69
|
+
rinfo = Hashie::Mash.new id: '(dry-run)', name: rdir.basename, url: '(dry-run)', files: []
|
65
70
|
else
|
66
71
|
rinfo = api.create_release target_proj, target_package(rdir), rdir.basename, visibility: @visibility
|
72
|
+
update_variables rdir, release_id: rinfo.id
|
67
73
|
end
|
68
|
-
update_variables rdir, release_id: rinfo.id
|
69
74
|
$stdout.puts "New release '#{rinfo.name}' has been created; #{rinfo.url}"
|
70
75
|
end
|
71
76
|
|
@@ -75,13 +80,27 @@ module OSDN; module CLI; module Command
|
|
75
80
|
next
|
76
81
|
end
|
77
82
|
|
78
|
-
|
83
|
+
digests = {
|
84
|
+
sha256: hexdigest(Digest::SHA256, file),
|
85
|
+
sha1: hexdigest(Digest::SHA1, file),
|
86
|
+
md5: hexdigest(Digest::MD5, file),
|
87
|
+
}
|
88
|
+
if remote_f = rinfo.files.find { |f| f.name == file.basename.to_s }
|
89
|
+
if digests.find { |type, dig| dig != remote_f.send("digest_#{type}") }
|
90
|
+
logger.error "#{file} was changed from remote file! Please delete remote file before uploading new one."
|
91
|
+
end
|
79
92
|
logger.warn "Skip already uploaded file '#{file}'"
|
80
93
|
else
|
81
94
|
logger.info "Uploading file #{file} (#{file.size} bytes)"
|
82
|
-
|
83
|
-
|
84
|
-
|
95
|
+
if @dry_run
|
96
|
+
finfo = Hashie::Mash.new id: '(dry-run)', url: '(dry-run)'
|
97
|
+
else
|
98
|
+
# TODO: show progress bar!
|
99
|
+
fio = file.open
|
100
|
+
finfo = api.create_release_file target_proj, target_package(rdir), target_release(rdir), fio, visibility: @visibility
|
101
|
+
fio.close
|
102
|
+
logger.info "Upload completed."
|
103
|
+
end
|
85
104
|
$stdout.puts "New file '#{file}' has been uploaded; #{finfo.url}"
|
86
105
|
end
|
87
106
|
end
|
@@ -124,5 +143,15 @@ module OSDN; module CLI; module Command
|
|
124
143
|
def api
|
125
144
|
OSDNClient::ProjectApi.new
|
126
145
|
end
|
146
|
+
|
147
|
+
def hexdigest(klass, file)
|
148
|
+
fio = file.open
|
149
|
+
dig = klass.new
|
150
|
+
while buf = fio.read(1024*1024) and buf.length > 0
|
151
|
+
dig << buf
|
152
|
+
end
|
153
|
+
fio.close
|
154
|
+
dig.hexdigest
|
155
|
+
end
|
127
156
|
end
|
128
157
|
end; end; end
|
@@ -4,7 +4,7 @@ module OSDN; module CLI; module Command
|
|
4
4
|
logger.debug "Trying login"
|
5
5
|
scope = %w(profile group group_write)
|
6
6
|
|
7
|
-
auth_url = "https
|
7
|
+
auth_url = "https://#{OSDNClient.configure.host}/account/oauth2ui/authorize?client_id=#{CLI.client_id}&state=cli#{Time.now.to_i}&response_type=code&scope=#{scope.join('%20')}"
|
8
8
|
|
9
9
|
launch_brwoser auth_url
|
10
10
|
puts
|
data/lib/osdn/cli/runner.rb
CHANGED
@@ -11,6 +11,12 @@ module OSDN
|
|
11
11
|
@logger.formatter = proc { |severity, time, progname, msg|
|
12
12
|
"[%s] %s\n" % [severity, msg]
|
13
13
|
}
|
14
|
+
OSDNClient.configure do |config|
|
15
|
+
ENV['OSDN_API_OVERRIDE_HOST'] and
|
16
|
+
config.host = ENV['OSDN_API_OVERRIDE_HOST']
|
17
|
+
ENV['OSDN_API_SKIP_SSL_VERIFY'].to_s =~ /^(1|t(rue)?|y(es)?)$/ and
|
18
|
+
config.verify_ssl = false
|
19
|
+
end
|
14
20
|
end
|
15
21
|
attr_reader :logger
|
16
22
|
|
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.2
|
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-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -56,16 +56,16 @@ dependencies:
|
|
56
56
|
name: osdn-client
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.0.
|
61
|
+
version: 0.0.20160304
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.0.
|
68
|
+
version: 0.0.20160304
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: hashie
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|