gemfury 0.12.1 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/fury +3 -4
- data/bin/gemfury +3 -1
- data/lib/faraday/adapter/fury_http.rb +14 -21
- data/lib/faraday/request/multipart_with_file.rb +3 -3
- data/lib/gemfury/client/filters.rb +7 -6
- data/lib/gemfury/client/middleware.rb +5 -3
- data/lib/gemfury/client.rb +44 -47
- data/lib/gemfury/command/app.rb +111 -114
- data/lib/gemfury/command/authorization.rb +14 -11
- data/lib/gemfury/command.rb +5 -3
- data/lib/gemfury/configuration.rb +10 -9
- data/lib/gemfury/const.rb +5 -2
- data/lib/gemfury/error.rb +2 -0
- data/lib/gemfury/platform.rb +4 -2
- data/lib/gemfury/tasks/release.rake +9 -8
- data/lib/gemfury/tasks.rb +3 -1
- data/lib/gemfury/version.rb +3 -1
- data/lib/gemfury.rb +11 -12
- data/lib/rubygems/commands/fury_command.rb +4 -2
- data/lib/rubygems_plugin.rb +2 -0
- metadata +57 -37
data/lib/gemfury/command/app.rb
CHANGED
@@ -1,70 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'progressbar'
|
2
4
|
require 'delegate'
|
3
5
|
|
4
6
|
class Gemfury::Command::App < Thor
|
5
7
|
include Gemfury::Command::Authorization
|
6
|
-
UserAgent = "Gemfury CLI #{Gemfury::VERSION}"
|
7
|
-
PackageExtensions = %w
|
8
|
+
UserAgent = "Gemfury CLI #{Gemfury::VERSION}"
|
9
|
+
PackageExtensions = %w[gem egg tar.gz tgz nupkg].freeze
|
8
10
|
|
9
11
|
# Impersonation
|
10
|
-
class_option :as, :
|
11
|
-
class_option :api_token, :
|
12
|
+
class_option :as, desc: 'Access an account other than your own'
|
13
|
+
class_option :api_token, desc: 'API token to use for commands'
|
14
|
+
class_option :no_warnings, hide: true, type: :boolean
|
12
15
|
|
13
16
|
# Make sure we retain the default exit behaviour of 0 even on argument errors
|
14
|
-
def self.exit_on_failure
|
17
|
+
def self.exit_on_failure?
|
18
|
+
false
|
19
|
+
end
|
15
20
|
|
16
|
-
map
|
17
|
-
desc
|
21
|
+
map '-v' => :version
|
22
|
+
desc 'version', 'Show Gemfury version', hide: true
|
18
23
|
def version
|
19
24
|
shell.say Gemfury::VERSION
|
20
25
|
end
|
21
26
|
|
22
27
|
### PACKAGE MANAGEMENT ###
|
23
|
-
option :public, :
|
24
|
-
option :quiet, :
|
25
|
-
desc
|
28
|
+
option :public, type: :boolean, desc: 'Create as public package'
|
29
|
+
option :quiet, type: :boolean, aliases: '-q', desc: 'Do not show progress bar', default: false
|
30
|
+
desc 'push FILE', 'Upload a new version of a package'
|
26
31
|
def push(*gems)
|
27
32
|
with_checks_and_rescues do
|
28
33
|
push_files(:push, gems)
|
29
34
|
end
|
30
35
|
end
|
31
36
|
|
32
|
-
desc
|
37
|
+
desc 'list', 'List your packages'
|
33
38
|
def list
|
34
39
|
with_checks_and_rescues do
|
35
40
|
gems = client.list
|
36
41
|
shell.say "\n*** GEMFURY PACKAGES ***\n\n"
|
37
42
|
|
38
|
-
va = [
|
43
|
+
va = [%w[name kind version privacy]]
|
39
44
|
gems.each do |g|
|
40
|
-
va << [
|
41
|
-
|
42
|
-
|
45
|
+
va << [g['name'], g['language'],
|
46
|
+
g.dig('latest_version', 'version') || 'beta',
|
47
|
+
g['private'] ? 'private' : 'public ']
|
43
48
|
end
|
44
49
|
|
45
50
|
shell.print_table(va)
|
46
51
|
end
|
47
52
|
end
|
48
53
|
|
49
|
-
desc
|
54
|
+
desc 'versions NAME', 'List all the package versions'
|
50
55
|
def versions(gem_name)
|
51
56
|
with_checks_and_rescues do
|
52
57
|
versions = client.versions(gem_name)
|
53
58
|
shell.say "\n*** #{gem_name.capitalize} Versions ***\n\n"
|
54
59
|
|
55
60
|
va = []
|
56
|
-
va = [
|
61
|
+
va = [%w[version uploaded_by uploaded]]
|
57
62
|
versions.each do |v|
|
58
63
|
uploaded = time_ago(Time.parse(v['created_at']).getlocal)
|
59
|
-
va << [
|
64
|
+
va << [v['version'], v['created_by']['name'], uploaded]
|
60
65
|
end
|
61
66
|
|
62
67
|
shell.print_table(va)
|
63
68
|
end
|
64
69
|
end
|
65
70
|
|
66
|
-
desc
|
67
|
-
method_options %w
|
71
|
+
desc 'yank NAME', 'Delete a package version'
|
72
|
+
method_options %w[version -v] => :required
|
68
73
|
def yank(gem_name)
|
69
74
|
with_checks_and_rescues do
|
70
75
|
version = options[:version]
|
@@ -74,40 +79,44 @@ class Gemfury::Command::App < Thor
|
|
74
79
|
end
|
75
80
|
|
76
81
|
### AUTHENTICATION ###
|
77
|
-
desc
|
82
|
+
desc 'logout', 'Remove Gemfury credentials'
|
78
83
|
def logout
|
79
84
|
if !has_credentials?
|
80
|
-
shell.say
|
81
|
-
elsif shell.yes?
|
85
|
+
shell.say 'You are logged out'
|
86
|
+
elsif shell.yes? 'Are you sure you want to log out? [yN]'
|
82
87
|
with_checks_and_rescues { client.logout }
|
83
88
|
wipe_credentials!
|
84
|
-
shell.say
|
89
|
+
shell.say 'You have been logged out'
|
85
90
|
end
|
86
91
|
end
|
87
92
|
|
88
|
-
desc
|
93
|
+
desc 'login', 'Save Gemfury credentials'
|
89
94
|
def login
|
90
95
|
with_checks_and_rescues do
|
91
96
|
me = client.account_info['name']
|
92
|
-
shell.say %
|
97
|
+
shell.say %(You are logged in as "#{me}"), :green
|
93
98
|
end
|
94
99
|
end
|
95
100
|
|
96
|
-
desc
|
101
|
+
desc 'whoami', 'Show current user'
|
97
102
|
def whoami
|
98
|
-
has_credentials?
|
99
|
-
|
103
|
+
if has_credentials?
|
104
|
+
login
|
105
|
+
else
|
106
|
+
|
107
|
+
shell.say 'You are not logged in', :green
|
108
|
+
|
100
109
|
end
|
101
110
|
end
|
102
111
|
|
103
|
-
desc
|
112
|
+
desc 'accounts', 'Show info about your Gemfury accounts'
|
104
113
|
def accounts
|
105
114
|
with_checks_and_rescues do
|
106
115
|
accounts = client.accounts
|
107
116
|
|
108
|
-
va = [
|
117
|
+
va = [%w[name kind permission]]
|
109
118
|
accounts.each do |a|
|
110
|
-
va << [
|
119
|
+
va << [a['name'], a['type'], a['viewer_permission'].downcase]
|
111
120
|
end
|
112
121
|
|
113
122
|
shell.print_table(va)
|
@@ -115,10 +124,10 @@ class Gemfury::Command::App < Thor
|
|
115
124
|
end
|
116
125
|
|
117
126
|
### COLLABORATION MANAGEMENT ###
|
118
|
-
map
|
119
|
-
map
|
127
|
+
map 'sharing:add' => 'sharing_add'
|
128
|
+
map 'sharing:remove' => 'sharing_remove'
|
120
129
|
|
121
|
-
desc
|
130
|
+
desc 'sharing', 'List collaborators'
|
122
131
|
def sharing
|
123
132
|
with_checks_and_rescues do
|
124
133
|
account_info = client.account_info
|
@@ -126,24 +135,22 @@ class Gemfury::Command::App < Thor
|
|
126
135
|
|
127
136
|
collaborators = client.list_collaborators
|
128
137
|
if collaborators.empty?
|
129
|
-
shell.say %
|
138
|
+
shell.say %(You (#{me}) are the only collaborator\n), :green
|
130
139
|
else
|
131
|
-
shell.say %
|
140
|
+
shell.say %(\n*** Collaborators for "#{me}" ***\n), :green
|
132
141
|
|
133
|
-
va = [
|
142
|
+
va = [%w[username permission]]
|
134
143
|
|
135
|
-
if account_info['type'] == 'user'
|
136
|
-
va << [ me, 'owner' ]
|
137
|
-
end
|
144
|
+
va << [me, 'owner'] if account_info['type'] == 'user'
|
138
145
|
|
139
|
-
collaborators.each { |c| va << [
|
146
|
+
collaborators.each { |c| va << [c['username'], c['permission']] }
|
140
147
|
|
141
148
|
shell.print_table(va)
|
142
149
|
end
|
143
150
|
end
|
144
151
|
end
|
145
152
|
|
146
|
-
desc
|
153
|
+
desc 'sharing:add EMAIL', 'Add a collaborator'
|
147
154
|
def sharing_add(username)
|
148
155
|
with_checks_and_rescues do
|
149
156
|
client.add_collaborator(username)
|
@@ -151,7 +158,7 @@ class Gemfury::Command::App < Thor
|
|
151
158
|
end
|
152
159
|
end
|
153
160
|
|
154
|
-
desc
|
161
|
+
desc 'sharing:remove EMAIL', 'Remove a collaborator'
|
155
162
|
def sharing_remove(username)
|
156
163
|
with_checks_and_rescues do
|
157
164
|
client.remove_collaborator(username)
|
@@ -160,7 +167,7 @@ class Gemfury::Command::App < Thor
|
|
160
167
|
end
|
161
168
|
|
162
169
|
### MIGRATION (Pushing directories) ###
|
163
|
-
desc
|
170
|
+
desc 'migrate DIR', 'Upload all packages within a directory'
|
164
171
|
def migrate(*paths)
|
165
172
|
with_checks_and_rescues do
|
166
173
|
gem_paths = Dir.glob(paths.map do |p|
|
@@ -168,30 +175,26 @@ class Gemfury::Command::App < Thor
|
|
168
175
|
PackageExtensions.map { |ext| "#{p}/**/*.#{ext}" }
|
169
176
|
elsif File.file?(p)
|
170
177
|
p
|
171
|
-
else
|
172
|
-
nil
|
173
178
|
end
|
174
179
|
end.flatten.compact)
|
175
180
|
|
176
181
|
if gem_paths.empty?
|
177
|
-
die!(
|
182
|
+
die!('Problem: No valid packages found', nil, :migrate)
|
178
183
|
else
|
179
|
-
shell.say
|
184
|
+
shell.say 'Found the following packages:'
|
180
185
|
gem_paths.each { |p| shell.say " #{File.basename(p)}" }
|
181
|
-
if shell.yes?
|
182
|
-
push_files(:migrate, gem_paths)
|
183
|
-
end
|
186
|
+
push_files(:migrate, gem_paths) if shell.yes? 'Upload these files to Gemfury? [yN]', :green
|
184
187
|
end
|
185
188
|
end
|
186
189
|
end
|
187
190
|
|
188
191
|
### GIT REPOSITORY MANAGEMENT ###
|
189
|
-
map
|
190
|
-
map
|
191
|
-
map
|
192
|
-
map
|
192
|
+
map 'git:list' => 'git_list'
|
193
|
+
map 'git:reset' => 'git_reset'
|
194
|
+
map 'git:rename' => 'git_rename'
|
195
|
+
map 'git:rebuild' => 'git_rebuild'
|
193
196
|
|
194
|
-
desc
|
197
|
+
desc 'git:list', 'List Git repositories'
|
195
198
|
def git_list
|
196
199
|
with_checks_and_rescues do
|
197
200
|
repos = client.git_repos['repos']
|
@@ -201,15 +204,15 @@ class Gemfury::Command::App < Thor
|
|
201
204
|
end
|
202
205
|
end
|
203
206
|
|
204
|
-
desc
|
207
|
+
desc 'git:rename REPO_NAME NEW_NAME', 'Rename a Git repository'
|
205
208
|
def git_rename(repo, new_name)
|
206
209
|
with_checks_and_rescues do
|
207
|
-
client.git_update(repo, :
|
210
|
+
client.git_update(repo, repo: { name: new_name })
|
208
211
|
shell.say "Renamed #{repo} repository to #{new_name}\n"
|
209
212
|
end
|
210
213
|
end
|
211
214
|
|
212
|
-
desc
|
215
|
+
desc 'git:reset REPO_NAME', 'Remove a Git repository'
|
213
216
|
def git_reset(repo)
|
214
217
|
with_checks_and_rescues do
|
215
218
|
client.git_reset(repo)
|
@@ -217,13 +220,13 @@ class Gemfury::Command::App < Thor
|
|
217
220
|
end
|
218
221
|
end
|
219
222
|
|
220
|
-
desc
|
221
|
-
method_options %w
|
223
|
+
desc 'git:rebuild REPO_NAME', 'Rebuild a Git repository'
|
224
|
+
method_options %w[revision -r] => :string
|
222
225
|
def git_rebuild(repo)
|
223
226
|
with_checks_and_rescues do
|
224
|
-
params = { :
|
227
|
+
params = { revision: options[:revision] }
|
225
228
|
shell.say "\n*** Rebuilding #{repo} repository ***\n\n"
|
226
|
-
shell.say client.git_rebuild(repo, :
|
229
|
+
shell.say client.git_rebuild(repo, build: params)
|
227
230
|
end
|
228
231
|
end
|
229
232
|
|
@@ -232,89 +235,85 @@ class Gemfury::Command::App < Thor
|
|
232
235
|
map 'git:config:set' => 'git_config_set'
|
233
236
|
map 'git:config:unset' => 'git_config_unset'
|
234
237
|
|
235
|
-
desc
|
238
|
+
desc 'git:config REPO_NAME', "List Git repository's build environment"
|
236
239
|
def git_config(repo)
|
237
240
|
with_checks_and_rescues do
|
238
241
|
vars = client.git_config(repo)['config_vars']
|
239
242
|
shell.say "*** #{repo} build config ***\n"
|
240
|
-
shell.print_table(vars.map
|
243
|
+
shell.print_table(vars.map do |kv|
|
241
244
|
["#{kv[0]}:", kv[1]]
|
242
|
-
|
245
|
+
end)
|
243
246
|
end
|
244
247
|
end
|
245
248
|
|
246
|
-
desc
|
249
|
+
desc 'git:config:set REPO_NAME KEY=VALUE ...', "Update Git repository's build environment"
|
247
250
|
def git_config_set(repo, *vars)
|
248
251
|
with_checks_and_rescues do
|
249
|
-
updates =
|
252
|
+
updates = vars.to_h { |v| v.split('=', 2) }
|
250
253
|
client.git_config_update(repo, updates)
|
251
254
|
shell.say "Updated #{repo} build config"
|
252
255
|
end
|
253
256
|
end
|
254
257
|
|
255
|
-
desc
|
258
|
+
desc 'git:config:unset REPO_NAME KEY ...', "Remove variables from Git repository's build environment"
|
256
259
|
def git_config_unset(repo, *vars)
|
257
260
|
with_checks_and_rescues do
|
258
|
-
updates =
|
261
|
+
updates = vars.to_h { |v| [v, nil] }
|
259
262
|
client.git_config_update(repo, updates)
|
260
263
|
shell.say "Updated #{repo} build config"
|
261
264
|
end
|
262
265
|
end
|
263
266
|
|
264
|
-
private
|
267
|
+
private
|
268
|
+
|
265
269
|
def client
|
266
270
|
opts = {}
|
267
271
|
opts[:user_api_key] = @user_api_key if @user_api_key
|
268
272
|
opts[:account] = options[:as] if options[:as]
|
269
273
|
client = Gemfury::Client.new(opts)
|
270
274
|
client.user_agent = UserAgent
|
271
|
-
|
275
|
+
client
|
272
276
|
end
|
273
277
|
|
274
278
|
def with_checks_and_rescues(&block)
|
275
279
|
@user_api_key = options[:api_token] if options[:api_token]
|
276
280
|
|
277
281
|
msg = '[DEPRECATED] This CLI is no longer supported. Please upgrade to the new CLI: https://gemfury.com/guide/cli'
|
278
|
-
shell.say(msg, :yellow) if !options[:quiet] && !current_command_chain.include?(:logout)
|
282
|
+
shell.say(msg, :yellow) if !options[:quiet] && !options[:no_warnings] && !current_command_chain.include?(:logout)
|
279
283
|
|
280
284
|
with_authorization(&block)
|
281
|
-
|
282
285
|
rescue Gemfury::InvalidGemVersion => e
|
283
|
-
shell.say
|
284
|
-
if shell.yes?
|
285
|
-
exec(
|
286
|
+
shell.say 'You have a deprecated Gemfury client', :red
|
287
|
+
if shell.yes? 'Would you like to update it now? [yN]'
|
288
|
+
exec('gem update gemfury')
|
286
289
|
else
|
287
|
-
shell.say
|
290
|
+
shell.say 'No problem. You can also run "gem update gemfury"'
|
288
291
|
end
|
289
292
|
rescue Gemfury::Conflict => e
|
290
|
-
die!(
|
293
|
+
die!('Oops! Locked for another user. Try again later.', e)
|
291
294
|
rescue Gemfury::Forbidden => e
|
292
295
|
die!("Oops! You're not allowed to access this", e)
|
293
296
|
rescue Gemfury::NotFound => e
|
294
297
|
die!("Oops! Doesn't look like this exists", e)
|
295
298
|
rescue Gemfury::Error => e
|
296
|
-
die!(
|
299
|
+
die!('Oops! %s' % e.message, e)
|
297
300
|
rescue StandardError => e
|
298
|
-
die!(
|
301
|
+
die!('Oops! Something went wrong. Please contact support.', e)
|
299
302
|
end
|
300
303
|
|
301
304
|
def push_files(command, gem_paths)
|
302
305
|
files = gem_paths.map do |g|
|
303
|
-
g.is_a?(String) ? File.new(g) : g
|
306
|
+
g.is_a?(String) ? File.new(g) : g
|
307
|
+
rescue StandardError
|
308
|
+
nil
|
304
309
|
end.compact
|
305
310
|
|
306
|
-
if !options[:quiet] && !shell.mute? && $stdout.tty?
|
307
|
-
files = files.map { |g| ProgressIO.new(g) }
|
308
|
-
end
|
311
|
+
files = files.map { |g| ProgressIO.new(g) } if !options[:quiet] && !shell.mute? && $stdout.tty?
|
309
312
|
|
310
|
-
if files.empty?
|
311
|
-
die!("Problem: No valid packages found", nil, command)
|
312
|
-
end
|
313
|
+
die!('Problem: No valid packages found', nil, command) if files.empty?
|
313
314
|
|
314
|
-
push_options = {
|
315
|
-
unless options[:public].nil?
|
316
|
-
push_options[:public] = options[:public]
|
317
|
-
end
|
315
|
+
push_options = {}
|
316
|
+
push_options[:public] = options[:public] unless options[:public].nil?
|
318
317
|
|
319
318
|
error_ex = nil
|
320
319
|
|
@@ -335,32 +334,32 @@ private
|
|
335
334
|
client.push_gem(file, push_options)
|
336
335
|
end
|
337
336
|
|
338
|
-
shell.say
|
337
|
+
shell.say '- done'
|
339
338
|
rescue Gemfury::CorruptGemFile => e
|
340
|
-
shell.say
|
339
|
+
shell.say '- problem processing this package', :red
|
341
340
|
error_ex = e
|
342
341
|
rescue Gemfury::DupeVersion => e
|
343
|
-
shell.say
|
342
|
+
shell.say '- this version already exists', :red
|
344
343
|
error_ex = e
|
345
344
|
rescue Gemfury::TimeoutError, Errno::EPIPE => e
|
346
|
-
shell.say
|
347
|
-
shell.say
|
345
|
+
shell.say '- this file is too much to handle', :red
|
346
|
+
shell.say ' Visit http://www.gemfury.com/large-package for more info'
|
348
347
|
error_ex = e
|
349
348
|
rescue Gemfury::Error => e
|
350
349
|
shell.say "- #{e.message.downcase}", :red
|
351
350
|
error_ex = e
|
352
|
-
rescue => e
|
353
|
-
shell.say
|
351
|
+
rescue StandardError => e
|
352
|
+
shell.say '- oops', :red
|
354
353
|
error_ex = e
|
355
354
|
end
|
356
355
|
end
|
357
356
|
|
358
|
-
|
359
|
-
|
360
|
-
|
357
|
+
return if error_ex.nil?
|
358
|
+
|
359
|
+
die!('There was a problem uploading at least 1 package', error_ex)
|
361
360
|
end
|
362
361
|
|
363
|
-
C50K =
|
362
|
+
C50K = 50_000
|
364
363
|
|
365
364
|
class ProgressIO < SimpleDelegator
|
366
365
|
attr_reader :content_type, :original_filename, :local_path
|
@@ -382,15 +381,15 @@ private
|
|
382
381
|
@original_filename = File.basename(fname)
|
383
382
|
@local_path = local_path
|
384
383
|
|
385
|
-
if io.respond_to? :size
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
384
|
+
filesize = if io.respond_to? :size
|
385
|
+
io.size
|
386
|
+
else
|
387
|
+
io.stat.size
|
388
|
+
end
|
390
389
|
|
391
390
|
if filesize > C50K
|
392
391
|
title = 'Uploading %s ' % File.basename(fname)
|
393
|
-
@bar = ProgressBar.create(:
|
392
|
+
@bar = ProgressBar.create(title: title, total: filesize)
|
394
393
|
else
|
395
394
|
@bar = nil
|
396
395
|
end
|
@@ -404,9 +403,7 @@ private
|
|
404
403
|
|
405
404
|
def read(length)
|
406
405
|
buf = __getobj__.read(length)
|
407
|
-
unless @bar.nil? || buf.nil?
|
408
|
-
@bar.progress += buf.bytesize
|
409
|
-
end
|
406
|
+
@bar.progress += buf.bytesize unless @bar.nil? || buf.nil?
|
410
407
|
|
411
408
|
buf
|
412
409
|
end
|
@@ -415,7 +412,7 @@ private
|
|
415
412
|
def die!(msg, err = nil, command = nil)
|
416
413
|
shell.say msg, :red
|
417
414
|
help(command) if command
|
418
|
-
shell.say %
|
415
|
+
shell.say %(#{err.class.name}: #{err}\n#{err.backtrace.join("\n")}) if err && ENV['DEBUG']
|
419
416
|
exit(1)
|
420
417
|
end
|
421
418
|
|
@@ -1,18 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Gemfury::Command::Authorization
|
2
4
|
include Gemfury::Platform
|
3
5
|
|
4
6
|
def wipe_credentials!
|
5
|
-
FileUtils.rm(config_path, :
|
7
|
+
FileUtils.rm(config_path, force: true) # never raises exception
|
6
8
|
each_netrc_host { |h| netrc_conf.delete(h) }
|
7
9
|
netrc_conf.save
|
8
10
|
end
|
9
11
|
|
10
12
|
def has_credentials?
|
11
13
|
!!netrc_conf[netrc_api_host] ||
|
12
|
-
|
14
|
+
read_config_file.key?(:gemfury_api_key)
|
13
15
|
end
|
14
16
|
|
15
|
-
private
|
17
|
+
private
|
18
|
+
|
16
19
|
def with_authorization(&block)
|
17
20
|
# Load up the credentials if user_api_key is not already set
|
18
21
|
load_credentials! if @user_api_key.nil?
|
@@ -24,9 +27,9 @@ private
|
|
24
27
|
block.call
|
25
28
|
rescue Gemfury::Unauthorized
|
26
29
|
if acct = client.account
|
27
|
-
shell.say %
|
30
|
+
shell.say %(Oops! You don't have access to "#{acct}"), :red
|
28
31
|
else
|
29
|
-
shell.say
|
32
|
+
shell.say 'Oops! Authentication failure.', :red
|
30
33
|
@user_api_key = nil
|
31
34
|
retry
|
32
35
|
end
|
@@ -41,10 +44,10 @@ private
|
|
41
44
|
passw = highline.ask('Password: ') { |q| q.echo = false }
|
42
45
|
|
43
46
|
# Request and save the API access token
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
47
|
+
return unless !email.empty? && !passw.empty?
|
48
|
+
|
49
|
+
@user_api_key = client.get_access_token(email, passw)
|
50
|
+
write_credentials!(email)
|
48
51
|
end
|
49
52
|
|
50
53
|
def load_credentials!
|
@@ -72,8 +75,8 @@ private
|
|
72
75
|
end
|
73
76
|
|
74
77
|
def each_netrc_host
|
75
|
-
[
|
78
|
+
%i[endpoint gitpoint].each do |c|
|
76
79
|
yield(URI.parse(client.send(c)).host)
|
77
80
|
end
|
78
81
|
end
|
79
|
-
end
|
82
|
+
end
|
data/lib/gemfury/command.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
gem
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
gem 'highline', '>= 1.6.0', '< 2.2.0.pre'
|
4
|
+
gem 'progressbar', '>= 1.10.1', '< 2.0.0.pre'
|
5
|
+
gem 'thor', '>= 0.14.0', '< 1.3.0.pre'
|
4
6
|
|
5
7
|
require 'thor'
|
6
8
|
require 'yaml'
|
@@ -1,15 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Gemfury
|
2
4
|
module Configuration
|
3
|
-
|
4
5
|
CONFIGURATION_DEFAULTS = {
|
5
|
-
:
|
6
|
-
:
|
7
|
-
:
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:
|
6
|
+
user_api_key: nil,
|
7
|
+
adapter: :net_http,
|
8
|
+
endpoint: 'https://api.fury.io/',
|
9
|
+
gitpoint: 'https://git.fury.io/',
|
10
|
+
pushpoint: 'https://push.fury.io/',
|
11
|
+
user_agent: "Gemfury RubyGem #{Gemfury::VERSION} (Ruby #{RUBY_VERSION})",
|
12
|
+
api_version: 1,
|
13
|
+
account: nil
|
13
14
|
}.freeze
|
14
15
|
|
15
16
|
# user API key, also known as "full access token"
|
data/lib/gemfury/const.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Gemfury
|
2
4
|
module Const
|
3
5
|
class << self
|
4
6
|
def host
|
5
7
|
'www.gemfury.com'
|
6
|
-
#'localhost:3000'
|
8
|
+
# 'localhost:3000'
|
7
9
|
end
|
8
10
|
|
9
11
|
def welcome
|
@@ -11,11 +13,12 @@ module Gemfury
|
|
11
13
|
end
|
12
14
|
|
13
15
|
def email_error
|
14
|
-
|
16
|
+
'Invalid email address. Please try again.'
|
15
17
|
end
|
16
18
|
|
17
19
|
def email_regex
|
18
20
|
return @email_regex if @email_regex
|
21
|
+
|
19
22
|
email_name_regex = '[A-Z0-9_\.%\+\-\']+'
|
20
23
|
domain_head_regex = '(?:[A-Z0-9\-]+\.)+'
|
21
24
|
domain_tld_regex = '(?:[A-Z]{2,4}|museum|travel)'
|
data/lib/gemfury/error.rb
CHANGED
data/lib/gemfury/platform.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Gemfury
|
2
4
|
module Platform
|
3
5
|
def home_directory
|
4
|
-
on_windows? ? ENV
|
6
|
+
on_windows? ? ENV.fetch('USERPROFILE', nil) : Dir.home
|
5
7
|
end
|
6
8
|
|
7
9
|
def config_path
|
@@ -16,4 +18,4 @@ module Gemfury
|
|
16
18
|
RUBY_PLATFORM =~ /-darwin\d/
|
17
19
|
end
|
18
20
|
end
|
19
|
-
end
|
21
|
+
end
|