terraform-enterprise-cli 0.0.6 → 0.0.7

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
  SHA256:
3
- metadata.gz: d8c43077659ff18b0945a0e89a23bb660791cda2b439fbb840465b32172be348
4
- data.tar.gz: 12191251744cca852d945b4062df6ff127c1327ef94938adeee0dbc39af49981
3
+ metadata.gz: 6f8ce8edb289989b106e16d161d8c7e6429a34fc938c6366ad77c55a266bcb0f
4
+ data.tar.gz: '029df67dff6d7626a8f021b366cf4eb5e179cf61d48d558be68c1c5259abb082'
5
5
  SHA512:
6
- metadata.gz: 755bb19cc68eaa0e5ddb4da594a5579f4a6e74cfda211d51539669e9af66b01e797c023112978ca16755525d1f94aef0b80a59f547b8f557f1eadefa33c0f119
7
- data.tar.gz: c3756d0d12e98d9d524f8abb8bfc00069ef62f6126c1f4fb353766ff75341a5b8421e477fd0508011c11ca25c3da314955430d3f572105aa24a7029c4fc90ba0
6
+ metadata.gz: a16d986d9358faee6f58e7f5433007f0c946ef920b57a24ed369dcae2026e53a28c65058ec2ac9493d16d646b0033cbe1e693d862acc5012152e2a3fed2b0b0c
7
+ data.tar.gz: e7eb62c94f4b534d9117548ef68b4e0360fd02d5536721ca1bef33bcedb8c7e8e3148fe9ca1da71eb72e360dec6174e2a2dba3092ffe253b3b0d523fbf4600fa
@@ -1,79 +1,3 @@
1
- require 'thor'
1
+ require 'terraform_enterprise/command_line/commands/main'
2
2
 
3
- require_relative 'terraform_enterprise/command_line/command'
4
- require_relative 'terraform_enterprise/command_line/commands/configuration_versions'
5
- require_relative 'terraform_enterprise/command_line/commands/oauth_tokens'
6
- require_relative 'terraform_enterprise/command_line/commands/organizations'
7
- require_relative 'terraform_enterprise/command_line/commands/policies'
8
- require_relative 'terraform_enterprise/command_line/commands/policy_checks'
9
- require_relative 'terraform_enterprise/command_line/commands/runs'
10
- require_relative 'terraform_enterprise/command_line/commands/teams'
11
- require_relative 'terraform_enterprise/command_line/commands/variables'
12
- require_relative 'terraform_enterprise/command_line/commands/workspaces'
13
-
14
- module TerraformEnterprise
15
- # Terraform Enterprise Command Line class
16
- class MainCommand < TerraformEnterprise::CommandLine::Command
17
- include TerraformEnterprise::CommandLine
18
-
19
- desc 'organizations <subcommand>', 'Manage organizations'
20
- subcommand 'organizations', OrganizationsCommand
21
-
22
- desc 'workspaces <subcommand>', 'Manage workspaces'
23
- subcommand 'workspaces', WorkspacesCommand
24
-
25
- desc 'oauth-tokens <subcommand>', 'Manage OAuth tokens'
26
- subcommand 'oauth_tokens', OAuthTokensCommand
27
-
28
- desc 'teams <subcommand>', 'Manage teams'
29
- subcommand 'teams', TeamsCommand
30
-
31
- desc 'variables <subcommand>', 'Manage variables'
32
- subcommand 'variables', VariablesCommand
33
-
34
- desc 'configuration-versions <subcommand>', 'Manage configuration versions'
35
- subcommand 'configuration_versions', ConfigurationVersionsCommand
36
-
37
- desc 'policies <subcommand>', 'Manage policies'
38
- subcommand 'policies', PoliciesCommand
39
-
40
- desc 'policy-checks <subcommand>', 'Manage policy checks'
41
- subcommand 'policy_checks', PolicyChecksCommand
42
-
43
- desc 'runs <subcommand>', 'Manage runs'
44
- subcommand 'runs', RunsCommand
45
-
46
- desc 'push <organization>/<workspace>', STRINGS[:push][:commands][:push]
47
- option :path, required: true, default: '.', desc: STRINGS[:push][:attributes][:path]
48
- def push(name)
49
- name_parts = name.split('/')
50
- organization_name = name_parts[0]
51
- workspace_name = name_parts[1]
52
- workspace_params = {
53
- organization: organization_name,
54
- workspace: workspace_name
55
- }
56
-
57
- begin
58
- content = tarball(options[:path])
59
- rescue
60
- error! "could not open that file or directory"
61
- end
62
-
63
- # Look up the workspace ID
64
- workspace_response = client.workspaces.get(workspace_params)
65
- workspace_id = workspace_response&.resource&.id
66
- error! "workspace '#{organization_name}/#{workspace_name}' was not found!" unless workspace_id
67
-
68
- # Create a configuration version and get upload-url
69
- configuration_version_response = client.configuration_versions.create(workspace: workspace_id)
70
- upload_url = (configuration_version_response&.resource&.attributes || {})['upload-url']
71
- error! "failed creationg configuration version with workspace id `#{workspace_id}`" unless upload_url
72
-
73
- upload_params = { content: content, url: upload_url }
74
- render client.configuration_versions.upload(upload_params)
75
- end
76
- end
77
- end
78
-
79
- TerraformEnterprise::MainCommand.start(ARGV)
3
+ TerraformEnterprise::CommandLine::Commands::MainCommand.start(ARGV)
@@ -1,3 +1,4 @@
1
+ require 'thor'
1
2
  require 'json'
2
3
  require 'terraform-enterprise-client'
3
4
 
@@ -16,12 +17,12 @@ module TerraformEnterprise
16
17
 
17
18
  class_option :host, type: :string, desc: CMD_STR[:host]
18
19
  class_option :token, type: :string, desc: CMD_STR[:token]
19
- class_option :color, type: :boolean, default: true, desc: CMD_STR[:color]
20
+ class_option :color, type: :boolean, desc: CMD_STR[:color]
20
21
  class_option :except, type: :array, desc: CMD_STR[:except]
21
22
  class_option :only, type: :array, desc: CMD_STR[:only]
22
- class_option :all, type: :boolean, default: false, desc: CMD_STR[:all]
23
- class_option :value, type: :boolean, default: false, desc: CMD_STR[:value]
24
- class_option :debug, type: :boolean, default: false, desc: CMD_STR[:debug]
23
+ class_option :all, type: :boolean, desc: CMD_STR[:all]
24
+ class_option :value, type: :boolean, desc: CMD_STR[:value]
25
+ class_option :debug, type: :boolean, desc: CMD_STR[:debug]
25
26
 
26
27
  no_commands do
27
28
  def render(obj, default_options = {})
@@ -2,35 +2,37 @@ require 'terraform_enterprise/command_line/command'
2
2
 
3
3
  module TerraformEnterprise
4
4
  module CommandLine
5
- # Configuration Version Commoand
6
- class ConfigurationVersionsCommand < TerraformEnterprise::CommandLine::Command
7
- ATTR_STR = STRINGS[:configuration_versions][:attributes]
8
- CMD_STR = STRINGS[:configuration_versions][:commands]
5
+ module Commands
6
+ # Configuration Version Commoand
7
+ class ConfigurationVersionsCommand < TerraformEnterprise::CommandLine::Command
8
+ ATTR_STR = STRINGS[:configuration_versions][:attributes]
9
+ CMD_STR = STRINGS[:configuration_versions][:commands]
9
10
 
10
- desc 'list', CMD_STR[:list]
11
- option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
12
- option :workspace_id, required: true, type: :string, desc: ATTR_STR[:workspace_id]
13
- def list
14
- render client.configuration_versions.list(workspace: options[:workspace_id])
15
- end
11
+ desc 'list', CMD_STR[:list]
12
+ option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
13
+ option :workspace_id, required: true, type: :string, desc: ATTR_STR[:workspace_id]
14
+ def list
15
+ render client.configuration_versions.list(workspace: options[:workspace_id])
16
+ end
16
17
 
17
- desc 'create', CMD_STR[:list]
18
- option :workspace_id, required: true, type: :string, desc: STRINGS[:options][:workspace_id]
19
- def create
20
- render client.configuration_versions.create(workspace: options[:workspace_id])
21
- end
18
+ desc 'create', CMD_STR[:list]
19
+ option :workspace_id, required: true, type: :string, desc: STRINGS[:options][:workspace_id]
20
+ def create
21
+ render client.configuration_versions.create(workspace: options[:workspace_id])
22
+ end
22
23
 
23
- desc 'get <id>', CMD_STR[:get]
24
- def get(id)
25
- render client.configuration_versions.get(id: id)
26
- end
24
+ desc 'get <id>', CMD_STR[:get]
25
+ def get(id)
26
+ render client.configuration_versions.get(id: id)
27
+ end
27
28
 
28
- desc 'upload <path> <upload-url>', CMD_STR[:upload]
29
- def upload(path, url)
30
- content = tarball(path)
31
- params = { content: content, url: url }
29
+ desc 'upload <path> <upload-url>', CMD_STR[:upload]
30
+ def upload(path, url)
31
+ content = tarball(path)
32
+ params = { content: content, url: url }
32
33
 
33
- render client.configuration_versions.upload(params)
34
+ render client.configuration_versions.upload(params)
35
+ end
34
36
  end
35
37
  end
36
38
  end
@@ -0,0 +1,80 @@
1
+ require 'terraform_enterprise/command_line/command'
2
+
3
+ require_relative 'configuration_versions'
4
+ require_relative 'oauth_tokens'
5
+ require_relative 'organizations'
6
+ require_relative 'policies'
7
+ require_relative 'policy_checks'
8
+ require_relative 'runs'
9
+ require_relative 'teams'
10
+ require_relative 'variables'
11
+ require_relative 'workspaces'
12
+
13
+ module TerraformEnterprise
14
+ module CommandLine
15
+ module Commands
16
+ # Terraform Enterprise Command Line class
17
+ class MainCommand < TerraformEnterprise::CommandLine::Command
18
+ include TerraformEnterprise::CommandLine::Commands
19
+
20
+ desc 'organizations <subcommand>', 'Manage organizations'
21
+ subcommand 'organizations', OrganizationsCommand
22
+
23
+ desc 'workspaces <subcommand>', 'Manage workspaces'
24
+ subcommand 'workspaces', WorkspacesCommand
25
+
26
+ desc 'oauth-tokens <subcommand>', 'Manage OAuth tokens'
27
+ subcommand 'oauth_tokens', OAuthTokensCommand
28
+
29
+ desc 'teams <subcommand>', 'Manage teams'
30
+ subcommand 'teams', TeamsCommand
31
+
32
+ desc 'variables <subcommand>', 'Manage variables'
33
+ subcommand 'variables', VariablesCommand
34
+
35
+ desc 'configuration-versions <subcommand>', 'Manage configuration versions'
36
+ subcommand 'configuration_versions', ConfigurationVersionsCommand
37
+
38
+ desc 'policies <subcommand>', 'Manage policies'
39
+ subcommand 'policies', PoliciesCommand
40
+
41
+ desc 'policy-checks <subcommand>', 'Manage policy checks'
42
+ subcommand 'policy_checks', PolicyChecksCommand
43
+
44
+ desc 'runs <subcommand>', 'Manage runs'
45
+ subcommand 'runs', RunsCommand
46
+
47
+ desc 'push <organization>/<workspace>', STRINGS[:push][:commands][:push]
48
+ option :path, required: true, default: '.', desc: STRINGS[:push][:attributes][:path]
49
+ def push(name)
50
+ name_parts = name.split('/')
51
+ organization_name = name_parts[0]
52
+ workspace_name = name_parts[1]
53
+ workspace_params = {
54
+ organization: organization_name,
55
+ workspace: workspace_name
56
+ }
57
+
58
+ begin
59
+ content = tarball(options[:path])
60
+ rescue
61
+ error! "could not open that file or directory"
62
+ end
63
+
64
+ # Look up the workspace ID
65
+ workspace_response = client.workspaces.get(workspace_params)
66
+ workspace_id = workspace_response&.resource&.id
67
+ error! "workspace '#{organization_name}/#{workspace_name}' was not found!" unless workspace_id
68
+
69
+ # Create a configuration version and get upload-url
70
+ configuration_version_response = client.configuration_versions.create(workspace: workspace_id)
71
+ upload_url = (configuration_version_response&.resource&.attributes || {})['upload-url']
72
+ error! "failed creationg configuration version with workspace id `#{workspace_id}`" unless upload_url
73
+
74
+ upload_params = { content: content, url: upload_url }
75
+ render client.configuration_versions.upload(upload_params)
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -2,14 +2,16 @@ require 'terraform_enterprise/command_line/command'
2
2
 
3
3
  module TerraformEnterprise
4
4
  module CommandLine
5
- class OAuthTokensCommand < TerraformEnterprise::CommandLine::Command
6
- class_option :organization, required: true, type: :string, desc: STRINGS[:oauth_tokens][:attributes][:organization]
5
+ module Commands
6
+ class OAuthTokensCommand < TerraformEnterprise::CommandLine::Command
7
+ class_option :organization, required: true, type: :string, desc: STRINGS[:oauth_tokens][:attributes][:organization]
7
8
 
8
- desc 'list', STRINGS[:oauth_tokens][:commands][:list]
9
- option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
10
- def list
11
- render client.oauth_tokens.list(options)
9
+ desc 'list', STRINGS[:oauth_tokens][:commands][:list]
10
+ option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
11
+ def list
12
+ render client.oauth_tokens.list(options)
13
+ end
12
14
  end
13
15
  end
14
16
  end
15
- end
17
+ end
@@ -2,29 +2,31 @@ require 'terraform_enterprise/command_line/command'
2
2
 
3
3
  module TerraformEnterprise
4
4
  module CommandLine
5
- class OrganizationsCommand < TerraformEnterprise::CommandLine::Command
6
- CMD_STR = STRINGS[:organizations][:commands]
5
+ module Commands
6
+ class OrganizationsCommand < TerraformEnterprise::CommandLine::Command
7
+ CMD_STR = STRINGS[:organizations][:commands]
7
8
 
8
- desc 'list', CMD_STR[:list]
9
- option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
10
- def list
11
- render client.organizations.list, only: [:id, :name, 'created-at', :email]
12
- end
9
+ desc 'list', CMD_STR[:list]
10
+ option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
11
+ def list
12
+ render client.organizations.list, only: [:id, :name, 'created-at', :email]
13
+ end
13
14
 
14
- desc 'create <name> <email>', CMD_STR[:create]
15
- def create(name, email)
16
- render client.organizations.create(name: name, email: email)
17
- end
15
+ desc 'create <name> <email>', CMD_STR[:create]
16
+ def create(name, email)
17
+ render client.organizations.create(name: name, email: email)
18
+ end
18
19
 
19
- desc 'get <name>', CMD_STR[:get]
20
- def get(name)
21
- render client.organizations.get(name:name)
22
- end
20
+ desc 'get <name>', CMD_STR[:get]
21
+ def get(name)
22
+ render client.organizations.get(name:name)
23
+ end
23
24
 
24
- desc 'delete <name>', CMD_STR[:delete]
25
- def delete(name)
26
- render client.organizations.delete(name:name)
25
+ desc 'delete <name>', CMD_STR[:delete]
26
+ def delete(name)
27
+ render client.organizations.delete(name:name)
28
+ end
27
29
  end
28
30
  end
29
31
  end
30
- end
32
+ end
@@ -2,71 +2,73 @@ require 'terraform_enterprise/command_line/command'
2
2
 
3
3
  module TerraformEnterprise
4
4
  module CommandLine
5
- class PoliciesCommand < TerraformEnterprise::CommandLine::Command
6
- ATTR_STR = STRINGS[:policies][:attributes]
7
- CMD_STR = STRINGS[:policies][:commands]
5
+ module Commands
6
+ class PoliciesCommand < TerraformEnterprise::CommandLine::Command
7
+ ATTR_STR = STRINGS[:policies][:attributes]
8
+ CMD_STR = STRINGS[:policies][:commands]
8
9
 
9
- desc 'list', CMD_STR[:list]
10
- option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
11
- option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
12
- def list
13
- render client.policies.list(organization: options[:organization])
14
- end
10
+ desc 'list', CMD_STR[:list]
11
+ option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
12
+ option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
13
+ def list
14
+ render client.policies.list(organization: options[:organization])
15
+ end
15
16
 
16
- desc 'create <name>', CMD_STR[:create]
17
- option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
18
- option :mode, type: :string, required: true, enum: ['soft-mandatory', 'hard-mandatory', 'advisory']
19
- def create(name)
20
- params = {
21
- name: name,
22
- organization: options[:organization],
23
- enforce: [
24
- {
25
- path: "#{name}.sentinel",
26
- mode: options[:mode]
27
- }
28
- ]
29
- }
30
- render client.policies.create(params)
31
- end
17
+ desc 'create <name>', CMD_STR[:create]
18
+ option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
19
+ option :mode, type: :string, required: true, enum: ['soft-mandatory', 'hard-mandatory', 'advisory']
20
+ def create(name)
21
+ params = {
22
+ name: name,
23
+ organization: options[:organization],
24
+ enforce: [
25
+ {
26
+ path: "#{name}.sentinel",
27
+ mode: options[:mode]
28
+ }
29
+ ]
30
+ }
31
+ render client.policies.create(params)
32
+ end
32
33
 
33
- desc 'update <id>', CMD_STR[:create]
34
- option :mode, type: :string, required: true, enum: ['soft-mandatory', 'hard-mandatory', 'advisory'], desc: ATTR_STR[:mode]
35
- def update(id)
36
- name = ''
37
- params = {
38
- id: id,
39
- name: name,
40
- enforce: [
41
- {
42
- path: 'default.sentinel',
43
- mode: options[:mode]
44
- }
45
- ]
46
- }
34
+ desc 'update <id>', CMD_STR[:create]
35
+ option :mode, type: :string, required: true, enum: ['soft-mandatory', 'hard-mandatory', 'advisory'], desc: ATTR_STR[:mode]
36
+ def update(id)
37
+ name = ''
38
+ params = {
39
+ id: id,
40
+ name: name,
41
+ enforce: [
42
+ {
43
+ path: 'default.sentinel',
44
+ mode: options[:mode]
45
+ }
46
+ ]
47
+ }
47
48
 
48
- render client.policies.update(params)
49
- end
49
+ render client.policies.update(params)
50
+ end
50
51
 
51
- desc 'get <id>', CMD_STR[:get]
52
- def get(id)
53
- render client.policies.get(id:id)
54
- end
52
+ desc 'get <id>', CMD_STR[:get]
53
+ def get(id)
54
+ render client.policies.get(id:id)
55
+ end
55
56
 
56
- desc 'delete <id>', CMD_STR[:delete]
57
- def delete(id)
58
- render client.policies.delete(id: id)
59
- end
57
+ desc 'delete <id>', CMD_STR[:delete]
58
+ def delete(id)
59
+ render client.policies.delete(id: id)
60
+ end
60
61
 
61
- desc 'upload <path> <policy-id>', CMD_STR[:upload]
62
- def upload(path, policy_id)
63
- full_path = File.expand_path(path)
64
- content = File.read(full_path)
62
+ desc 'upload <path> <policy-id>', CMD_STR[:upload]
63
+ def upload(path, policy_id)
64
+ full_path = File.expand_path(path)
65
+ content = File.read(full_path)
65
66
 
66
- params = { content: content, id: policy_id }
67
+ params = { content: content, id: policy_id }
67
68
 
68
- render client.policies.upload(params)
69
+ render client.policies.upload(params)
70
+ end
69
71
  end
70
72
  end
71
73
  end
72
- end
74
+ end
@@ -3,26 +3,28 @@ require 'terraform_enterprise/command_line/util'
3
3
 
4
4
  module TerraformEnterprise
5
5
  module CommandLine
6
- # Configuration Version Commoand
7
- class PolicyChecksCommand < TerraformEnterprise::CommandLine::Command
8
- include TerraformEnterprise::CommandLine::Util::Tar
6
+ module Commands
7
+ # Configuration Version Commoand
8
+ class PolicyChecksCommand < TerraformEnterprise::CommandLine::Command
9
+ include TerraformEnterprise::CommandLine::Util::Tar
9
10
 
10
- ATTR_STR = STRINGS[:policy_checks][:attributes]
11
- CMD_STR = STRINGS[:policy_checks][:commands]
11
+ ATTR_STR = STRINGS[:policy_checks][:attributes]
12
+ CMD_STR = STRINGS[:policy_checks][:commands]
12
13
 
13
- desc 'list', CMD_STR[:list]
14
- option :table, type: :boolean, default: false, desc: STRINGS[:options][:table]
15
- option :run_id, required: true, type: :string, desc: ATTR_STR[:run_id]
16
- def list
17
- render client.policy_checks.list(run_id: options[:run_id])
18
- end
14
+ desc 'list', CMD_STR[:list]
15
+ option :table, type: :boolean, default: false, desc: STRINGS[:options][:table]
16
+ option :run_id, required: true, type: :string, desc: ATTR_STR[:run_id]
17
+ def list
18
+ render client.policy_checks.list(run_id: options[:run_id])
19
+ end
19
20
 
20
- desc 'override <policy-check-id>', CMD_STR[:override]
21
- option :comment, type: :string, desc: ATTR_STR[:comment]
22
- def override(id)
23
- params = { id: id, action: :override }
24
- params[:comment] = options[:comment] if options[:comment]
25
- render client.policy_checks.action(params)
21
+ desc 'override <policy-check-id>', CMD_STR[:override]
22
+ option :comment, type: :string, desc: ATTR_STR[:comment]
23
+ def override(id)
24
+ params = { id: id, action: :override }
25
+ params[:comment] = options[:comment] if options[:comment]
26
+ render client.policy_checks.action(params)
27
+ end
26
28
  end
27
29
  end
28
30
  end
@@ -2,87 +2,89 @@ require 'terraform_enterprise/command_line/command'
2
2
 
3
3
  module TerraformEnterprise
4
4
  module CommandLine
5
- class RunsCommand < TerraformEnterprise::CommandLine::Command
6
- ATTR_STR = STRINGS[:runs][:attributes]
7
- CMD_STR = STRINGS[:runs][:commands]
5
+ module Commands
6
+ class RunsCommand < TerraformEnterprise::CommandLine::Command
7
+ ATTR_STR = STRINGS[:runs][:attributes]
8
+ CMD_STR = STRINGS[:runs][:commands]
8
9
 
9
- desc 'list', CMD_STR[:list]
10
- option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
11
- option :workspace_id, required: true, type: :string, desc: ATTR_STR[:workspace_id]
12
- def list
13
- render client.runs.list(id: options[:workspace_id]), except: [:permissions]
14
- end
10
+ desc 'list', CMD_STR[:list]
11
+ option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
12
+ option :workspace_id, required: true, type: :string, desc: ATTR_STR[:workspace_id]
13
+ def list
14
+ render client.runs.list(id: options[:workspace_id]), except: [:permissions]
15
+ end
15
16
 
16
- desc 'create', CMD_STR[:create]
17
- option :workspace_id, required: true, type: :string, desc: ATTR_STR[:workspace_id]
18
- option :configuration_version_id, type: :string, desc: ATTR_STR[:configuration_version_id]
19
- option :destroy, type: :boolean, default: false, desc: ATTR_STR[:destroy]
20
- def create
21
- render client.runs.create(options), except: [:permissions]
22
- end
17
+ desc 'create', CMD_STR[:create]
18
+ option :workspace_id, required: true, type: :string, desc: ATTR_STR[:workspace_id]
19
+ option :configuration_version_id, type: :string, desc: ATTR_STR[:configuration_version_id]
20
+ option :destroy, type: :boolean, default: false, desc: ATTR_STR[:destroy]
21
+ def create
22
+ render client.runs.create(options), except: [:permissions]
23
+ end
23
24
 
24
- desc 'get <id>', CMD_STR[:get]
25
- def get(id)
26
- render client.runs.get(id: id), except: [:permissions]
27
- end
25
+ desc 'get <id>', CMD_STR[:get]
26
+ def get(id)
27
+ render client.runs.get(id: id), except: [:permissions]
28
+ end
28
29
 
29
- desc 'apply <id>', CMD_STR[:apply]
30
- option :comment, type: :string, desc: ATTR_STR[:comment]
31
- def apply(id)
32
- params = { id: id, action: :apply }
33
- params[:comment] = options[:comment] if options[:comment]
34
- render client.runs.action(params)
35
- end
30
+ desc 'apply <id>', CMD_STR[:apply]
31
+ option :comment, type: :string, desc: ATTR_STR[:comment]
32
+ def apply(id)
33
+ params = { id: id, action: :apply }
34
+ params[:comment] = options[:comment] if options[:comment]
35
+ render client.runs.action(params)
36
+ end
36
37
 
37
- desc 'discard <id>', CMD_STR[:discard]
38
- option :comment, type: :string, desc: ATTR_STR[:comment]
39
- def discard(id)
40
- params = { id: id, action: :discard }
41
- params[:comment] = options[:comment] if options[:comment]
42
- render client.runs.action(params)
43
- end
38
+ desc 'discard <id>', CMD_STR[:discard]
39
+ option :comment, type: :string, desc: ATTR_STR[:comment]
40
+ def discard(id)
41
+ params = { id: id, action: :discard }
42
+ params[:comment] = options[:comment] if options[:comment]
43
+ render client.runs.action(params)
44
+ end
44
45
 
45
- desc 'logs <id>', 'Logs'
46
- option :event, type: :string, required: true, desc: ATTR_STR[:event], enum:['plan', 'apply']
47
- option :follow, type: :boolean, default: false, desc: ATTR_STR[:follow]
48
- def logs(id)
49
- following = options[:follow]
50
- finished = false
51
- exit_requested = false
52
- finished_states = %w[errored canceled finished]
46
+ desc 'logs <id>', 'Logs'
47
+ option :event, type: :string, required: true, desc: ATTR_STR[:event], enum:['plan', 'apply']
48
+ option :follow, type: :boolean, default: false, desc: ATTR_STR[:follow]
49
+ def logs(id)
50
+ following = options[:follow]
51
+ finished = false
52
+ exit_requested = false
53
+ finished_states = %w[errored canceled finished]
53
54
 
54
- # Listens for "control-c" to exit
55
- Kernel.trap('INT') { exit_requested = true }
55
+ # Listens for "control-c" to exit
56
+ Kernel.trap('INT') { exit_requested = true }
56
57
 
57
- loop do
58
- event = get_event_resource(id, options[:event])
59
- url = event.attributes['log-read-url']
60
- finished = finished_states.include?(event.attributes['status'].to_s)
61
- logs = RestClient.get(url).body
62
-
63
- # errase screen and go to (0,0)
64
- print "\033[2J" if following
65
- print logs
58
+ loop do
59
+ event = get_event_resource(id, options[:event])
60
+ url = event.attributes['log-read-url']
61
+ finished = finished_states.include?(event.attributes['status'].to_s)
62
+ logs = RestClient.get(url).body
63
+
64
+ # errase screen and go to (0,0)
65
+ print "\033[2J" if following
66
+ print logs
66
67
 
67
- break if !following || exit_requested || finished
68
-
69
- sleep 2
70
- end
71
- end
68
+ break if !following || exit_requested || finished
69
+
70
+ sleep 2
71
+ end
72
+ end
72
73
 
73
- private
74
+ private
74
75
 
75
- def get_event_resource(id, event)
76
- event_type = event == 'plan' ? 'plans' : 'applies'
77
- error_message = "#{options[:event].to_s.capitalize} not started yet"
78
- run_response = client.runs.get(id: id, include: [event.to_sym])
79
- render run_response unless run_response.success?
80
- event_resource = run_response.resource.included.find do |er|
81
- er.type.to_s == event_type
76
+ def get_event_resource(id, event)
77
+ event_type = event == 'plan' ? 'plans' : 'applies'
78
+ error_message = "#{options[:event].to_s.capitalize} not started yet"
79
+ run_response = client.runs.get(id: id, include: [event.to_sym])
80
+ render run_response unless run_response.success?
81
+ event_resource = run_response.resource.included.find do |er|
82
+ er.type.to_s == event_type
83
+ end
84
+ error! error_message unless event_resource
85
+ event_resource
82
86
  end
83
- error! error_message unless event_resource
84
- event_resource
85
87
  end
86
88
  end
87
89
  end
88
- end
90
+ end
@@ -2,32 +2,34 @@ require 'terraform_enterprise/command_line/command'
2
2
 
3
3
  module TerraformEnterprise
4
4
  module CommandLine
5
- class TeamsCommand < TerraformEnterprise::CommandLine::Command
6
- ATTR_STR = STRINGS[:teams][:attributes]
7
- CMD_STR = STRINGS[:teams][:commands]
5
+ module Commands
6
+ class TeamsCommand < TerraformEnterprise::CommandLine::Command
7
+ ATTR_STR = STRINGS[:teams][:attributes]
8
+ CMD_STR = STRINGS[:teams][:commands]
8
9
 
9
- desc 'list', CMD_STR[:list]
10
- option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
11
- option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
12
- def list
13
- render client.teams.list(organization: options[:organization]), except: [:permissions]
14
- end
10
+ desc 'list', CMD_STR[:list]
11
+ option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
12
+ option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
13
+ def list
14
+ render client.teams.list(organization: options[:organization]), except: [:permissions]
15
+ end
15
16
 
16
- desc 'create <name>', CMD_STR[:create]
17
- option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
18
- def create(name)
19
- render client.teams.create(name: name, organization: options[:organization])
20
- end
17
+ desc 'create <name>', CMD_STR[:create]
18
+ option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
19
+ def create(name)
20
+ render client.teams.create(name: name, organization: options[:organization])
21
+ end
21
22
 
22
- desc 'get <id>', CMD_STR[:get]
23
- def get(id)
24
- render client.teams.get(id:id), except: [:permissions]
25
- end
23
+ desc 'get <id>', CMD_STR[:get]
24
+ def get(id)
25
+ render client.teams.get(id:id), except: [:permissions]
26
+ end
26
27
 
27
- desc 'delete <id>', CMD_STR[:delete]
28
- def delete(id)
29
- render client.teams.delete(id: id), except: [:permissions]
28
+ desc 'delete <id>', CMD_STR[:delete]
29
+ def delete(id)
30
+ render client.teams.delete(id: id), except: [:permissions]
31
+ end
30
32
  end
31
33
  end
32
34
  end
33
- end
35
+ end
@@ -2,60 +2,62 @@ require 'terraform_enterprise/command_line/command'
2
2
 
3
3
  module TerraformEnterprise
4
4
  module CommandLine
5
- class VariablesCommand < TerraformEnterprise::CommandLine::Command
6
- ATTR_STR = STRINGS[:variables][:attributes]
7
- CMD_STR = STRINGS[:variables][:commands]
5
+ module Commands
6
+ class VariablesCommand < TerraformEnterprise::CommandLine::Command
7
+ ATTR_STR = STRINGS[:variables][:attributes]
8
+ CMD_STR = STRINGS[:variables][:commands]
8
9
 
9
- desc 'list', CMD_STR[:list]
10
- option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
11
- option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
12
- option :workspace, type: :string, desc: ATTR_STR[:workspace]
13
- def list
14
- render client.variables.list(options)
15
- end
10
+ desc 'list', CMD_STR[:list]
11
+ option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
12
+ option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
13
+ option :workspace, type: :string, desc: ATTR_STR[:workspace]
14
+ def list
15
+ render client.variables.list(options)
16
+ end
16
17
 
17
- desc 'create <key> <value>', CMD_STR[:create]
18
- option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
19
- option :workspace, required: true, type: :string, desc: ATTR_STR[:workspace]
20
- option :category, default: 'terraform', type: :string, desc: ATTR_STR[:category], enum:['terraform', 'env']
21
- option :hcl, default: false, type: :boolean, desc: ATTR_STR[:hcl]
22
- option :sensitive, default: false, type: :boolean, desc: ATTR_STR[:sensitive]
23
- def create(key, value)
24
- params = {
25
- category: options[:category],
26
- hcl: options[:hcl],
27
- key: key,
28
- organization: options[:organization],
29
- sensitive: options[:sensitive],
30
- value: value,
31
- workspace: options[:workspace],
32
- }
33
- render client.variables.create(params)
34
- end
18
+ desc 'create <key> <value>', CMD_STR[:create]
19
+ option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
20
+ option :workspace, required: true, type: :string, desc: ATTR_STR[:workspace]
21
+ option :category, default: 'terraform', type: :string, desc: ATTR_STR[:category], enum:['terraform', 'env']
22
+ option :hcl, default: false, type: :boolean, desc: ATTR_STR[:hcl]
23
+ option :sensitive, default: false, type: :boolean, desc: ATTR_STR[:sensitive]
24
+ def create(key, value)
25
+ params = {
26
+ category: options[:category],
27
+ hcl: options[:hcl],
28
+ key: key,
29
+ organization: options[:organization],
30
+ sensitive: options[:sensitive],
31
+ value: value,
32
+ workspace: options[:workspace],
33
+ }
34
+ render client.variables.create(params)
35
+ end
35
36
 
36
- desc 'update <id>', CMD_STR[:update]
37
- option :hcl, type: :boolean, desc: ATTR_STR[:hcl]
38
- option :sensitive, type: :boolean, desc: ATTR_STR[:sensitive]
39
- option :key, type: :string, desc: ATTR_STR[:key]
40
- option :value, type: :string, desc: ATTR_STR[:value]
41
- def update(id)
42
- params = {id: id}
43
- params[:hcl] = options[:hcl] if options.include?('hcl')
44
- params[:key] = options[:key] if options[:key]
45
- params[:sensitive] = options[:sensitive] if options.include?('sensitive')
46
- params[:value] = options[:value] if options[:value]
47
- render client.variables.update(params)
48
- end
37
+ desc 'update <id>', CMD_STR[:update]
38
+ option :hcl, type: :boolean, desc: ATTR_STR[:hcl]
39
+ option :sensitive, type: :boolean, desc: ATTR_STR[:sensitive]
40
+ option :key, type: :string, desc: ATTR_STR[:key]
41
+ option :value, type: :string, desc: ATTR_STR[:value]
42
+ def update(id)
43
+ params = {id: id}
44
+ params[:hcl] = options[:hcl] if options.include?('hcl')
45
+ params[:key] = options[:key] if options[:key]
46
+ params[:sensitive] = options[:sensitive] if options.include?('sensitive')
47
+ params[:value] = options[:value] if options[:value]
48
+ render client.variables.update(params)
49
+ end
49
50
 
50
- desc 'get <id>', CMD_STR[:get]
51
- def get(id)
52
- render client.variables.get(id:id)
53
- end
51
+ desc 'get <id>', CMD_STR[:get]
52
+ def get(id)
53
+ render client.variables.get(id:id)
54
+ end
54
55
 
55
- desc 'delete <id>', CMD_STR[:delete]
56
- def delete(id)
57
- render client.variables.delete(id: id)
56
+ desc 'delete <id>', CMD_STR[:delete]
57
+ def delete(id)
58
+ render client.variables.delete(id: id)
59
+ end
58
60
  end
59
61
  end
60
62
  end
61
- end
63
+ end
@@ -2,86 +2,88 @@ require 'terraform_enterprise/command_line/command'
2
2
 
3
3
  module TerraformEnterprise
4
4
  module CommandLine
5
- class WorkspacesCommand < TerraformEnterprise::CommandLine::Command
6
- ATTR_STR = STRINGS[:workspaces][:attributes]
7
- CMD_STR = STRINGS[:workspaces][:commands]
5
+ module Commands
6
+ class WorkspacesCommand < TerraformEnterprise::CommandLine::Command
7
+ ATTR_STR = STRINGS[:workspaces][:attributes]
8
+ CMD_STR = STRINGS[:workspaces][:commands]
8
9
 
9
- desc 'list', CMD_STR[:list]
10
- option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
11
- option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
12
- def list
13
- render client.workspaces.list(options), except:[:permissions, :actions, :environment, 'created-at']
14
- end
15
-
16
- desc 'create <name>', CMD_STR[:create]
17
- option :terraform_version, type: :string, desc: ATTR_STR[:terraform_version]
18
- option :working_directory, type: :string, desc: ATTR_STR[:working_directory]
19
- option :oauth_token, type: :string, desc: ATTR_STR[:oauth_token]
20
- option :branch, type: :string, desc: ATTR_STR[:branch]
21
- option :ingress_submodules, type: :boolean, desc: ATTR_STR[:ingress_submodules]
22
- option :repo, type: :string, desc: ATTR_STR[:repos]
23
- option :import_legacy_environment, type: :string, desc: ATTR_STR[:import_legacy]
24
- option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
25
- def create(name)
26
- params = {
27
- organization: options[:organization],
28
- name: name,
29
- 'working-directory' => options[:working_directory] || '',
30
- }
31
- if options[:repo] && options[:oauth_token]
32
- repo = {}
33
- repo['branch'] = options[:branch] || ''
34
- repo['identifier'] = options[:repo]
35
- repo['oauth-token-id'] = options[:oauth_token]
36
- repo['ingress-submodules'] = options[:ingress_submodules] || false
37
- params['vcs-repo'] = repo
10
+ desc 'list', CMD_STR[:list]
11
+ option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
12
+ option :table, type: :boolean, default: true, desc: STRINGS[:options][:table]
13
+ def list
14
+ render client.workspaces.list(options), except:[:permissions, :actions, :environment, 'created-at']
38
15
  end
39
16
 
40
- params['migration-environment'] = options[:import_legacy_environment] if options[:import_legacy_environment]
41
- params['terraform_version'] = options[:terraform_version] if options[:terraform_version]
42
- render client.workspaces.create(params), except:[:permissions, :actions, :environment]
43
- end
17
+ desc 'create <name>', CMD_STR[:create]
18
+ option :terraform_version, type: :string, desc: ATTR_STR[:terraform_version]
19
+ option :working_directory, type: :string, desc: ATTR_STR[:working_directory]
20
+ option :oauth_token, type: :string, desc: ATTR_STR[:oauth_token]
21
+ option :branch, type: :string, desc: ATTR_STR[:branch]
22
+ option :ingress_submodules, type: :boolean, desc: ATTR_STR[:ingress_submodules]
23
+ option :repo, type: :string, desc: ATTR_STR[:repos]
24
+ option :import_legacy_environment, type: :string, desc: ATTR_STR[:import_legacy]
25
+ option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
26
+ def create(name)
27
+ params = {
28
+ organization: options[:organization],
29
+ name: name,
30
+ 'working-directory' => options[:working_directory] || '',
31
+ }
32
+ if options[:repo] && options[:oauth_token]
33
+ repo = {}
34
+ repo['branch'] = options[:branch] || ''
35
+ repo['identifier'] = options[:repo]
36
+ repo['oauth-token-id'] = options[:oauth_token]
37
+ repo['ingress-submodules'] = options[:ingress_submodules] || false
38
+ params['vcs-repo'] = repo
39
+ end
44
40
 
45
- desc 'get <name>', CMD_STR[:get]
46
- option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
47
- def get(name)
48
- params = {
49
- organization: options[:organization],
50
- workspace: name
51
- }
52
- render client.workspaces.get(params), except:[:permissions, :environment]
53
- end
41
+ params['migration-environment'] = options[:import_legacy_environment] if options[:import_legacy_environment]
42
+ params['terraform_version'] = options[:terraform_version] if options[:terraform_version]
43
+ render client.workspaces.create(params), except:[:permissions, :actions, :environment]
44
+ end
54
45
 
55
- desc 'delete <name>', CMD_STR[:delete]
56
- option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
57
- def delete(name)
58
- params = {
59
- organization: options[:organization],
60
- workspace: name
61
- }
62
- render client.workspaces.delete(params), except:[:permissions, :actions, :environment]
63
- end
46
+ desc 'get <name>', CMD_STR[:get]
47
+ option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
48
+ def get(name)
49
+ params = {
50
+ organization: options[:organization],
51
+ workspace: name
52
+ }
53
+ render client.workspaces.get(params), except:[:permissions, :environment]
54
+ end
64
55
 
65
- desc 'update <name>', CMD_STR[:update]
66
- option :working_directory, type: :string, desc: ATTR_STR[:working_directory]
67
- option :terraform_version, type: :string, desc: ATTR_STR[:terraform_version]
68
- option :auto_apply, type: :boolean, desc: ATTR_STR[:auto_apply]
69
- option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
70
- def update(name)
71
- params = options
72
- params[:workspace] = name
73
- render client.workspaces.update(params), except:[:permissions, :environment]
74
- end
56
+ desc 'delete <name>', CMD_STR[:delete]
57
+ option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
58
+ def delete(name)
59
+ params = {
60
+ organization: options[:organization],
61
+ workspace: name
62
+ }
63
+ render client.workspaces.delete(params), except:[:permissions, :actions, :environment]
64
+ end
75
65
 
76
- desc 'lock <id>', CMD_STR[:lock]
77
- def lock(id)
78
- render client.workspaces.action(action: :lock, id: id), except:[:permissions, :environment]
79
- end
66
+ desc 'update <name>', CMD_STR[:update]
67
+ option :working_directory, type: :string, desc: ATTR_STR[:working_directory]
68
+ option :terraform_version, type: :string, desc: ATTR_STR[:terraform_version]
69
+ option :auto_apply, type: :boolean, desc: ATTR_STR[:auto_apply]
70
+ option :organization, required: true, type: :string, desc: ATTR_STR[:organization]
71
+ def update(name)
72
+ params = options
73
+ params[:workspace] = name
74
+ render client.workspaces.update(params), except:[:permissions, :environment]
75
+ end
80
76
 
81
- desc 'unlock <id>', CMD_STR[:unlock]
82
- def unlock(id)
83
- render client.workspaces.action(action: :unlock, id: id), except:[:permissions, :environment]
77
+ desc 'lock <id>', CMD_STR[:lock]
78
+ def lock(id)
79
+ render client.workspaces.action(action: :lock, id: id), except:[:permissions, :environment]
80
+ end
81
+
82
+ desc 'unlock <id>', CMD_STR[:unlock]
83
+ def unlock(id)
84
+ render client.workspaces.action(action: :unlock, id: id), except:[:permissions, :environment]
85
+ end
84
86
  end
85
87
  end
86
88
  end
87
- end
89
+ end
@@ -9,7 +9,10 @@ module TerraformEnterprise
9
9
  # Module with render method to render the Resource object
10
10
  class Formatter
11
11
  def render(obj, options = {})
12
- String.disable_colorization = !options[:color]
12
+
13
+ if options.include?(:color)
14
+ String.disable_colorization = !options[:color]
15
+ end
13
16
 
14
17
  if !obj.is_a?(TerraformEnterprise::API::Response)
15
18
  unkown_response(obj)
@@ -1,5 +1,5 @@
1
1
  module TerraformEnterprise
2
2
  module CommandLine
3
- VERSION = '0.0.6'.freeze
3
+ VERSION = '0.0.7'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terraform-enterprise-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maciej Skierkowski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-05 00:00:00.000000000 Z
11
+ date: 2018-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: terraform-enterprise-client
@@ -105,6 +105,7 @@ files:
105
105
  - lib/terraform-enterprise-command-line.rb
106
106
  - lib/terraform_enterprise/command_line/command.rb
107
107
  - lib/terraform_enterprise/command_line/commands/configuration_versions.rb
108
+ - lib/terraform_enterprise/command_line/commands/main.rb
108
109
  - lib/terraform_enterprise/command_line/commands/oauth_tokens.rb
109
110
  - lib/terraform_enterprise/command_line/commands/organizations.rb
110
111
  - lib/terraform_enterprise/command_line/commands/policies.rb
@@ -137,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
138
  version: '0'
138
139
  requirements: []
139
140
  rubyforge_project:
140
- rubygems_version: 2.7.3
141
+ rubygems_version: 2.7.6
141
142
  signing_key:
142
143
  specification_version: 4
143
144
  summary: CLI tool for interacting with Terraform Enterprise