keycutter 0.2.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2e7d571fe04c0cb4876f243c393e46adb6dc1d77
4
+ data.tar.gz: 1ca75d895460d33d14bb9d84b4efb98ecb32825a
5
+ SHA512:
6
+ metadata.gz: 650f97d0bf40797017af5cb62ea91a7f8d523653334b893c3022a6b32e84476096b789f72a01c934d577fa25e465fdd4a93b5e8f8837234a78aaca70ef0ca5d6
7
+ data.tar.gz: f3d4e02875759d791c1403342c38f628b092a84895f7b9396446f5c0a2c82f14768ce67c046387677e008377d406feaea36ccb4ec8e7cfee1f7d113de09f1a5f
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ keycutter
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.3.3
data/CHANGELOG.md ADDED
@@ -0,0 +1,29 @@
1
+ ## Change Log
2
+
3
+ ### 1.0.0
4
+
5
+ #### Fixed
6
+
7
+ * the default key will now correctly be reported in all scenarios.
8
+
9
+ * adding a new key when there is no ~/.gem/credentials file will now no
10
+ longer erroneously put the contents of the ~/.gemrc in the newly created
11
+ credentials file.
12
+
13
+ * adding a new key when there is no ~/.gem/credentials file will now create
14
+ the credentials file with 0600 permissions.
15
+
16
+ #### Changed
17
+
18
+ * api keys will no longer default to being pulled from the ~/.gemrc when the
19
+ ~/.gem/credentials file does not exist. This behavior was previously not
20
+ explicitly dealt with in this library, but removing support could potentially
21
+ be a breaking change for some people so the major version is being bumped.
22
+
23
+ ### 0.1.1
24
+
25
+ * Lazy load Keycutter after the command has been invoked
26
+
27
+ ### 0.1.0
28
+
29
+ * Initial release
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "http://rubygems.org"
1
+ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
data/README.md CHANGED
@@ -13,35 +13,45 @@ Installation
13
13
  Usage
14
14
  -----
15
15
 
16
- Start by adding your current API key. You can name it whatever you want:
16
+ Use the `gem keys` command to manage multiple API keys. Upon installation,
17
+ keycutter will only know about your existing rubygems key:
17
18
 
18
- $ gem keys --add personal
19
+ $ gem keys --list
20
+
21
+ *** CURRENT KEYS ***
22
+
23
+ * rubygems
24
+
25
+ If you manage gems for your company or an open-source organization, you can add
26
+ additional keys:
27
+
28
+ $ gem keys --add work
19
29
  Email:
20
30
  Password:
21
31
 
22
- You'll be prompted for your Rubygems.org email and password. If you manage gems
23
- for your company or an open-source organization, add those too:
32
+ You'll be prompted for your Rubygems.org email and password.
24
33
 
25
- $ gem keys --add company
26
- $ gem keys --add project
34
+ If you're using RubyGems 1.4.1 or higher, you can pass the `--host` option to
35
+ use a gemcutter-compatible host when adding a key:
27
36
 
28
- You can view your current keys:
37
+ $ gem keys --add internal --host http://gems.mycompany.com
29
38
 
30
- $ gem keys --list
31
-
32
- *** CURRENT KEYS ***
39
+ By default, your existing rubygems.org key is used whenever communicating with
40
+ gemcutter. To switch the default key used to manage remote gems:
33
41
 
34
- company
35
- * personal
36
- project
42
+ $ gem keys --default work
37
43
 
38
- Your currently active key is marked.
44
+ Your default key is always marked with a *:
39
45
 
40
- To switch to a different account before pushing a gem:
46
+ $ gem keys --list
41
47
 
42
- $ gem keys --use company
48
+ *** CURRENT KEYS ***
43
49
 
44
- You can also remove a key:
50
+ internal
51
+ rubygems
52
+ * work
53
+
54
+ You can also remove keys:
45
55
 
46
56
  $ gem keys --remove project
47
57
 
@@ -49,10 +59,3 @@ Help is available from the command line:
49
59
 
50
60
  $ gem keys --help
51
61
 
52
- TODO
53
- ----
54
-
55
- * Add auto-detection of existing API key and create a default key name
56
- * Rubygems 1.3.7 doesn't support gemcutter-compatible hosts, although this has
57
- been added to edge. Update `keys --add` to take a `--host` option when the next
58
- version of rubygems is released.
data/features/add.feature CHANGED
@@ -5,7 +5,7 @@ Feature: Adding keys
5
5
 
6
6
  Scenario Outline: Adding a new key
7
7
  Given a valid gemcutter account
8
- When I run "gem keys <command> <key>" interactively
8
+ When I run `gem keys <command> <key>` interactively
9
9
  And I type "josh@vitamin-j.com"
10
10
  And I type "12345"
11
11
  Then the output should contain "Added <key> API key"
@@ -19,7 +19,7 @@ Feature: Adding keys
19
19
 
20
20
  Scenario: Adding a key with bad credentials
21
21
  Given an invalid gemcutter account
22
- When I run "gem keys -a bogus" interactively
22
+ When I run `gem keys -a bogus` interactively
23
23
  And I type "josh@vitamin-j.com"
24
24
  And I type "12345"
25
25
  Then the output should contain "Access denied"
@@ -29,7 +29,7 @@ Feature: Adding keys
29
29
  Scenario: Adding a key from a compatible host
30
30
  Given a gemcutter host at "https://nubygems.org"
31
31
  And a valid gemcutter account
32
- When I run "gem keys --add personal --host https://nubygems.org" interactively
32
+ When I run `gem keys --add personal --host https://nubygems.org` interactively
33
33
  And I type "josh@vitamin-j.com"
34
34
  And I type "12345"
35
35
  Then the output should contain "Enter your nubygems.org credentials"
@@ -11,7 +11,7 @@ Feature: Using gem keys
11
11
 
12
12
  Scenario Outline: Using a different key
13
13
  Given my current rubygems key is "work"
14
- When I run "gem keys <command> <key>"
14
+ When I run `gem keys <command> <key>`
15
15
  Then the output should contain "Now using <key> API key"
16
16
  And my current rubygems key should be "<key>"
17
17
 
@@ -23,7 +23,7 @@ Feature: Using gem keys
23
23
 
24
24
  Scenario: Using a bogus key
25
25
  Given my current rubygems key is "personal"
26
- When I run "gem keys -d bogus"
26
+ When I run `gem keys -d bogus`
27
27
  Then the output should contain "No such API key. You can add it with: gem keys -a bogus"
28
28
  And the exit status should be 1
29
29
  And my current rubygems key should be "personal"
@@ -4,7 +4,7 @@ Feature: Default commands
4
4
  So I can put keycutter to best use
5
5
 
6
6
  Scenario: Installing the gem
7
- When I run "gem q"
7
+ When I run `gem q`
8
8
  Then the output should contain "keycutter"
9
9
 
10
10
  Scenario: Calling the plugin with no options
@@ -15,7 +15,7 @@ Feature: Default commands
15
15
  |oss_1 |33333333333333333333333333333333|
16
16
  |oss_2 |44444444444444444444444444444444|
17
17
  And my current rubygems key is "rubygems"
18
- When I run "gem keys"
18
+ When I run `gem keys`
19
19
  Then the output should contain:
20
20
  """
21
21
  *** CURRENT KEYS ***
@@ -32,7 +32,7 @@ Feature: Default commands
32
32
  |rubygems|11111111111111111111111111111111|
33
33
  |work |22222222222222222222222222222222|
34
34
  And my current rubygems key is "work"
35
- When I run "gem keys <option>"
35
+ When I run `gem keys <option>`
36
36
  Then the output should contain:
37
37
  """
38
38
  *** CURRENT KEYS ***
@@ -10,7 +10,7 @@ Feature: Remove API keys
10
10
  |work |22222222222222222222222222222222|
11
11
 
12
12
  Scenario Outline:
13
- When I run "gem keys <command> <key>"
13
+ When I run `gem keys <command> <key>`
14
14
  Then the output should contain "Removed <key> API key"
15
15
  And I should not have a "<key>" api key
16
16
 
@@ -20,5 +20,5 @@ Feature: Remove API keys
20
20
  |--remove|work |
21
21
 
22
22
  Scenario: Removing a bogus key
23
- When I run "gem keys -r bogus"
23
+ When I run `gem keys -r bogus`
24
24
  Then the output should contain "No such API key"
@@ -26,23 +26,22 @@ Given /^a gemcutter host at "([^"]*)"$/ do |host|
26
26
  set_env 'FAKEWEB_HOST', host
27
27
  end
28
28
 
29
-
30
29
  Then /^my current rubygems key should be "([^"]*)"$/ do |key|
31
- Gem.configuration.load_rubygems_api_key
32
- Gem.configuration.rubygems_api_key.should == Gem.configuration.api_keys[key.to_sym]
30
+ Gem.configuration.load_api_keys
31
+ expect(Gem.configuration.rubygems_api_key).to eq(Gem.configuration.api_keys[key.to_sym])
33
32
  end
34
33
 
35
34
  Then /^I should have a "([^"]*)" api key$/ do |key|
36
35
  Gem.configuration.load_api_keys
37
- Gem.configuration.api_keys.should have_key(key.to_sym)
36
+ expect(Gem.configuration.api_keys).to have_key(key.to_sym)
38
37
  end
39
38
 
40
39
  Then /^I should not have a "([^"]*)" api key$/ do |key|
41
40
  Gem.configuration.load_api_keys
42
- Gem.configuration.api_keys.should_not have_key(key.to_sym)
41
+ expect(Gem.configuration.api_keys).not_to have_key(key.to_sym)
43
42
  end
44
43
 
45
44
  Then /^the "([^"]*)" api key should be the response body$/ do |key|
46
45
  Gem.configuration.load_api_keys
47
- Gem.configuration.api_keys[key.to_sym].should == ENV['FAKEWEB_BODY']
46
+ expect(Gem.configuration.api_keys[key.to_sym]).to eq(ENV['FAKEWEB_BODY'])
48
47
  end
data/keycutter.gemspec CHANGED
@@ -6,6 +6,7 @@ Gem::Specification.new do |s|
6
6
  s.name = "keycutter"
7
7
  s.version = Keycutter::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
+ s.licenses = ['MIT']
9
10
  s.authors = ["Josh French"]
10
11
  s.email = ["josh@vitamin-j.com"]
11
12
  s.homepage = "http://github.com/joshfrench/keycutter"
@@ -13,7 +13,7 @@ class Gem::ConfigFile
13
13
 
14
14
  require 'yaml'
15
15
 
16
- File.open(credentials_path, 'w') do |f|
16
+ File.open(credentials_path, 'w', 0600) do |f|
17
17
  f.write keys.to_yaml
18
18
  end
19
19
 
@@ -21,10 +21,10 @@ class Gem::ConfigFile
21
21
  end
22
22
 
23
23
  def load_api_keys
24
- @api_keys = File.exists?(credentials_path) ? load_file(credentials_path) : @hash
24
+ @api_keys = File.exists?(credentials_path) ? load_file(credentials_path) : {}
25
25
  if @api_keys.key?(:rubygems_api_key)
26
- rubygems_api_key = @api_keys.delete(:rubygems_api_key)
27
- @api_keys[:rubygems] = rubygems_api_key unless @api_keys.key?(:rubygems)
26
+ @rubygems_api_key = @api_keys.delete(:rubygems_api_key)
27
+ @api_keys[:rubygems] = @rubygems_api_key unless @api_keys.key?(:rubygems)
28
28
  end
29
29
  @api_keys
30
30
  end
@@ -1,3 +1,3 @@
1
1
  module Keycutter
2
- VERSION = "0.2.0"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -4,20 +4,20 @@ describe Gem::ConfigFile do
4
4
  before do
5
5
  @credentials = File.dirname(__FILE__) + '/../test_credentials'
6
6
  @config = Gem::ConfigFile.new([])
7
- @config.stub(:credentials_path) { @credentials }
7
+ allow(@config).to receive(:credentials_path) { @credentials }
8
8
  end
9
9
 
10
10
  describe "#api_keys" do
11
11
  it "should load from credentials file" do
12
12
  credentials = {:personal => '1'*32, :work => '2'*32}
13
13
  File.open(@credentials, 'w') { |f| f.write credentials.to_yaml }
14
- @config.api_keys.should == credentials
14
+ expect(@config.api_keys).to eq(credentials)
15
15
  end
16
16
 
17
17
  it "should add existing rubygems key to the hash" do
18
18
  credentials = {:rubygems_api_key => '0'*32}
19
19
  File.open(@credentials, 'w') { |f| f.write credentials.to_yaml }
20
- @config.api_keys.should == {:rubygems => '0'*32}
20
+ expect(@config.api_keys).to eq({:rubygems => '0'*32})
21
21
  end
22
22
  end
23
23
 
@@ -27,7 +27,7 @@ describe Gem::ConfigFile do
27
27
  accounts = {:personal => '1'*32, :work => '2'*32}
28
28
  @config.api_keys = accounts
29
29
 
30
- File.read(@credentials).should == accounts.to_yaml
30
+ expect(File.read(@credentials)).to eq(accounts.to_yaml)
31
31
  end
32
32
 
33
33
  it "should preserve existing credentials" do
@@ -35,7 +35,7 @@ describe Gem::ConfigFile do
35
35
  @config.api_keys = {:personal => '1'*32, :work => '2'*32}
36
36
 
37
37
  credentials = YAML.load_file(@credentials)
38
- credentials[:rubygems_api_key].should == '0'*32
38
+ expect(credentials[:rubygems_api_key]).to eq('0'*32)
39
39
  end
40
40
  end
41
41
  end
data/spec/spec_helper.rb CHANGED
@@ -2,3 +2,7 @@ $:.unshift(File.dirname(__FILE__) + '/../../lib')
2
2
 
3
3
  require 'rspec/mocks'
4
4
  require 'keycutter'
5
+
6
+ # Set permissions to what rubygems wants,
7
+ # so it doesn't throw a permissions error
8
+ File.chmod(0600, 'test_credentials')
metadata CHANGED
@@ -1,36 +1,26 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: keycutter
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 2
8
- - 0
9
- version: 0.2.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
10
5
  platform: ruby
11
- authors:
6
+ authors:
12
7
  - Josh French
13
8
  autorequire:
14
9
  bindir: bin
15
10
  cert_chain: []
16
-
17
- date: 2011-01-04 00:00:00 -05:00
18
- default_executable:
11
+ date: 2016-12-05 00:00:00.000000000 Z
19
12
  dependencies: []
20
-
21
13
  description: Multiple gemcutter accounts? Manage your keys with ease.
22
- email:
14
+ email:
23
15
  - josh@vitamin-j.com
24
16
  executables: []
25
-
26
17
  extensions: []
27
-
28
18
  extra_rdoc_files: []
29
-
30
- files:
31
- - .gitignore
32
- - .rvmrc
33
- - CHANGELOG
19
+ files:
20
+ - ".gitignore"
21
+ - ".ruby-gemset"
22
+ - ".ruby-version"
23
+ - CHANGELOG.md
34
24
  - Gemfile
35
25
  - MIT-LICENSE
36
26
  - README.md
@@ -51,37 +41,31 @@ files:
51
41
  - lib/rubygems_plugin.rb
52
42
  - spec/configuration_spec.rb
53
43
  - spec/spec_helper.rb
54
- has_rdoc: true
55
44
  homepage: http://github.com/joshfrench/keycutter
56
- licenses: []
57
-
45
+ licenses:
46
+ - MIT
47
+ metadata: {}
58
48
  post_install_message:
59
49
  rdoc_options: []
60
-
61
- require_paths:
50
+ require_paths:
62
51
  - lib
63
- required_ruby_version: !ruby/object:Gem::Requirement
64
- requirements:
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
65
54
  - - ">="
66
- - !ruby/object:Gem::Version
67
- segments:
68
- - 0
69
- version: "0"
70
- required_rubygems_version: !ruby/object:Gem::Requirement
71
- requirements:
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
72
59
  - - ">="
73
- - !ruby/object:Gem::Version
74
- segments:
75
- - 0
76
- version: "0"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
77
62
  requirements: []
78
-
79
63
  rubyforge_project: keycutter
80
- rubygems_version: 1.3.6
64
+ rubygems_version: 2.5.2
81
65
  signing_key:
82
- specification_version: 3
66
+ specification_version: 4
83
67
  summary: Gemcutter key management
84
- test_files:
68
+ test_files:
85
69
  - features/add.feature
86
70
  - features/default.feature
87
71
  - features/list.feature
data/.rvmrc DELETED
@@ -1 +0,0 @@
1
- rvm gemset use keycutter
data/CHANGELOG DELETED
@@ -1,7 +0,0 @@
1
- == Changelog
2
-
3
- === 0.1.1
4
- * Lazy load Keycutter after the command has been invoked
5
-
6
- === 0.1.0
7
- * Initial release