conjur-cli 2.6.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -4,4 +4,4 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
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'
7
+ gem 'conjur-api', git: 'https://github.com/inscitiv/api-ruby.git', branch: 'master'
data/bin/conjur CHANGED
@@ -1,4 +1,24 @@
1
1
  #!/usr/bin/env ruby
2
+ #
3
+ # Copyright (C) 2013 Conjur Inc
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ # this software and associated documentation files (the "Software"), to deal in
7
+ # the Software without restriction, including without limitation the rights to
8
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ # the Software, and to permit persons to whom the Software is furnished to do so,
10
+ # subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+ #
2
22
 
3
23
  require 'conjur/cli'
4
24
 
data/bin/jsonfield CHANGED
@@ -1,4 +1,24 @@
1
1
  #!/usr/bin/env ruby
2
+ #
3
+ # Copyright (C) 2013 Conjur Inc
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ # this software and associated documentation files (the "Software"), to deal in
7
+ # the Software without restriction, including without limitation the rights to
8
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ # the Software, and to permit persons to whom the Software is furnished to do so,
10
+ # subject to the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be included in all
13
+ # copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+ #
2
22
 
3
23
  require 'json'
4
24
  require 'methadone'
data/conjur.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Conjur::VERSION
17
17
 
18
- gem.add_dependency 'conjur-api', '~> 2.4'
18
+ gem.add_dependency 'conjur-api', '>=4.0'
19
19
  gem.add_dependency 'gli'
20
20
  gem.add_dependency 'highline'
21
21
  gem.add_dependency 'netrc'
data/lib/conjur.rb CHANGED
@@ -1,2 +1,21 @@
1
+ #
2
+ # Copyright (C) 2013 Conjur Inc
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ # this software and associated documentation files (the "Software"), to deal in
6
+ # the Software without restriction, including without limitation the rights to
7
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ # the Software, and to permit persons to whom the Software is furnished to do so,
9
+ # subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ #
1
21
  require "conjur/version"
2
-
data/lib/conjur/authn.rb CHANGED
@@ -1,3 +1,23 @@
1
+ #
2
+ # Copyright (C) 2013 Conjur Inc
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ # this software and associated documentation files (the "Software"), to deal in
6
+ # the Software without restriction, including without limitation the rights to
7
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ # the Software, and to permit persons to whom the Software is furnished to do so,
9
+ # subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ #
1
21
  require 'highline'
2
22
  require 'conjur/api'
3
23
  require 'netrc'
@@ -66,4 +86,4 @@ module Conjur::Authn
66
86
  cls.new_from_key(*get_credentials(options))
67
87
  end
68
88
  end
69
- end
89
+ end
data/lib/conjur/cli.rb CHANGED
@@ -1,3 +1,23 @@
1
+ #
2
+ # Copyright (C) 2013 Conjur Inc
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ # this software and associated documentation files (the "Software"), to deal in
6
+ # the Software without restriction, including without limitation the rights to
7
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ # the Software, and to permit persons to whom the Software is furnished to do so,
9
+ # subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ #
1
21
  require 'gli'
2
22
  require 'conjur/config'
3
23
  require 'conjur/log'
@@ -68,4 +88,4 @@ module Conjur
68
88
  true
69
89
  end
70
90
  end
71
- end
91
+ end
@@ -1,3 +1,23 @@
1
+ #
2
+ # Copyright (C) 2013 Conjur Inc
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ # this software and associated documentation files (the "Software"), to deal in
6
+ # the Software without restriction, including without limitation the rights to
7
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ # the Software, and to permit persons to whom the Software is furnished to do so,
9
+ # subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ #
1
21
  module Conjur
2
22
  class Command
3
23
  @@api = nil
@@ -21,6 +41,28 @@ module Conjur
21
41
  @@api ||= Conjur::Authn.connect
22
42
  end
23
43
 
44
+ # injects account into 2-tokens id
45
+ def full_resource_id id
46
+ parts = id.split(':') unless id.nil?
47
+ if id.blank? or parts.size < 2
48
+ raise "Expecting at least two tokens in #{id}"
49
+ end
50
+ if parts.size == 2
51
+ id = [conjur_account, parts].flatten.join(":")
52
+ end
53
+ id
54
+ end
55
+
56
+ # removes accounts from 3+-tokens id, extracts kind
57
+ def get_kind_and_id_from_args args, argname='id'
58
+ flat_id = require_arg(args, argname)
59
+ tokens=flat_id.split(':')
60
+ raise "At least 2 tokens expected in #{flat_id}" if tokens.size<2
61
+ tokens.shift if tokens.size>=3 # get rid of account
62
+ kind=tokens.shift.gsub('-','_')
63
+ [kind, tokens.join(':')]
64
+ end
65
+
24
66
  def conjur_account
25
67
  Conjur::Core::API.conjur_account
26
68
  end
@@ -45,4 +87,4 @@ module Conjur
45
87
  end
46
88
  end
47
89
  end
48
- end
90
+ end
@@ -1,3 +1,23 @@
1
+ #
2
+ # Copyright (C) 2013 Conjur Inc
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ # this software and associated documentation files (the "Software"), to deal in
6
+ # the Software without restriction, including without limitation the rights to
7
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ # the Software, and to permit persons to whom the Software is furnished to do so,
9
+ # subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ #
1
21
  require 'conjur/authn'
2
22
  require 'conjur/command'
3
23
 
@@ -5,22 +25,27 @@ class Conjur::Command::Assets < Conjur::Command
5
25
  self.prefix = :asset
6
26
 
7
27
  desc "Create an asset"
8
- arg_name "kind id"
28
+ arg_name "kind:id"
9
29
  command :create do |c|
10
30
  acting_as_option(c)
11
31
 
12
32
  c.action do |global_options, options, args|
13
- kind = require_arg(args, 'kind').gsub('-', '_')
14
-
33
+ # NOTE: no generic functions there, as :id is optional
34
+ kind, id = require_arg(args, 'kind:id').split(':')
35
+ id = nil if id.blank?
36
+ kind.gsub!('-', '_')
37
+
38
+
15
39
  m = "create_#{kind}"
16
40
  record = if [ 1, -1 ].member?(api.method(m).arity)
17
- id = args.shift
18
41
  if id
19
42
  options[:id] = id
20
43
  end
21
44
  api.send(m, options)
22
45
  else
23
- id = require_arg(args, 'id')
46
+ unless id
47
+ raise "for kind #{kind} id should be specified explicitly after colon"
48
+ end
24
49
  api.send(m, id, options)
25
50
  end
26
51
  display(record, options)
@@ -28,21 +53,19 @@ class Conjur::Command::Assets < Conjur::Command
28
53
  end
29
54
 
30
55
  desc "Show an asset"
31
- arg_name "kind id"
56
+ arg_name "id"
32
57
  command :show do |c|
33
58
  c.action do |global_options,options,args|
34
- kind = require_arg(args, "kind").gsub('-', '_')
35
- id = require_arg(args, "resource-id")
59
+ kind, id = get_kind_and_id_from_args(args, 'id')
36
60
  display api.send(kind, id).attributes
37
61
  end
38
62
  end
39
63
 
40
64
  desc "Checks for the existance of an asset"
41
- arg_name "kind id"
65
+ arg_name "id"
42
66
  command :exists do |c|
43
67
  c.action do |global_options,options,args|
44
- kind = require_arg(args, "kind").gsub('-', '_')
45
- id = require_arg(args, "id")
68
+ kind, id = get_kind_and_id_from_args(args, 'id')
46
69
  puts api.send(kind, id).exists?
47
70
  end
48
71
  end
@@ -59,14 +82,13 @@ class Conjur::Command::Assets < Conjur::Command
59
82
  end
60
83
 
61
84
  desc "Add a member to an asset"
62
- arg_name "kind id role-name member"
85
+ arg_name "id role-name member"
63
86
  command :"members:add" do |c|
64
87
  c.desc "Grant with admin option"
65
88
  c.flag [:a, :admin]
66
89
 
67
90
  c.action do |global_options, options, args|
68
- kind = require_arg(args, "kind").gsub('-', '_')
69
- id = require_arg(args, "resource-id")
91
+ kind, id = get_kind_and_id_from_args(args, 'id')
70
92
  role_name = require_arg(args, 'role-name')
71
93
  member = require_arg(args, 'member')
72
94
  admin_option = !options.delete(:admin).nil?
@@ -81,11 +103,10 @@ class Conjur::Command::Assets < Conjur::Command
81
103
  end
82
104
 
83
105
  desc "Remove a member from an asset"
84
- arg_name "kind id role-name member"
106
+ arg_name "id role-name member"
85
107
  command :"members:remove" do |c|
86
108
  c.action do |global_options, options, args|
87
- kind = require_arg(args, "kind").gsub('-', '_')
88
- id = require_arg(args, "resource-id")
109
+ kind, id = get_kind_and_id_from_args(args, 'id')
89
110
  role_name = require_arg(args, 'role-name')
90
111
  member = require_arg(args, 'member')
91
112
  admin_option = !options.delete(:admin).nil?
File without changes
@@ -1,3 +1,23 @@
1
+ #
2
+ # Copyright (C) 2013 Conjur Inc
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ # this software and associated documentation files (the "Software"), to deal in
6
+ # the Software without restriction, including without limitation the rights to
7
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ # the Software, and to permit persons to whom the Software is furnished to do so,
9
+ # subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ #
1
21
  require 'conjur/authn'
2
22
  require 'conjur/command'
3
23
 
@@ -62,4 +82,4 @@ DESC
62
82
  end
63
83
  end
64
84
  end
65
- end
85
+ end
@@ -1,3 +1,23 @@
1
+ #
2
+ # Copyright (C) 2013 Conjur Inc
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ # this software and associated documentation files (the "Software"), to deal in
6
+ # the Software without restriction, including without limitation the rights to
7
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ # the Software, and to permit persons to whom the Software is furnished to do so,
9
+ # subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ #
1
21
  require 'conjur/command'
2
22
 
3
23
  class Conjur::Command::Field < Conjur::Command
@@ -1,3 +1,23 @@
1
+ #
2
+ # Copyright (C) 2013 Conjur Inc
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ # this software and associated documentation files (the "Software"), to deal in
6
+ # the Software without restriction, including without limitation the rights to
7
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ # the Software, and to permit persons to whom the Software is furnished to do so,
9
+ # subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ #
1
21
  require 'conjur/authn'
2
22
  require 'conjur/command'
3
23
 
@@ -61,4 +81,4 @@ class Conjur::Command::Groups < Conjur::Command
61
81
  puts "Membership revoked"
62
82
  end
63
83
  end
64
- end
84
+ end
@@ -1,3 +1,23 @@
1
+ #
2
+ # Copyright (C) 2013 Conjur Inc
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ # this software and associated documentation files (the "Software"), to deal in
6
+ # the Software without restriction, including without limitation the rights to
7
+ # use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
8
+ # the Software, and to permit persons to whom the Software is furnished to do so,
9
+ # subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in all
12
+ # copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
16
+ # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
17
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
18
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+ #
1
21
  require 'conjur/authn'
2
22
  require 'conjur/command'
3
23
 
@@ -5,7 +25,7 @@ class Conjur::Command::Hosts < Conjur::Command
5
25
  self.prefix = :host
6
26
 
7
27
  desc "Create a new host"
8
- arg_name "id?"
28
+ arg_name "host"
9
29
  command :create do |c|
10
30
  c.arg_name "password"
11
31
  c.flag [:p,:password]
@@ -30,4 +50,4 @@ class Conjur::Command::Hosts < Conjur::Command
30
50
  $stderr.puts "curl -L #{enrollment_url} | bash"
31
51
  end
32
52
  end
33
- end
53
+ end