conjur-cli 2.1.9 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore CHANGED
@@ -1,3 +1,7 @@
1
+ *.cert
2
+ *.credential
3
+ *.json
4
+ *.pem
1
5
  testdata/
2
6
  *.gem
3
7
  *.rbc
@@ -13,8 +17,11 @@ lib/bundler/man
13
17
  pkg
14
18
  rdoc
15
19
  spec/reports
20
+ features/reports
16
21
  test/tmp
17
22
  test/version_tmp
18
23
  tmp
19
24
  .kateproject.d
20
25
  .idea
26
+ .rvmrc
27
+
data/Gemfile CHANGED
@@ -3,8 +3,9 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in conjur.gemspec
4
4
  gemspec
5
5
 
6
- gem 'slosilo', git: 'https://github.com/inscitiv/slosilo.git', branch: 'master'
7
- gem 'conjur-api', '~> 2.2', git: 'https://github.com/inscitiv/api-ruby.git', branch: 'master'
6
+ # when developing in parallel, you might want to uncomment the following:
7
+ # gem 'conjur-api', git: 'https://github.com/inscitiv/api-ruby.git', branch: 'master'
8
+
8
9
  gem 'conjur-asset-cmi-study', git: 'https://inscitiv-ops-dev:Me5aswes@github.com/inscitiv/conjur-asset-cmi-study', branch: 'master'
9
10
  gem 'conjur-asset-environment', git: 'https://inscitiv-ops-dev:Me5aswes@github.com/inscitiv/conjur-asset-environment', branch: 'master'
10
11
  gem 'conjur-asset-deployment', git: 'https://inscitiv-ops-dev:Me5aswes@github.com/inscitiv/conjur-asset-deployment', branch: 'master'
data/Rakefile CHANGED
@@ -1,20 +1,19 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
+ require 'ci/reporter/rake/rspec'
4
+ require 'ci/reporter/rake/cucumber'
5
+ require 'cucumber'
6
+ require 'cucumber/rake/task'
7
+ require 'rspec/core/rake_task'
3
8
 
4
- begin
5
- require 'rspec/core/rake_task'
6
- RSpec::Core::RakeTask.new(:spec)
7
- rescue LoadError
8
- $stderr.puts "RSpec Rake tasks not available in environment #{ENV['RACK_ENV']}"
9
- end
9
+ RSpec::Core::RakeTask.new :spec
10
+ Cucumber::Rake::Task.new :features
10
11
 
11
- task :jenkins do
12
- if ENV['BUILD_NUMBER']
13
- File.write('build_number', ENV['BUILD_NUMBER'])
14
- end
15
- require 'ci/reporter/rake/rspec'
16
- Rake::Task["ci:setup:rspec"].invoke
17
- Rake::Task["spec"].invoke
12
+ task :jenkins => ['ci:setup:rspec', :spec, 'ci:setup:cucumber_report_cleanup'] do
13
+ Cucumber::Rake::Task.new do |t|
14
+ t.cucumber_opts = "--format CI::Reporter::Cucumber"
15
+ end.runner.run
16
+ File.write('build_number', ENV['BUILD_NUMBER']) if ENV['BUILD_NUMBER']
18
17
  end
19
18
 
20
- task default: :spec
19
+ task default: [:spec, :features]
data/bin/jsonfield ADDED
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'json'
4
+ require 'methadone'
5
+
6
+ class JsonField
7
+ include Methadone::Main
8
+ include Methadone::CLILogging
9
+
10
+ description "parse JSON and extract a field value"
11
+ arg :json_path, "path to object to extract, eg. 'headers.0' or 'document.author.name'"
12
+ arg :json, :optional, "data to parse (reads from stdin if not given)"
13
+
14
+ main do |path, input = nil|
15
+ input ||= STDIN.read
16
+ data = JSON.parse input
17
+ result = data.extract_field *(path.split '.', -1)
18
+ puts result
19
+ end
20
+ end
21
+
22
+ class Hash
23
+ def extract_field head = nil, *tail
24
+ return self unless head
25
+ field_not_found! head unless has_key? head
26
+ self[head].extract_field *tail
27
+ end
28
+ end
29
+
30
+ class Array
31
+ def extract_field head = nil, *tail
32
+ return self unless head
33
+ index = Integer(head) rescue field_not_found!(head)
34
+ field_not_found! index if index >= size
35
+ self[index].extract_field *tail
36
+ end
37
+ end
38
+
39
+ class Object
40
+ def extract_field head = nil, *tail
41
+ field_not_found! head if head
42
+ self
43
+ end
44
+
45
+ def field_not_found! field
46
+ raise Methadone::Error.new(2, "No field #{field} in #{inspect}")
47
+ end
48
+ end
49
+
50
+ JsonField.go!
data/conjur.gemspec CHANGED
@@ -14,13 +14,17 @@ Gem::Specification.new do |gem|
14
14
  gem.require_paths = ["lib"]
15
15
  gem.version = Conjur::VERSION
16
16
 
17
- gem.add_dependency 'conjur-api'
17
+ gem.add_dependency 'conjur-api', '~> 2.4'
18
18
  gem.add_dependency 'gli'
19
19
  gem.add_dependency 'highline'
20
20
  gem.add_dependency 'netrc'
21
+ gem.add_dependency 'methadone'
21
22
 
22
23
  gem.add_runtime_dependency 'cas_rest_client'
23
24
 
24
25
  gem.add_development_dependency 'rspec'
25
26
  gem.add_development_dependency 'simplecov'
27
+ gem.add_development_dependency 'aruba'
28
+ gem.add_development_dependency 'ci_reporter', '~> 1.8'
29
+ gem.add_development_dependency 'rake', '~> 10.0'
26
30
  end
@@ -0,0 +1,49 @@
1
+ Feature: Extracting JSON fields
2
+
3
+ In order to use conjur output in shell scripts
4
+ As a Conjur user
5
+ I want to extract fields from JSON data
6
+
7
+ Scenario: An array element
8
+ When I successfully run `jsonfield 2 '[1, 2, 3]'`
9
+ Then the output should contain "3"
10
+
11
+ Scenario: An out of bounds array element
12
+ When I run `jsonfield 3 '[1, 2, 3]'`
13
+ Then the output should contain "No field 3"
14
+ And the exit status should be 2
15
+
16
+ Scenario: A hash element
17
+ When I successfully run `jsonfield a '{"a": 4}'`
18
+ Then the output should contain "4"
19
+
20
+ Scenario: A non-existent hash element
21
+ When I run `jsonfield b '{"a": 4}'`
22
+ Then the output should contain "No field b"
23
+ And the exit status should be 2
24
+
25
+ Scenario: Nested elements
26
+ When I successfully run `jsonfield 0.a.1.b '[{"a": [42, {"b": "foo", "d": null}, 33], "bar": true}]'`
27
+ Then the output should contain "foo"
28
+
29
+ Scenario: Standard input
30
+ Given a file named "test.json" with:
31
+ """
32
+ {
33
+ "a": [
34
+ 42,
35
+ {
36
+ "b": "foo",
37
+ "d": null
38
+ },
39
+ 33
40
+ ],
41
+ "bar": true
42
+ }
43
+ """
44
+ When I run `cat test.json | jsonfield 0.a.1.b`
45
+ Then the output should contain "foo"
46
+
47
+ Scenario: An element with hyphen in key
48
+ When I successfully run `jsonfield variables.db-password '{"variables": {"db-password": "foo"}}'`
49
+ Then the output should contain "foo"
@@ -0,0 +1,4 @@
1
+ require 'simplecov'
2
+ require 'aruba/cucumber'
3
+
4
+ SimpleCov.start
data/lib/conjur/cli.rb CHANGED
@@ -19,24 +19,25 @@ module Conjur
19
19
  end
20
20
  end
21
21
 
22
- load_config
23
-
24
- ENV['CONJUR_ENV'] = Config[:env] || "production"
25
- ENV['CONJUR_STACK'] = Config[:stack] if Config[:stack]
26
- ENV['CONJUR_STACK'] ||= 'v3' if ENV['CONJUR_ENV'] == 'production'
27
- ENV['CONJUR_ACCOUNT'] = Config[:account] or raise "Missing configuration setting: account. Please set it in ~/.conjurrc"
28
-
29
- Conjur::Config.plugins.each do |plugin|
30
- require "conjur-asset-#{plugin}"
31
- end
32
22
 
33
23
  commands_from 'conjur/command'
34
24
 
35
- if Conjur.log
36
- Conjur.log << "Using host #{Conjur::Authn::API.host}\n"
37
- end
38
-
39
25
  pre do |global,command,options,args|
26
+ load_config
27
+
28
+ ENV['CONJUR_ENV'] = Config[:env] || "production"
29
+ ENV['CONJUR_STACK'] = Config[:stack] if Config[:stack]
30
+ ENV['CONJUR_STACK'] ||= 'v3' if ENV['CONJUR_ENV'] == 'production'
31
+ ENV['CONJUR_ACCOUNT'] = Config[:account] or raise "Missing configuration setting: account. Please set it in ~/.conjurrc"
32
+
33
+ Conjur::Config.plugins.each do |plugin|
34
+ require "conjur-asset-#{plugin}"
35
+ end
36
+
37
+ if Conjur.log
38
+ Conjur.log << "Using host #{Conjur::Authn::API.host}\n"
39
+ end
40
+
40
41
  require 'active_support/core_ext'
41
42
  options.delete_if{|k,v| v.blank?}
42
43
  options.symbolize_keys!
@@ -57,9 +58,7 @@ module Conjur
57
58
  end
58
59
 
59
60
  on_error do |exception|
60
- if exception.is_a?(GLI::StandardException)
61
- # pass
62
- elsif exception.is_a?(RestClient::Exception)
61
+ if exception.is_a?(RestClient::Exception)
63
62
  begin
64
63
  body = JSON.parse(exception.response.body)
65
64
  $stderr.puts body['error']
@@ -54,9 +54,12 @@ DESC
54
54
 
55
55
  desc "Prints out the current logged in username"
56
56
  command :whoami do |c|
57
- c.action do |global_options,options,args|
58
- token = Conjur::Authn.authenticate(options)
59
- puts({ account: Conjur::Core::API.conjur_account, username: token['data'] }.to_json)
57
+ c.action do
58
+ if creds = Conjur::Authn.read_credentials
59
+ puts({account: Conjur::Core::API.conjur_account, username: creds[0]}.to_json)
60
+ else
61
+ exit_now! 'Not logged in.', -1
62
+ end
60
63
  end
61
64
  end
62
65
  end
@@ -3,13 +3,13 @@ require 'conjur/command'
3
3
  class Conjur::Command::Field < Conjur::Command
4
4
  self.prefix = :field
5
5
 
6
- desc "Selects a field from structured input"
7
- arg_name "pattern (value | STDIN)"
6
+ desc "(Deprecated. See standalone jsonfield command instead.)"
8
7
  command :select do |c|
9
8
  c.action do |global_options,options,args|
10
9
  pattern = require_arg(args, 'pattern')
11
10
  value = args.shift || STDIN.read
12
-
11
+
12
+ warn "field:select is deprecated. Please use jsonfield command instead."
13
13
  require 'json'
14
14
  json = JSON.parse(value)
15
15
  class << json
@@ -27,7 +27,7 @@ class Conjur::Command::Hosts < Conjur::Command
27
27
  enrollment_url = api.host(id).enrollment_url
28
28
  puts enrollment_url
29
29
  $stderr.puts "On the target host, please execute the following command:"
30
- $stderr.puts "sudo true && curl -L #{enrollment_url} | sudo bash"
30
+ $stderr.puts "curl -L #{enrollment_url} | bash"
31
31
  end
32
32
  end
33
33
  end
@@ -15,6 +15,7 @@ class Conjur::Command::Resources < Conjur::Command
15
15
  id = require_arg(args, "resource-id")
16
16
  resource = api.resource([ conjur_account, kind, id ].join(':'))
17
17
  resource.create(options)
18
+ display resource.attributes
18
19
  end
19
20
  end
20
21
 
@@ -48,6 +49,7 @@ class Conjur::Command::Resources < Conjur::Command
48
49
  role = require_arg(args, "role")
49
50
  privilege = require_arg(args, "privilege")
50
51
  api.resource([ conjur_account, kind, id ].join(':')).permit privilege, role
52
+ puts "Permission granted"
51
53
  end
52
54
  end
53
55
 
@@ -60,6 +62,7 @@ class Conjur::Command::Resources < Conjur::Command
60
62
  role = require_arg(args, "role")
61
63
  privilege = require_arg(args, "privilege")
62
64
  api.resource([ conjur_account, kind, id ].join(':')).deny privilege, role
65
+ puts "Permission revoked"
63
66
  end
64
67
  end
65
68
 
@@ -84,6 +87,7 @@ class Conjur::Command::Resources < Conjur::Command
84
87
  id = require_arg(args, "resource-id")
85
88
  owner = require_arg(args, "owner")
86
89
  api.resource([ conjur_account, kind, id ].join(':')).give_to owner
90
+ puts "Role granted"
87
91
  end
88
92
  end
89
93
 
@@ -13,6 +13,7 @@ class Conjur::Command::Roles < Conjur::Command
13
13
  id = require_arg(args, 'role')
14
14
  role = api.role(id)
15
15
  role.create(options)
16
+ puts "Created #{role}"
16
17
  end
17
18
  end
18
19
 
@@ -30,24 +31,18 @@ class Conjur::Command::Roles < Conjur::Command
30
31
  arg_name "role"
31
32
  command :memberships do |c|
32
33
  c.action do |global_options,options,args|
33
- role = args.shift || api.user(api.username).roleid
34
- display api.role(role).all.map(&:roleid)
34
+ roleid = args.shift
35
+ role = roleid.nil? && api.current_role || api.role(roleid)
36
+ display role.all.map(&:roleid)
35
37
  end
36
38
  end
37
39
 
38
- desc "Lists members of the role"
40
+ desc "Lists all members of the role"
39
41
  arg_name "role"
40
42
  command :members do |c|
41
- c.desc "List all members recursively"
42
- c.switch :a
43
-
44
43
  c.action do |global_options,options,args|
45
44
  role = args.shift || api.user(api.username).roleid
46
- if options[:a]
47
- display api.role(role).all.map(&:roleid)
48
- else
49
- display api.role(role).members.map(&:member).map(&:roleid)
50
- end
45
+ display api.role(role).members.map(&:member).map(&:roleid)
51
46
  end
52
47
  end
53
48
 
@@ -62,6 +57,7 @@ class Conjur::Command::Roles < Conjur::Command
62
57
  member = require_arg(args, 'member')
63
58
  role = api.role(id)
64
59
  role.grant_to member, options[:admin]
60
+ puts "Role granted"
65
61
  end
66
62
  end
67
63
 
@@ -73,6 +69,7 @@ class Conjur::Command::Roles < Conjur::Command
73
69
  member = require_arg(args, 'member')
74
70
  role = api.role(id)
75
71
  role.revoke_from member
72
+ puts "Role revoked"
76
73
  end
77
74
  end
78
75
  end
@@ -1,3 +1,3 @@
1
1
  module Conjur
2
- VERSION = "2.1.9"
2
+ VERSION = "2.2.1"
3
3
  end
@@ -1,39 +1,25 @@
1
1
  require 'spec_helper'
2
- require 'tempfile'
3
- require 'write_expectation'
4
2
 
5
3
  describe Conjur::Command::Authn do
6
- let(:netrcfile) { Tempfile.new 'authtest' }
7
- let(:netrc) { Netrc.read(netrcfile.path) }
8
- let(:host) { 'https://authn.example.com' }
9
-
10
- before do
11
- Conjur::Authn.stub netrc: netrc, host: host
12
- end
13
-
14
- context "when not logged in" do
4
+ context logged_in: false do
15
5
  describe_command 'authn:whoami' do
16
6
  it "errors out" do
17
- expect{ invoke }.to write(/not logged in/i).to :stderr
7
+ expect { invoke }.to raise_error(GLI::CustomExit, /not logged in/i)
18
8
  end
19
9
  end
20
10
  end
21
11
 
22
- context "when logged in" do
23
- let(:username) { 'dknuth' }
24
- let(:api_key) { 'sekrit' }
25
- before { netrc[host] = [username, api_key] }
26
-
12
+ context logged_in: true do
27
13
  describe_command 'authn:logout' do
28
14
  it "deletes credentials" do
29
15
  invoke
30
- netrc[host].should_not be
16
+ netrc[authn_host].should_not be
31
17
  end
32
18
  end
33
19
 
34
20
  describe_command 'authn:whoami' do
35
- it "prints the current username to stdout" do
36
- expect { invoke }.to write username
21
+ it "prints the current account and username to stdout" do
22
+ expect { invoke }.to write({ account: account, username: username }.to_json)
37
23
  end
38
24
  end
39
25
  end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe Conjur::Command::Roles, logged_in: true do
4
+ let(:all_roles) { %w(foo:user:joerandom foo:something:cool foo:something:else foo:group:admins) }
5
+ let(:role) do
6
+ double "the role", all: all_roles.map{|r| double r, roleid: r }
7
+ end
8
+
9
+ before do
10
+ api.stub(:role).with(rolename).and_return role
11
+ end
12
+
13
+ context "when logged in as a user" do
14
+ let(:username) { "joerandom" }
15
+ let(:rolename) { "user:joerandom" }
16
+
17
+ describe_command "role:memberships" do
18
+ it "lists all roles" do
19
+ JSON::parse(expect { invoke }.to write).should == all_roles
20
+ end
21
+ end
22
+
23
+ describe_command "role:memberships foo:bar" do
24
+ let(:rolename) { 'foo:bar' }
25
+ it "lists all roles of foo:bar" do
26
+ JSON::parse(expect { invoke }.to write).should == all_roles
27
+ end
28
+ end
29
+ end
30
+
31
+ context "when logged in as a host" do
32
+ let(:username) { "host/foobar" }
33
+ let(:rolename) { "host:foobar" }
34
+
35
+ describe_command "role:memberships" do
36
+ it "lists all roles" do
37
+ JSON::parse(expect { invoke }.to write).should == all_roles
38
+ end
39
+ end
40
+ end
41
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "rubygems"
2
2
  require "bundler/setup"
3
+ require 'tempfile'
3
4
 
4
5
  require "simplecov"
5
6
  SimpleCov.start
@@ -9,11 +10,54 @@ module RSpec::Core::DSL
9
10
  describe *argv do
10
11
  let(:invoke) do
11
12
  Conjur::CLI.error_device = $stderr
12
- Conjur::CLI.run argv
13
+ Conjur::CLI.run argv.first.split(' ')
13
14
  end
14
15
  instance_eval &block
15
16
  end
16
17
  end
17
18
  end
18
19
 
20
+ shared_context "with fake endpoints and test config" do
21
+ let(:authn_host) { 'https://authn.example.com' }
22
+ let(:authz_host) { 'https://authz.example.com' }
23
+ let(:core_host) { 'https://core.example.com' }
24
+ before do
25
+ Conjur::Authn::API.stub host: authn_host
26
+ Conjur::Authz::API.stub host: authz_host
27
+ Conjur::Core::API.stub host: core_host
28
+
29
+ ENV['GLI_DEBUG'] = 'true'
30
+ end
31
+ end
32
+
33
+ shared_context "with mock authn" do
34
+ include_context "with fake endpoints and test config"
35
+ let(:netrcfile) { Tempfile.new 'authtest' }
36
+ let(:netrc) { Netrc.read(netrcfile.path) }
37
+ let(:account) { 'the-account' }
38
+ before do
39
+ Conjur::Core::API.stub conjur_account: account
40
+ Conjur::Authn.stub netrc: netrc, host: authn_host
41
+ Conjur::Config.merge 'account' => account
42
+ end
43
+
44
+ end
45
+
46
+ shared_context "when logged in", logged_in: true do
47
+ include_context "with mock authn"
48
+ let(:username) { 'dknuth' }
49
+ let(:api_key) { 'sekrit' }
50
+ let(:api) { Conjur::API.new_from_token({ 'data' => username }) }
51
+ before do
52
+ netrc[authn_host] = [username, api_key]
53
+ Conjur::Command.stub api: api
54
+ end
55
+ end
56
+
57
+ shared_context "when not logged in", logged_in: false do
58
+ include_context "with mock authn"
59
+ end
60
+
61
+ require 'write_expectation'
62
+
19
63
  require 'conjur/cli'
@@ -27,6 +27,7 @@ RSpec::Matchers.define :write do |message|
27
27
  case message
28
28
  when String then output.include? message
29
29
  when Regexp then output.match message
30
+ when nil then output
30
31
  else fail("Allowed types for write `message` are String or Regexp, got `#{message.class}`")
31
32
  end
32
33
  end
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: 2.1.9
4
+ version: 2.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,10 +10,26 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-06-04 00:00:00.000000000 Z
13
+ date: 2013-06-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: conjur-api
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: '2.4'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: '2.4'
31
+ - !ruby/object:Gem::Dependency
32
+ name: gli
17
33
  requirement: !ruby/object:Gem::Requirement
18
34
  none: false
19
35
  requirements:
@@ -29,7 +45,7 @@ dependencies:
29
45
  - !ruby/object:Gem::Version
30
46
  version: '0'
31
47
  - !ruby/object:Gem::Dependency
32
- name: gli
48
+ name: highline
33
49
  requirement: !ruby/object:Gem::Requirement
34
50
  none: false
35
51
  requirements:
@@ -45,7 +61,7 @@ dependencies:
45
61
  - !ruby/object:Gem::Version
46
62
  version: '0'
47
63
  - !ruby/object:Gem::Dependency
48
- name: highline
64
+ name: netrc
49
65
  requirement: !ruby/object:Gem::Requirement
50
66
  none: false
51
67
  requirements:
@@ -61,7 +77,7 @@ dependencies:
61
77
  - !ruby/object:Gem::Version
62
78
  version: '0'
63
79
  - !ruby/object:Gem::Dependency
64
- name: netrc
80
+ name: methadone
65
81
  requirement: !ruby/object:Gem::Requirement
66
82
  none: false
67
83
  requirements:
@@ -124,25 +140,76 @@ dependencies:
124
140
  - - ! '>='
125
141
  - !ruby/object:Gem::Version
126
142
  version: '0'
143
+ - !ruby/object:Gem::Dependency
144
+ name: aruba
145
+ requirement: !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ! '>='
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: ci_reporter
161
+ requirement: !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ~>
165
+ - !ruby/object:Gem::Version
166
+ version: '1.8'
167
+ type: :development
168
+ prerelease: false
169
+ version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
171
+ requirements:
172
+ - - ~>
173
+ - !ruby/object:Gem::Version
174
+ version: '1.8'
175
+ - !ruby/object:Gem::Dependency
176
+ name: rake
177
+ requirement: !ruby/object:Gem::Requirement
178
+ none: false
179
+ requirements:
180
+ - - ~>
181
+ - !ruby/object:Gem::Version
182
+ version: '10.0'
183
+ type: :development
184
+ prerelease: false
185
+ version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
187
+ requirements:
188
+ - - ~>
189
+ - !ruby/object:Gem::Version
190
+ version: '10.0'
127
191
  description:
128
192
  email:
129
193
  - divided.mind@gmail.com
130
194
  - kevin.gilpin@inscitiv.com
131
195
  executables:
132
196
  - conjur
197
+ - jsonfield
133
198
  extensions: []
134
199
  extra_rdoc_files: []
135
200
  files:
136
201
  - .gitignore
137
202
  - .kateproject
138
203
  - .project
139
- - .rvmrc
140
204
  - Gemfile
141
205
  - LICENSE
142
206
  - README.md
143
207
  - Rakefile
144
208
  - bin/conjur
209
+ - bin/jsonfield
145
210
  - conjur.gemspec
211
+ - features/jsonfield.feature
212
+ - features/support/env.rb
146
213
  - lib/conjur.rb
147
214
  - lib/conjur/authn.rb
148
215
  - lib/conjur/cli.rb
@@ -161,6 +228,7 @@ files:
161
228
  - lib/conjur/config.rb
162
229
  - lib/conjur/version.rb
163
230
  - spec/command/authn_spec.rb
231
+ - spec/command/roles_spec.rb
164
232
  - spec/spec_helper.rb
165
233
  - spec/write_expectation.rb
166
234
  homepage: https://github.com/inscitiv/cli-ruby
@@ -175,19 +243,28 @@ required_ruby_version: !ruby/object:Gem::Requirement
175
243
  - - ! '>='
176
244
  - !ruby/object:Gem::Version
177
245
  version: '0'
246
+ segments:
247
+ - 0
248
+ hash: -1479172198194627634
178
249
  required_rubygems_version: !ruby/object:Gem::Requirement
179
250
  none: false
180
251
  requirements:
181
252
  - - ! '>='
182
253
  - !ruby/object:Gem::Version
183
254
  version: '0'
255
+ segments:
256
+ - 0
257
+ hash: -1479172198194627634
184
258
  requirements: []
185
259
  rubyforge_project:
186
- rubygems_version: 1.8.24
260
+ rubygems_version: 1.8.25
187
261
  signing_key:
188
262
  specification_version: 3
189
263
  summary: Conjur command line interface
190
264
  test_files:
265
+ - features/jsonfield.feature
266
+ - features/support/env.rb
191
267
  - spec/command/authn_spec.rb
268
+ - spec/command/roles_spec.rb
192
269
  - spec/spec_helper.rb
193
270
  - spec/write_expectation.rb
data/.rvmrc DELETED
@@ -1 +0,0 @@
1
- rvm use 1.9.3@conjur-cli --create