gemstash 2.3.1 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -32
  3. data/lib/gemstash/authorization.rb +5 -2
  4. data/lib/gemstash/cli/authorize.rb +42 -1
  5. data/lib/gemstash/cli.rb +4 -0
  6. data/lib/gemstash/db/authorization.rb +3 -3
  7. data/lib/gemstash/logging.rb +1 -0
  8. data/lib/gemstash/man/gemstash-authorize.1 +21 -33
  9. data/lib/gemstash/man/gemstash-authorize.1.txt +23 -15
  10. data/lib/gemstash/man/gemstash-configuration.5 +63 -118
  11. data/lib/gemstash/man/gemstash-configuration.5.txt +54 -54
  12. data/lib/gemstash/man/gemstash-customize.7 +60 -103
  13. data/lib/gemstash/man/gemstash-customize.7.txt +35 -35
  14. data/lib/gemstash/man/gemstash-debugging.7 +8 -27
  15. data/lib/gemstash/man/gemstash-debugging.7.txt +6 -6
  16. data/lib/gemstash/man/gemstash-deploy.7 +15 -39
  17. data/lib/gemstash/man/gemstash-deploy.7.txt +16 -16
  18. data/lib/gemstash/man/gemstash-mirror.7 +10 -31
  19. data/lib/gemstash/man/gemstash-mirror.7.txt +3 -3
  20. data/lib/gemstash/man/gemstash-multiple-sources.7 +17 -44
  21. data/lib/gemstash/man/gemstash-multiple-sources.7.txt +8 -8
  22. data/lib/gemstash/man/gemstash-private-gems.7 +51 -102
  23. data/lib/gemstash/man/gemstash-private-gems.7.txt +21 -21
  24. data/lib/gemstash/man/gemstash-readme.7 +29 -75
  25. data/lib/gemstash/man/gemstash-readme.7.txt +10 -10
  26. data/lib/gemstash/man/gemstash-setup.1 +13 -33
  27. data/lib/gemstash/man/gemstash-setup.1.txt +11 -11
  28. data/lib/gemstash/man/gemstash-start.1 +7 -25
  29. data/lib/gemstash/man/gemstash-start.1.txt +6 -6
  30. data/lib/gemstash/man/gemstash-status.1 +5 -23
  31. data/lib/gemstash/man/gemstash-status.1.txt +4 -4
  32. data/lib/gemstash/man/gemstash-stop.1 +5 -23
  33. data/lib/gemstash/man/gemstash-stop.1.txt +4 -4
  34. data/lib/gemstash/man/gemstash-version.1 +4 -24
  35. data/lib/gemstash/man/gemstash-version.1.txt +1 -1
  36. data/lib/gemstash/migrations/05_authorization_names.rb +10 -0
  37. data/lib/gemstash/version.rb +1 -1
  38. metadata +18 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ded88593201a40af1fbfea58bd268afd477322c88be7c1d3b07b624613f63579
4
- data.tar.gz: d3fc2c9c32f23fffc0cee2164605bc971a6026c739e06f0b702be56bbeb9a086
3
+ metadata.gz: d58f7aa439647ca176542a5baa37d06ecc97a932d01c865dfc6c84ced8339eec
4
+ data.tar.gz: 5c2509224be5415b8beb839973c529d58cb76986bb93a4231069122974b85179
5
5
  SHA512:
6
- metadata.gz: ccb0df14c3787883c4dccbf4fa16a2e9e0f50237e26ebd3404fcab98d3137495ca04464d940b86cd8867b3941944c3632c2e3c4022fd3f3785a3f52a27dfa4a6
7
- data.tar.gz: 27e2631f644d5461169886700a724d3746be0f598ab7c44bb60fd56869bf395bd17bbaad147d02261568fd4b9e87a34c549059a83d39ad08dc84ed1c740b9bf2
6
+ metadata.gz: becd0a79decd3a755c9867935e942854b614b2bbfa03a1928a770aed8faa9b4fcbd1d4f672c60cd01d45d9ebd20d591f2d4e30da0076bbe6d966cbea76b123eb
7
+ data.tar.gz: f775af62ccd3e2c5efada9cd41208fcbf060bfe2ab23a16fe79f70947d171a403d43aa2e4f96a48c78b73e5045f5aeda07af1e0d3fa80a210ffefd015cbc6ace
data/CHANGELOG.md CHANGED
@@ -1,49 +1,56 @@
1
- ## 2.3.1 (2023-09-05)
1
+ ## 2.4.0 (2023-09-27)
2
+
3
+ ### Changes
2
4
 
3
- https://github.com/rubygems/gemstash/compare/v2.3.0...v2.3.1
5
+ - Support naming and listing authorizations ([#365](https://github.com/rubygems/gemstash/pull/365), [@kyrofa](https://github.com/kyrofa))
6
+
7
+ ## 2.3.2 (2023-09-14)
4
8
 
5
9
  ### Fixes
6
10
 
7
- - Reinstate Ruby Central in README. ([#353](https://github.com/rubygems/gemstash/pull/353), [@olleolleolle][])
8
- - Implement Puma 5-required logger method `#sync` ([#355](https://github.com/rubygems/gemstash/pull/355), [@ball-hayden][])
11
+ - Require a now-needed file for Puma 6. Thanks, [@ktreis][]! ([#362](https://github.com/rubygems/gemstash/pull/362), [@olleolleolle](https://github.com/olleolleolle))
9
12
 
10
- ## 2.3.0 (2023-08-30)
13
+ ## 2.3.1 (2023-09-05)
11
14
 
12
- https://github.com/rubygems/gemstash/compare/v2.2.2...v2.3.0
15
+ ### Fixes
16
+
17
+ - Reinstate Ruby Central in README. ([#353](https://github.com/rubygems/gemstash/pull/353), [@olleolleolle](https://github.com/olleolleolle))
18
+ - Implement Puma 5-required logger method `#sync` ([#355](https://github.com/rubygems/gemstash/pull/355), [@ball-hayden](https://github.com/ball-hayden))
19
+
20
+ ## 2.3.0 (2023-08-30)
13
21
 
14
22
  ### Changes
15
23
 
16
- - Support Puma 6. ([#335](https://github.com/rubygems/gemstash/pull/335), [@MSP-Greg][])
17
- - Make UpstreamSource intermediate specs from upstream. ([#337](https://github.com/rubygems/gemstash/pull/337), [@tedgarb][])
18
- - Mention RubyCentral. ([#338](https://github.com/rubygems/gemstash/pull/338), [@adarsh][])
19
- - Configure Dependabot. ([#341](https://github.com/rubygems/gemstash/pull/341), [@olleolleolle][])
24
+ - Support Puma 6. ([#335](https://github.com/rubygems/gemstash/pull/335), [@MSP-Greg](https://github.com/MSP-Greg))
25
+ - Make UpstreamSource intermediate specs from upstream. ([#337](https://github.com/rubygems/gemstash/pull/337), [@tedgarb](https://github.com/tedgarb))
26
+ - Mention RubyCentral. ([#338](https://github.com/rubygems/gemstash/pull/338), [@adarsh](https://github.com/adarsh))
27
+ - Configure Dependabot. ([#341](https://github.com/rubygems/gemstash/pull/341), [@olleolleolle](https://github.com/olleolleolle))
20
28
 
21
29
  ## 2.2.2 (2023-03-03)
22
30
 
23
31
  ### Changes
24
32
 
25
- - Allow newer versions of the `activesupport` dependency ([#332](https://github.com/rubygems/gemstash/pull/332), [@kyrofa][])
33
+ - Allow newer versions of the `activesupport` dependency ([#332](https://github.com/rubygems/gemstash/pull/332), [@kyrofa](https://github.com/kyrofa))
26
34
 
27
35
  ## 2.2.1 (2023-02-09)
28
36
 
29
37
  ### Bugfixes
30
38
 
31
- - Add permitted classes to a `YAML.load` in cache ([#329](https://github.com/rubygems/gemstash/pull/329), [@SocalNick][])
39
+ - Add permitted classes to a `YAML.load` in cache ([#329](https://github.com/rubygems/gemstash/pull/329), [@SocalNick](https://github.com/SocialNick))
32
40
 
33
41
  ## 2.2.0 (2023-01-27)
34
42
 
35
43
  ### Bugfixes
36
44
 
37
- - Respect auth set in upstream host uri ([#317](https://github.com/rubygems/gemstash/pull/317), [@jebentier][])
38
- - Change the response code for "/versions" from 403 to 404 ([#326](https://github.com/rubygems/gemstash/pull/326), [@hendric-dev][])
45
+ - Respect auth set in upstream host uri ([#317](https://github.com/rubygems/gemstash/pull/317), [@jebentier](https://github.com/jbentier))
46
+ - Change the response code for "/versions" from 403 to 404 ([#326](https://github.com/rubygems/gemstash/pull/326), [@hendric-dev](https://github.com/hendric-dev))
39
47
 
40
48
  ### Changes
41
49
 
42
- - Support Ruby 3 ([#312](https://github.com/rubygems/gemstash/pull/312), [@tonytonyjan][])
43
- - Drop support for EOL Ruby versions 2.4, 2.5, 2.6 ([#328](https://github.com/rubygems/gemstash/pull/328), [@indirect][])
44
- - Update `dalli` dependency ([#324](https://github.com/rubygems/gemstash/pull/324), [@indirect][])
45
-
46
- Also thanks to: [@indirect][] and [@hsbt][] who fixed CI issues and lint warnings.
50
+ - Support Ruby 3 ([#312](https://github.com/rubygems/gemstash/pull/312), [@tonytonyjan](https://github.com/tonytonyjan))
51
+ - Drop support for EOL Ruby versions 2.4, 2.5, 2.6 ([#328](https://github.com/rubygems/gemstash/pull/328), [@indirect](https://github.com/indirect))
52
+ - Update `dalli` dependency ([#324](https://github.com/rubygems/gemstash/pull/324), [@indirect](https://github.com/indirect))
53
+ - Also thanks to: [@indirect][] and [@hsbt][] who fixed CI issues and lint warnings.
47
54
 
48
55
  ## 2.1.0 (2020-02-26)
49
56
 
@@ -282,16 +289,3 @@ Also thanks to: [@indirect][] and [@hsbt][] who fixed CI issues and lint warning
282
289
  - Various fixes 2 ([#47](https://github.com/bundler/gemstash/pull/47), [@smellsblue](https://github.com/smellsblue))
283
290
  - Various fixes 3 ([#49](https://github.com/bundler/gemstash/pull/49), [@smellsblue](https://github.com/smellsblue))
284
291
  - Add Gemtash logo ([#50](https://github.com/bundler/gemstash/pull/50), [@jonathanrieta](https://github.com/jonathanrieta))
285
-
286
- [@SocalNick]: https://github.com/SocalNick
287
- [@hendric-dev]: https://github.com/hendric-dev
288
- [@hsbt]: https://github.com/hsbt
289
- [@indirect]: https://github.com/indirect
290
- [@jebentier]: https://github.com/jebentier
291
- [@kyrofa]: https://github.com/kyrofa
292
- [@tonytonyjan]: https://github.com/tonytonyjan
293
- [@MSP-Greg]: https://github.com/MSP-Greg
294
- [@tedgarb]: https://github.com/tedgarb
295
- [@adarsh]: https://github.com/adarsh
296
- [@olleolleolle]: https://github.com/olleolleolle
297
- [@ball-hayden]: https://github.com/ball-hayden
@@ -13,7 +13,9 @@ module Gemstash
13
13
  extend Gemstash::Logging
14
14
  VALID_PERMISSIONS = %w[push yank fetch].freeze
15
15
 
16
- def self.authorize(auth_key, permissions)
16
+ attr_reader :name
17
+
18
+ def self.authorize(auth_key, permissions, name = nil)
17
19
  raise "Authorization key is required!" if auth_key.to_s.strip.empty?
18
20
  raise "Permissions are required!" if permissions.to_s.empty?
19
21
 
@@ -25,7 +27,7 @@ module Gemstash
25
27
  permissions = permissions.join(",")
26
28
  end
27
29
 
28
- Gemstash::DB::Authorization.insert_or_update(auth_key, permissions)
30
+ Gemstash::DB::Authorization.insert_or_update(auth_key, permissions, name)
29
31
  gemstash_env.cache.invalidate_authorization(auth_key)
30
32
  log.info "Authorization '#{auth_key}' updated with access to '#{permissions}'"
31
33
  end
@@ -62,6 +64,7 @@ module Gemstash
62
64
 
63
65
  def initialize(record)
64
66
  @auth_key = record.auth_key
67
+ @name = record.name
65
68
  @all = record.permissions == "all"
66
69
  @permissions = Set.new(record.permissions.split(","))
67
70
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "gemstash"
4
4
  require "securerandom"
5
+ require "terminal-table"
5
6
 
6
7
  module Gemstash
7
8
  class CLI
@@ -12,8 +13,13 @@ module Gemstash
12
13
  prepare
13
14
  setup_logging
14
15
 
16
+ # Catch invalid option combinations
17
+ raise Gemstash::CLI::Error.new(@cli, "--remove and --list cannot both be used") if @cli.options[:remove] && @cli.options[:list]
18
+
15
19
  if @cli.options[:remove]
16
20
  remove_authorization
21
+ elsif @cli.options[:list]
22
+ list_authorizations
17
23
  else
18
24
  save_authorization
19
25
  end
@@ -26,6 +32,8 @@ module Gemstash
26
32
  end
27
33
 
28
34
  def remove_authorization
35
+ raise Gemstash::CLI::Error.new(@cli, "--name cannot be used with --remove") if @cli.options[:remove] && @cli.options[:name]
36
+
29
37
  unless @args.empty?
30
38
  raise Gemstash::CLI::Error.new(@cli, "To remove individual permissions, you do not need --remove
31
39
  Instead just authorize with the new set of permissions")
@@ -43,7 +51,24 @@ Instead just authorize with the new set of permissions")
43
51
  end
44
52
  end
45
53
 
46
- Gemstash::Authorization.authorize(auth_key, permissions)
54
+ begin
55
+ name = @cli.options[:name]
56
+ Gemstash::Authorization.authorize(auth_key, permissions, name)
57
+ rescue Sequel::UniqueConstraintViolation => e
58
+ raise unless name && e.message.include?("authorizations.name")
59
+
60
+ raise Gemstash::CLI::Error.new(@cli, "Authorization with name '#{name}' already exists")
61
+ end
62
+ end
63
+
64
+ def list_authorizations
65
+ raise Gemstash::CLI::Error.new(@cli, "--key and --name cannot both be used with --list") if @cli.options[:name] && @cli.options[:key]
66
+
67
+ rows = map_authorizations(@cli.options[:key], @cli.options[:name]) do |authorization|
68
+ [authorization.name, authorization.auth_key, authorization.permissions]
69
+ end
70
+
71
+ @cli.say Terminal::Table.new :headings => %w[Name Key Permissions], :rows => rows
47
72
  end
48
73
 
49
74
  def auth_key(allow_generate: true)
@@ -66,6 +91,22 @@ Instead just authorize with the new set of permissions")
66
91
  @args
67
92
  end
68
93
  end
94
+
95
+ def map_authorizations(key = nil, name = nil, &block)
96
+ return Gemstash::DB::Authorization.map(&block) unless name || key
97
+
98
+ authorization = if name
99
+ Gemstash::DB::Authorization[name: name].tap do |authorization|
100
+ raise Gemstash::CLI::Error.new(@cli, "No authorization named '#{name}'") unless authorization
101
+ end
102
+ else
103
+ Gemstash::DB::Authorization[auth_key: key].tap do |authorization|
104
+ raise Gemstash::CLI::Error.new(@cli, "No authorization with key '#{key}'") unless authorization
105
+ end
106
+ end
107
+
108
+ [yield(authorization)]
109
+ end
69
110
  end
70
111
  end
71
112
  end
data/lib/gemstash/cli.rb CHANGED
@@ -51,10 +51,14 @@ module Gemstash
51
51
  desc "authorize [PERMISSIONS...]", "Add authorizations to push/yank private gems"
52
52
  method_option :remove, :type => :boolean, :default => false, :desc =>
53
53
  "Remove an authorization key"
54
+ method_option :list, :type => :boolean, :default => false, :desc =>
55
+ "List existing authorization keys"
54
56
  method_option :config_file, :type => :string, :desc =>
55
57
  "Config file to save to"
56
58
  method_option :key, :type => :string, :desc =>
57
59
  "Authorization key to create/update/delete (optional unless deleting)"
60
+ method_option :name, :type => :string, :desc =>
61
+ "Name of the key (optional)"
58
62
  def authorize(*args)
59
63
  Gemstash::CLI::Authorize.new(self, *args).run
60
64
  end
@@ -6,14 +6,14 @@ module Gemstash
6
6
  module DB
7
7
  # Sequel model for authorizations table.
8
8
  class Authorization < Sequel::Model
9
- def self.insert_or_update(auth_key, permissions)
9
+ def self.insert_or_update(auth_key, permissions, name = nil)
10
10
  db.transaction do
11
11
  record = self[auth_key: auth_key]
12
12
 
13
13
  if record
14
- record.update(permissions: permissions)
14
+ record.update(permissions: permissions, name: name)
15
15
  else
16
- create(auth_key: auth_key, permissions: permissions)
16
+ create(auth_key: auth_key, permissions: permissions, name: name)
17
17
  end
18
18
  end
19
19
  end
@@ -3,6 +3,7 @@
3
3
  require "logger"
4
4
 
5
5
  begin
6
+ require "puma/detect"
6
7
  require "puma/log_writer" # Puma 6
7
8
  rescue LoadError
8
9
  require "puma/events"
@@ -1,66 +1,54 @@
1
1
  <!-- Automatically generated by Pandoc -->
2
- .\" Automatically generated by Pandoc 3.1.6.2
2
+ .\" Automatically generated by Pandoc 3.1.8
3
3
  .\"
4
- .\" Define V font for inline verbatim, using C font in formats
5
- .\" that render this, and otherwise B font.
6
- .ie "\f[CB]x\f[]"x" \{\
7
- . ftr V B
8
- . ftr VI BI
9
- . ftr VB B
10
- . ftr VBI BI
11
- .\}
12
- .el \{\
13
- . ftr V CR
14
- . ftr VI CI
15
- . ftr VB CB
16
- . ftr VBI CBI
17
- .\}
18
4
  .TH "gemstash-authorize" "1" "October 9, 2015" "" ""
19
- .hy
20
5
  .SH Name
21
- .PP
22
6
  gemstash-authorize - Adds or removes authorization to interact with
23
7
  privately stored gems
24
8
  .SH Synopsis
25
- .PP
26
- \f[V]gemstash authorize [permissions] [--remove] [--key SECURE_KEY] [--config-file FILE]\f[R]
9
+ \f[CR]gemstash authorize [permissions] [--remove] [--list] [--key SECURE_KEY] [--name NAME] [--config-file FILE]\f[R]
27
10
  .SH Description
28
- .PP
29
11
  Adds or removes authorization to interact with privately stored gems.
30
12
  .PP
31
13
  Any arguments will be used as specific permissions.
32
- Valid permissions include \f[V]push\f[R], \f[V]yank\f[R], and
33
- \f[V]fetch\f[R].
14
+ Valid permissions include \f[CR]push\f[R], \f[CR]yank\f[R], and
15
+ \f[CR]fetch\f[R].
34
16
  If no permissions are provided, then all permissions will be granted
35
17
  (including any that may be added in future versions of Gemstash).
36
18
  .SS Usage
37
19
  .IP
38
- .nf
39
- \f[C]
20
+ .EX
40
21
  gemstash authorize
41
22
  gemstash authorize push yank
23
+ gemstash authorize push --name my-auth
42
24
  gemstash authorize yank --key <secure-key>
43
25
  gemstash authorize --remove --key <secure-key>
44
- \f[R]
45
- .fi
26
+ gemstash authorize --list
27
+ .EE
46
28
  .SH Options
47
29
  .IP \[bu] 2
48
- \f[V]--config-file FILE\f[R]: Specify the config file to use.
30
+ \f[CR]--config-file FILE\f[R]: Specify the config file to use.
49
31
  If you aren\[cq]t using the default config file at
50
- \f[V]\[ti]/.gemstash/config.yml\f[R] or
51
- \f[V]\[ti]/.gemstash/config.yml.erb\f[R], then you must specify the
32
+ \f[CR]\[ti]/.gemstash/config.yml\f[R] or
33
+ \f[CR]\[ti]/.gemstash/config.yml.erb\f[R], then you must specify the
52
34
  config file via this option.
53
35
  .IP \[bu] 2
54
- \f[V]--key SECURE_KEY\f[R]: Specify the API key to affect.
36
+ \f[CR]--key SECURE_KEY\f[R]: Specify the API key to affect.
55
37
  This should be the actual key value, not a name.
56
- This option is required when using \f[V]--remove\f[R] but is optional
38
+ This option is required when using \f[CR]--remove\f[R] but is optional
57
39
  otherwise.
58
40
  If adding an authorization, using this will either create or update the
59
41
  permissions for the specified API key.
60
42
  If missing, a new API key will always be generated.
61
43
  Note that a key can only have a maximum length of 255 chars.
62
44
  .IP \[bu] 2
63
- \f[V]--remove\f[R]: Remove an authorization rather than add or update
45
+ \f[CR]--name\f[R]: Name of the authorization.
46
+ Purely for ease of identification, not required.
47
+ .IP \[bu] 2
48
+ \f[CR]--remove\f[R]: Remove an authorization rather than add or update
64
49
  one.
65
50
  When removing, permission values are not allowed.
66
- The \f[V]--key <secure-key>\f[R] option is required.
51
+ The \f[CR]--key <secure-key>\f[R] option is required.
52
+ .IP \[bu] 2
53
+ \f[CR]--list\f[R]: List current authorizations.
54
+ Provide \f[CR]--name\f[R] or \f[CR]--key\f[R] to show only one result.
@@ -7,38 +7,46 @@
7
7
  privately stored gems
8
8
 
9
9
  1mSynopsis0m
10
- 1mgemstash authorize [permissions] [--remove] [--key SECURE_KEY] [--con-0m
11
- 1mfig-file FILE]0m
10
+ gemstash authorize [permissions] [--remove] [--list] [--key SECURE_KEY]
11
+ [--name NAME] [--config-file FILE]
12
12
 
13
13
  1mDescription0m
14
14
  Adds or removes authorization to interact with privately stored gems.
15
15
 
16
- Any arguments will be used as specific permissions. Valid permissions
17
- include 1mpush22m, 1myank22m, and 1mfetch22m. If no permissions are provided, then
16
+ Any arguments will be used as specific permissions. Valid permissions
17
+ include push, yank, and fetch. If no permissions are provided, then
18
18
  all permissions will be granted (including any that may be added in fu-
19
19
  ture versions of Gemstash).
20
20
 
21
21
  1mUsage0m
22
22
  gemstash authorize
23
23
  gemstash authorize push yank
24
+ gemstash authorize push --name my-auth
24
25
  gemstash authorize yank --key <secure-key>
25
26
  gemstash authorize --remove --key <secure-key>
27
+ gemstash authorize --list
26
28
 
27
29
  1mOptions0m
28
- o 1m--config-file FILE22m: Specify the config file to use. If you aren't
29
- using the default config file at 1m~/.gemstash/config.yml 22mor 1m~/.gem-0m
30
- 1mstash/config.yml.erb22m, then you must specify the config file via this
30
+ o --config-file FILE: Specify the config file to use. If you aren't
31
+ using the default config file at ~/.gemstash/config.yml or ~/.gem-
32
+ stash/config.yml.erb, then you must specify the config file via this
31
33
  option.
32
34
 
33
- o 1m--key SECURE_KEY22m: Specify the API key to affect. This should be the
34
- actual key value, not a name. This option is required when using
35
- 1m--remove 22mbut is optional otherwise. If adding an authorization, us-
36
- ing this will either create or update the permissions for the speci-
37
- fied API key. If missing, a new API key will always be generated.
35
+ o --key SECURE_KEY: Specify the API key to affect. This should be the
36
+ actual key value, not a name. This option is required when using
37
+ --remove but is optional otherwise. If adding an authorization, us-
38
+ ing this will either create or update the permissions for the speci-
39
+ fied API key. If missing, a new API key will always be generated.
38
40
  Note that a key can only have a maximum length of 255 chars.
39
41
 
40
- o 1m--remove22m: Remove an authorization rather than add or update one.
41
- When removing, permission values are not allowed. The 1m--key <secure-0m
42
- 1mkey> 22moption is required.
42
+ o --name: Name of the authorization. Purely for ease of identifica-
43
+ tion, not required.
44
+
45
+ o --remove: Remove an authorization rather than add or update one.
46
+ When removing, permission values are not allowed. The --key <secure-
47
+ key> option is required.
48
+
49
+ o --list: List current authorizations. Provide --name or --key to show
50
+ only one result.
43
51
 
44
52
  October 9, 2015 4mgemstash-authorize24m(1)