conjur-cli 4.18.0 → 4.18.6

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: 72781b9c56ed02155378f270c0c36ca4041870e4
4
- data.tar.gz: babddd4db4c6af48e79f68b5efefdaef2af9ae33
3
+ metadata.gz: 48872bafebcf0d1adecc8364f839bd7318839c14
4
+ data.tar.gz: 523c5883db7eb7faf4afad5f31543e8629490685
5
5
  SHA512:
6
- metadata.gz: 02429a61b261a87cbb604fea379de4b096431dd6b385df0c3924e637a30ee4e08560867b6e28cc8de1deff349f9c1f156f4a2382ccd4de0bcf45634e1619e6e2
7
- data.tar.gz: 26ee97af5b20b8568cac44be5f293d9fb157b80d7ffe3d87d71dd3589df43152f557d89ca71777c0cda57a99256f76e1ae7bc08af8856f17c0ac67d50e5e272c
6
+ metadata.gz: e00e1a4898d768816840ee41887b5ed59f6d3fa68d3bf1677ff0ce9388c88bb844b476581bf64e076b903b5fe6c7822047f30e68416d7fe789da7afbc85928aa
7
+ data.tar.gz: 018110603af0cda168cc4bc7d525fd12cf8e3332135abd2c73013bfaa7cacbf27ca471e8ae1b3ef83dc22a5daaf3faab144fb0c074c14a291af0bbdf2856f0b9
data/.gitignore CHANGED
@@ -1,3 +1,5 @@
1
+ .gems
2
+ .rbenv*
1
3
  *.policy
2
4
  .conjurrc
3
5
  *.cert
@@ -1,6 +1,27 @@
1
+ # 4.18.5
2
+
3
+ * Bump conjur-api version to mime-types problem
4
+
5
+ # 4.18.4
6
+
7
+ * Revert "Find (and store) credentials by only a hostname as the machine in netrc"
8
+
9
+ # 4.18.3
10
+
11
+ * Use the latest conjur-ssh cookbook version for conjurize
12
+
13
+ # 4.18.2
14
+
15
+ * Require a recent version of netrc
16
+ * Complain if netrc is world readable
17
+ * Find (and store) credentials by only a hostname as the machine in netrc
18
+ * Make the command start up faster by lazy loading some gems
19
+ * `authn whoami` will notice if the user is logged in via env vars
20
+ * `conjurize` default conjur-ssh cookbook updated to 1.2.2
21
+
1
22
  # 4.18.0
2
23
 
3
- * New `conjurize` command
24
+ * New `conjurize` command
4
25
  * Deprecate the `host enroll` command
5
26
  * `variable create` command now takes an optional value for the variable after the variable id
6
27
  * Configure "permissive" netrc to allow the `conjur` Unix group to read the `.netrc` or `conjur.identity` file.
@@ -14,7 +35,7 @@
14
35
  # 4.16.0
15
36
 
16
37
  * Add 'bootstrap' CLI command
17
- * Raise a better error if conjur env encounters a variable with no value
38
+ * Raise a better error if conjur env encounters a variable with no value
18
39
 
19
40
  # 4.15.0
20
41
 
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ Cucumber::Rake::Task.new :features
11
11
 
12
12
  task :jenkins => ['ci:setup:rspec', :spec, 'ci:setup:cucumber_report_cleanup'] do
13
13
  Cucumber::Rake::Task.new do |t|
14
- t.cucumber_opts = "--format CI::Reporter::Cucumber"
14
+ t.cucumber_opts = "--format progress --format CI::Reporter::Cucumber --out features/reports"
15
15
  end.runner.run
16
16
  File.write('build_number', ENV['BUILD_NUMBER']) if ENV['BUILD_NUMBER']
17
17
  end
@@ -17,6 +17,7 @@
17
17
  :authenticate: true
18
18
  :logout: true
19
19
  :whoami: true
20
+ :bootstrap: true
20
21
  :env:
21
22
  :run: true
22
23
  :check: true
@@ -26,6 +27,7 @@
26
27
  :create: true
27
28
  :list: true
28
29
  :show: true
30
+ :retire: true
29
31
  :members:
30
32
  :list: true
31
33
  :add: true
@@ -33,6 +35,7 @@
33
35
  :host:
34
36
  :create: true
35
37
  :show: true
38
+ :retire: true
36
39
  :list: true
37
40
  :enroll: true
38
41
  :layers: true
@@ -85,6 +88,7 @@
85
88
  :user:
86
89
  :create: true
87
90
  :show: true
91
+ :retire: true
88
92
  :list: true
89
93
  :update_password: true
90
94
  :update: true
@@ -92,6 +96,7 @@
92
96
  :variable:
93
97
  :create: true
94
98
  :show: true
99
+ :retire: true
95
100
  :list: true
96
101
  :values:
97
102
  :add: true
@@ -17,15 +17,15 @@ Gem::Specification.new do |gem|
17
17
 
18
18
 
19
19
  gem.add_dependency 'activesupport'
20
- gem.add_dependency 'conjur-api', '>=4.11.0'
20
+ gem.add_dependency 'conjur-api', '~> 4.11.2'
21
21
  gem.add_dependency 'gli', '>=2.8.0'
22
22
  gem.add_dependency 'highline'
23
- gem.add_dependency 'netrc'
23
+ gem.add_dependency 'netrc', '~> 0.10.2'
24
24
  gem.add_dependency 'methadone'
25
25
  gem.add_dependency 'deep_merge'
26
-
26
+
27
27
  gem.add_runtime_dependency 'cas_rest_client'
28
-
28
+
29
29
  gem.add_development_dependency 'rspec', '~> 3.0'
30
30
  gem.add_development_dependency 'simplecov'
31
31
  gem.add_development_dependency 'aruba', '~> 0.6.1'
@@ -58,10 +58,10 @@ CONJUR_IDENTITY
58
58
  chmod 0600 /etc/conjur.identity
59
59
 
60
60
  """
61
-
61
+
62
62
  Scenario: conjurize with SSH installation
63
63
  When I conjurize "--ssh"
64
- Then the stdout should contain exactly:
64
+ Then the stdout should contain:
65
65
  """
66
66
  #!/bin/sh
67
67
  set -e
@@ -108,14 +108,17 @@ CONJUR_IDENTITY
108
108
  chmod 0600 /etc/conjur.identity
109
109
 
110
110
  curl -L https://www.opscode.com/chef/install.sh | bash
111
- chef-solo -r https://github.com/conjur-cookbooks/conjur-ssh/releases/download/v1.2.0/conjur-ssh-v1.2.0.tar.gz -o conjur-ssh
112
111
 
113
112
  """
113
+ And the output should match:
114
+ """
115
+ chef-solo -r https:\/\/github.com\/conjur-cookbooks\/conjur-ssh\/releases\/download/v\d\.\d\.\d/conjur-ssh-v\d\.\d\.\d.tar.gz -o conjur-ssh
116
+ """
114
117
 
115
118
  Scenario: conjurize with arbitrary cookbook
116
119
  When I conjurize "--conjur-cookbook-url https://example.com --conjur-run-list fry"
117
120
  Then the stdout should contain "chef-solo -r https://example.com -o fry"
118
-
121
+
119
122
  Scenario: conjurize with path to chef-solo
120
123
  When I conjurize "--chef-executable /path/to/chef-solo --conjur-cookbook-url https://example.com --conjur-run-list fry"
121
124
  Then the stdout should contain "/path/to/chef-solo -r https://example.com -o fry"
@@ -128,4 +131,4 @@ chef-solo -r https://github.com/conjur-cookbooks/conjur-ssh/releases/download/v1
128
131
  And the stdout should contain "sudo -n tee /etc/conjur.identity > /dev/null << CONJUR_IDENTITY"
129
132
  And the stdout should contain "sudo -n chmod 0600 /etc/conjur.identity"
130
133
  And the stdout should contain "curl -L https://www.opscode.com/chef/install.sh | sudo -n bash"
131
-
134
+
@@ -10,7 +10,7 @@ namespace do
10
10
  user "bob"
11
11
  end
12
12
  """
13
- Then the model should contain "user" /^bob@/
13
+ Then the model should contain "user" /bob@.+/
14
14
 
15
15
  Scenario: Namespace can be used as a no-arg method
16
16
  When I run script:
@@ -12,7 +12,9 @@ end
12
12
  Then(/^the model should contain "(.*?)" "(.*?)"$/) do |kind, id|
13
13
  @mock_api.thing(kind, id).should_not be_nil
14
14
  end
15
-
15
+ Then(/^the model should contain "(.*?)" \/(.*?)\/$/) do |kind, id|
16
+ @mock_api.thing_like(kind, Regexp.new(id)).should_not be_nil
17
+ end
16
18
  Then(/^the "(.*?)" "(.*?)" should be owned by "(.*?)"$/) do |kind, id, owner|
17
19
  step "the model should contain \"#{kind}\" \"#{id}\""
18
20
  @mock_api.thing(kind, id).ownerid.should == owner
@@ -11,6 +11,10 @@ class MockAPI
11
11
  (@things[kind.to_sym] || []).find{|r| r.id == id}
12
12
  end
13
13
 
14
+ def thing_like(kind, id_pattern)
15
+ (@things[kind.to_sym] || []).find{|r| id_pattern.match(r.id)}
16
+ end
17
+
14
18
  def create_host(options = {})
15
19
  id = options.delete(:id)
16
20
  if id
@@ -28,6 +28,12 @@ Netrc.configure do |config|
28
28
  end
29
29
 
30
30
  module Conjur::Authn
31
+ class NoCredentialsError < RuntimeError
32
+ def initialize
33
+ super "No Conjur credentials provided or found"
34
+ end
35
+ end
36
+
31
37
  autoload :API, 'conjur/authn-api'
32
38
  class << self
33
39
  def login(options = {})
@@ -50,11 +56,18 @@ module Conjur::Authn
50
56
  end
51
57
 
52
58
  def netrc
59
+ @netrc ||= read_netrc
60
+ end
61
+
62
+ def read_netrc
53
63
  args = []
54
64
  if path = Conjur::Config[:netrc_path]
55
65
  args.unshift(path)
66
+ else
67
+ path = Netrc.default_path
56
68
  end
57
- @netrc ||= Netrc.read(*args)
69
+ fail "netrc (#{path}) shouldn't be world-readable" if File.world_readable?(path)
70
+ Netrc.read(*args)
58
71
  end
59
72
 
60
73
  def get_credentials(options = {})
@@ -85,7 +98,7 @@ module Conjur::Authn
85
98
  end
86
99
 
87
100
  def ask_for_credentials(options = {})
88
- raise "No Conjur credentials provided or found" if options[:noask]
101
+ raise NoCredentialsError if options[:noask]
89
102
 
90
103
  # also use stderr here, because we might be prompting for a password as part
91
104
  # of a command like user:create that we'd want to send to a file.
@@ -22,7 +22,12 @@ require 'gli'
22
22
  # need this to prevent an active support bug in some versions
23
23
  require 'active_support'
24
24
  require 'active_support/deprecation'
25
+ require 'tmpdir'
25
26
 
27
+ # this makes mime/types gem load much faster by lazy loading
28
+ # mime types and caching them in binary form
29
+ ENV['RUBY_MIME_TYPES_LAZY_LOAD'] ||= 'true'
30
+ ENV['RUBY_MIME_TYPES_CACHE'] ||= File.join Dir.tmpdir, 'conjur.mimetype.cache'
26
31
 
27
32
  module Conjur
28
33
  autoload :Config, 'conjur/config'
@@ -86,9 +86,10 @@ It should be running the CAS RESTful services at the /v1 path
86
86
  authn.desc "Prints out the current logged in username"
87
87
  authn.command :whoami do |c|
88
88
  c.action do
89
- if creds = Conjur::Authn.read_credentials
89
+ begin
90
+ creds = Conjur::Authn.get_credentials(noask: true)
90
91
  puts({account: Conjur::Core::API.conjur_account, username: creds[0]}.to_json)
91
- else
92
+ rescue Conjur::Authn::NoCredentialsError
92
93
  exit_now! 'Not logged in.', -1
93
94
  end
94
95
  end
@@ -17,10 +17,7 @@
17
17
  # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
18
  # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
19
  # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
- #
21
- #require 'conjur/authn'
22
- #require 'conjur/command'
23
- require 'conjur/conjurenv'
20
+
24
21
  require 'tempfile'
25
22
 
26
23
  class Conjur::Command::Env < Conjur::Command
@@ -41,6 +38,8 @@ class Conjur::Command::Env < Conjur::Command
41
38
  end
42
39
 
43
40
  def self.get_env_object options
41
+ require 'conjur/conjurenv'
42
+
44
43
  if options[:yaml] and options[:c]!='.conjurenv'
45
44
  exit_now! "Options -c and --yaml can not be provided together"
46
45
  end
@@ -18,7 +18,6 @@
18
18
  # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
19
  # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  #
21
- require 'highline'
22
21
  require 'conjur/command'
23
22
  require 'openssl'
24
23
  require 'socket'
@@ -29,8 +28,7 @@ class Conjur::Command::Init < Conjur::Command
29
28
  def self.write_file(filename, force, &block)
30
29
  if File.exists?(filename)
31
30
  unless force
32
- hl = HighLine.new $stdin, $stderr
33
- force = true if hl.ask("File #{filename} exists. Overwrite (yes/no): ").strip == "yes"
31
+ force = true if highline.ask("File #{filename} exists. Overwrite (yes/no): ").strip == "yes"
34
32
  end
35
33
  exit_now! "Not overwriting #{filename}" unless force
36
34
  end
@@ -56,9 +54,7 @@ class Conjur::Command::Init < Conjur::Command
56
54
  c.flag "force"
57
55
 
58
56
  c.action do |global_options,options,args|
59
- hl = HighLine.new $stdin, $stderr
60
-
61
- hostname = options[:hostname] || hl.ask("Enter the hostname (and optional port) of your Conjur endpoint: ").to_s
57
+ hostname = options[:hostname] || highline.ask("Enter the hostname (and optional port) of your Conjur endpoint: ").to_s
62
58
  protocol, hostname = (hostname.scan %r(^(?:(.*)://)?(.*))).first
63
59
  exit_now! "only https protocol supported" unless protocol.nil? || protocol == 'https'
64
60
  if hostname
@@ -70,7 +66,7 @@ class Conjur::Command::Init < Conjur::Command
70
66
  account = Conjur::Core::API.info['account'] or raise "Expecting 'account' in Core info"
71
67
  else
72
68
  # using .to_s to overcome https://github.com/JEG2/highline/issues/69
73
- hl.ask("Enter your organization account name: ").to_s
69
+ highline.ask("Enter your organization account name: ").to_s
74
70
  end
75
71
 
76
72
  if (certificate = options[:certificate]).blank?
@@ -87,7 +83,7 @@ class Conjur::Command::Init < Conjur::Command
87
83
 
88
84
  puts "\nPlease verify this certificate on the appliance using command:
89
85
  openssl x509 -fingerprint -noout -in ~conjur/etc/ssl/conjur.pem\n\n"
90
- exit_now! "You decided not to trust the certificate" unless hl.ask("Trust this certificate (yes/no): ").strip == "yes"
86
+ exit_now! "You decided not to trust the certificate" unless highline.ask("Trust this certificate (yes/no): ").strip == "yes"
91
87
  end
92
88
  end
93
89
 
@@ -146,4 +142,12 @@ class Conjur::Command::Init < Conjur::Command
146
142
  ssock.close if ssock
147
143
  sock.close if sock
148
144
  end
145
+
146
+ private
147
+
148
+ def self.highline
149
+ # isolated here so that highline is only loaded on demand
150
+ require 'highline'
151
+ @hl ||= HighLine.new $stdin, $stderr
152
+ end
149
153
  end
@@ -1,12 +1,21 @@
1
1
  require 'methadone'
2
2
  require 'json'
3
+ require 'open-uri'
3
4
  require 'conjur/version.rb'
4
5
 
6
+ def latest_conjur_ssh_release
7
+ url = 'https://api.github.com/repos/conjur-cookbooks/conjur-ssh/releases'
8
+ resp = open(url)
9
+ json = JSON.parse(resp.read)
10
+ latest = json[0]['assets'].select {|asset| asset['name'] =~ /conjur-ssh-v\d.\d.\d.tar.gz/}[0]
11
+ latest['browser_download_url']
12
+ end
13
+
5
14
  module Conjur
6
15
  class Conjurize
7
16
  include Methadone::Main
8
17
  include Methadone::CLILogging
9
-
18
+
10
19
  description <<-DESC
11
20
  Generate a script to install Conjur onto a machine. "conjurize" is designed to be used
12
21
  in a piped execution, along with "conjur host create" and "ssh". For example:
@@ -15,7 +24,7 @@ conjur host create myhost.example.com | tee host.json | conjurize --ssh | ssh my
15
24
  DESC
16
25
 
17
26
  version Conjur::VERSION
18
-
27
+
19
28
  main do
20
29
  input = if input_file = options[:f]
21
30
  File.read(input_file)
@@ -23,10 +32,10 @@ DESC
23
32
  STDIN.read
24
33
  end
25
34
  host = JSON.parse input
26
-
35
+
27
36
  login = host['id'] or raise "No 'id' field in host JSON"
28
37
  api_key = host['api_key'] or raise "No 'api_key' field in host JSON"
29
-
38
+
30
39
  require 'conjur/cli'
31
40
  if conjur_config = options[:c]
32
41
  Conjur::Config.load [ conjur_config ]
@@ -34,29 +43,29 @@ DESC
34
43
  Conjur::Config.load
35
44
  end
36
45
  Conjur::Config.apply
37
-
46
+
38
47
  conjur_cookbook_url = conjur_run_list = nil
39
-
48
+
40
49
  conjur_run_list = options[:"conjur-run-list"]
41
50
  conjur_cookbook_url = options[:"conjur-cookbook-url"]
42
51
  chef_executable = options[:"chef-executable"]
43
-
52
+
44
53
  if options[:ssh]
45
54
  conjur_run_list ||= "conjur-ssh"
46
- conjur_cookbook_url ||= "https://github.com/conjur-cookbooks/conjur-ssh/releases/download/v1.2.0/conjur-ssh-v1.2.0.tar.gz"
55
+ conjur_cookbook_url ||= latest_conjur_ssh_release()
47
56
  end
48
-
49
- sudo = lambda{|str|
57
+
58
+ sudo = lambda{|str|
50
59
  [ options[:sudo] ? "sudo -n" : nil, str ].compact.join(" ")
51
60
  }
52
-
61
+
53
62
  header = <<-HEADER
54
63
  #!/bin/sh
55
64
  set -e
56
65
 
57
66
  # Implementation note: 'tee' is used as a sudo-friendly 'cat' to populate a file with the contents provided below.
58
67
  HEADER
59
-
68
+
60
69
  configure_conjur = <<-CONFIGURE
61
70
  #{sudo.call 'tee'} /etc/conjur.conf > /dev/null << CONJUR_CONF
62
71
  account: #{Conjur.configuration.account}
@@ -77,13 +86,13 @@ machine #{Conjur.configuration.appliance_url}/authn
77
86
  CONJUR_IDENTITY
78
87
  #{sudo.call 'chmod'} 0600 /etc/conjur.identity
79
88
  CONFIGURE
80
-
89
+
81
90
  install_chef = if conjur_cookbook_url && !chef_executable
82
91
  %Q(curl -L https://www.opscode.com/chef/install.sh | #{sudo.call 'bash'})
83
92
  else
84
93
  nil
85
94
  end
86
-
95
+
87
96
  chef_executable ||= "chef-solo"
88
97
 
89
98
  run_chef = if conjur_cookbook_url
@@ -91,10 +100,10 @@ CONJUR_IDENTITY
91
100
  else
92
101
  nil
93
102
  end
94
-
103
+
95
104
  puts [ header, configure_conjur, install_chef, run_chef ].compact.join("\n")
96
105
  end
97
-
106
+
98
107
  on("-c CONJUR_CONFIG_FILE", "Overrides defaults (CONJURRC env var, ~/.conjurrc, /etc/conjur.conf).")
99
108
  on("-f HOST_JSON_FILE", "Host login and API key can be read from the output emitted from 'conjur host create'. This data can be obtained from stdin, or from a file.")
100
109
  on("--chef-executable PATH", "If specified, the designated chef-solo executable is used, otherwise Chef is installed on the target machine.")
@@ -19,6 +19,6 @@
19
19
  # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
20
  #
21
21
  module Conjur
22
- VERSION = "4.18.0"
22
+ VERSION = "4.18.6"
23
23
  ::Version=VERSION
24
24
  end
@@ -2,38 +2,46 @@ require 'conjur/authn'
2
2
  require 'conjur/config'
3
3
 
4
4
  describe Conjur::Authn do
5
+ let(:netrc) { Netrc.read '' }
6
+ before do
7
+ Conjur::Authn.instance_variable_set("@netrc", netrc)
8
+ end
9
+
5
10
  describe "credentials from environment" do
6
- before {
11
+ before do
7
12
  Conjur::Authn.instance_variable_set("@credentials", nil)
8
13
  expect(ENV).to receive(:[]).with("CONJUR_AUTHN_LOGIN").and_return "the-login"
9
14
  expect(ENV).to receive(:[]).with("CONJUR_AUTHN_API_KEY").and_return "the-api-key"
10
- }
11
- after {
15
+ end
16
+
17
+ after do
12
18
  Conjur::Authn.instance_variable_set("@credentials", nil)
13
- }
19
+ end
20
+
14
21
  it "are used to authn" do
15
22
  expect(Conjur::Authn.get_credentials).to eq([ "the-login", "the-api-key" ])
16
23
  end
24
+
17
25
  it "are not written to netrc" do
18
- allow(Conjur::Authn).to receive(:write_credentials).and_raise "should not write credentials"
26
+ expect(Conjur::Authn).not_to receive(:write_credentials)
19
27
  Conjur::Authn.get_credentials
20
28
  end
21
29
  end
30
+
22
31
  describe "netrc" do
23
- before {
24
- Conjur::Authn.instance_variable_set("@netrc", nil)
25
- expect(Conjur::Config).to receive(:[]).with(:netrc_path).and_return path
26
- }
27
- after {
28
- Conjur::Authn.instance_variable_set("@netrc", nil)
29
- }
32
+ let(:netrc) { nil }
33
+ before do
34
+ allow(Conjur::Config).to receive(:[]).with(:netrc_path).and_return path
35
+ end
36
+
30
37
  context "with specified netrc_path" do
31
- let(:path) { double("path") }
38
+ let(:path) { "/a/dummy/netrc/path" }
32
39
  it "consults Conjur::Config for netrc_path" do
33
40
  expect(Netrc).to receive(:read).with(path).and_return netrc = double("netrc")
34
41
  expect(Conjur::Authn.netrc).to eq(netrc)
35
42
  end
36
43
  end
44
+
37
45
  context "without specified netrc_path" do
38
46
  let(:path) { nil }
39
47
  it "uses default netrc path" do
@@ -44,6 +44,16 @@ describe Conjur::Command::Authn do
44
44
  end
45
45
  end
46
46
  end
47
+
48
+ context "when login credentials are available in the environment" do
49
+ before do
50
+ expect(ENV).to receive(:[]).with("CONJUR_AUTHN_LOGIN").and_return username
51
+ expect(ENV).to receive(:[]).with("CONJUR_AUTHN_API_KEY").and_return 'the-password'
52
+ it "prints the current account and username to stdout" do
53
+ expect { invoke }.to write({ account: account, username: username }.to_json)
54
+ end
55
+ end
56
+ end
47
57
 
48
58
  context "when logged in", logged_in: true do
49
59
  describe_command 'authn:logout' do
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'highline'
2
3
 
3
4
  GITHUB_FP = "SHA1 Fingerprint=A0:C4:A7:46:00:ED:A7:2D:C0:BE:CB:9A:8C:B6:07:CA:58:EE:74:5E"
4
5
  GITHUB_CERT = <<EOF
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conjur-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.18.0
4
+ version: 4.18.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafal Rzepecki
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-07 00:00:00.000000000 Z
12
+ date: 2015-01-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -29,16 +29,16 @@ dependencies:
29
29
  name: conjur-api
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '>='
32
+ - - ~>
33
33
  - !ruby/object:Gem::Version
34
- version: 4.11.0
34
+ version: 4.11.2
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '>='
39
+ - - ~>
40
40
  - !ruby/object:Gem::Version
41
- version: 4.11.0
41
+ version: 4.11.2
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: gli
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -71,16 +71,16 @@ dependencies:
71
71
  name: netrc
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '>='
74
+ - - ~>
75
75
  - !ruby/object:Gem::Version
76
- version: '0'
76
+ version: 0.10.2
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
81
+ - - ~>
82
82
  - !ruby/object:Gem::Version
83
- version: '0'
83
+ version: 0.10.2
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: methadone
86
86
  requirement: !ruby/object:Gem::Requirement