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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3376886c75658394fda1f814ebdfe379058ae405
4
- data.tar.gz: d7c42b6e4e49cf484bdf5f26e6d9a937e89dcda6
3
+ metadata.gz: 4aa4a8b62253ab0ed65d450c8d525306d2e2d99a
4
+ data.tar.gz: 6d7f94ca2a2b67534dab98e754d84e36d187f41e
5
5
  SHA512:
6
- metadata.gz: 294713c7170970f465d9cfffda467b81eee659666ad1dcecc418e139e61800e626cbdaa724e5e918c20a128fb0025ab85987470c71b06749701f497f35c7d630
7
- data.tar.gz: 5ce41536e44564b935bb6a87dbb38d3558836fa2b915c935f98a78807fc5bc548a60f4499898948e89c84dc2457cfa9319e8c91dceb1923e8e6dd97c66a2bdf0
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
- logger.info "Making directory for package #{package.name}"
40
- pdir = target_dir + package.name
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
- logger.info "Making directory for release #{release.name}"
45
- rdir = pdir + release.name
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
- pinfo = api.create_package target_proj, pdir.basename, visibility: @visibility
51
- update_variables pdir, package_id: pinfo.id
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
- rinfo = nil
63
- if api.respond_to? :create_reelase # TODO: remove, just typo...
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
- if rinfo.files.find { |f| f.name == file.basename.to_s }
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
- # TODO: show progress bar!
83
- finfo = api.create_release_file target_proj, target_package(rdir), target_release(rdir), file.open, visibility: @visibility
84
- logger.info "Upload completed."
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://osdn.jp/account/oauth2ui/authorize?client_id=#{CLI.client_id}&state=cli#{Time.now.to_i}&response_type=code&scope=#{scope.join('%20')}"
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
@@ -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
 
@@ -1,5 +1,5 @@
1
1
  module OSDN
2
2
  module CLI
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
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.1
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 00:00:00.000000000 Z
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.1
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.1
68
+ version: 0.0.20160304
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: hashie
71
71
  requirement: !ruby/object:Gem::Requirement