osdn-cli 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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