labclient 0.5.0 → 0.7.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 105ec572236cc556ebab18031557136d5bb1e78a33d39ad00ba9032e831627b2
4
- data.tar.gz: 49b836de0a75f9e1ca38cf1620754d824116047c9b944b3c8f81949d07f60162
3
+ metadata.gz: d74d5b878f7c98298959ec6c47bb4b81a6dcb336391eb4fae8df4f38a180d920
4
+ data.tar.gz: b31895a60a9f209d39f30b33b6975e173e0ce0bc557b3cab30afb6aceb65642e
5
5
  SHA512:
6
- metadata.gz: 1504185ca949dc3dc77eb8266965e2f70d3023a954dcd01eb8194e47086c26a731438310f902f014fd5e63f982ce2a141fda0e37ab55f3a772e46905fb27d46c
7
- data.tar.gz: 45c22d9129316bd4dd25558c9184d7a1eb79ed2ddd0dab153f60b39fd7838b4e95388465a617002c787b3f32f4dc62eb9924c3624d4f3ac5e6aab63770012946
6
+ metadata.gz: 5548da86087095cf0093be6635ef81da29a2cec523a13834a793056898da03561039cccce12fa757b726945752362498c5673b15f5f33590c6edaf7ff14aff2c
7
+ data.tar.gz: 0d145b1acb0dee2c10ef8ced865a1e073791fcb1616123db9e39ffaabeb1279cff646d1ab0afd6e4a83d87771e4980c7e0ee2bea1a0162c4cc9c42cb584b1f56
@@ -54,6 +54,7 @@ module LabClient
54
54
  pipelines: Pipelines,
55
55
  project_runners: ProjectRunners,
56
56
  projects: Projects,
57
+ terraform: Terraform,
57
58
  protected_branches: ProtectedBranches,
58
59
  protected_environments: ProtectedEnvironments,
59
60
  protected_tags: ProtectedTags,
@@ -17,14 +17,15 @@ module LabClient
17
17
  # If nothing entered Prompt for Input
18
18
  def prompt_for_url
19
19
  print 'Enter GitLab URL (e.g. https://gitlab.com): '
20
- @settings[:url] = $stdin.gets&.chomp
20
+ @settings[:url] = ENV['LABCLIENT_TESTING'] ? 'testu' : $stdin.gets&.chomp
21
21
  raise 'LabClient Error - Missing URL!' if @settings[:url].blank?
22
22
  end
23
23
 
24
24
  # Check for Token
25
25
  def prompt_for_token
26
26
  print 'Enter Personal Access Token: '
27
- @settings[:token] = $stdin.gets.chomp
27
+
28
+ @settings[:token] = ENV['LABCLIENT_TESTING'] ? 'testt' : $stdin.gets&.chomp
28
29
  end
29
30
 
30
31
  # Fill Defaults
@@ -84,13 +84,17 @@ module LabClient
84
84
  when LabStruct
85
85
  klass ? klass.new(resp.data, resp, self) : resp.data
86
86
  when Array
87
- if @klass.nil?
88
- resp.data
87
+ if klass.nil?
88
+ PaginatedResponse.new(Klass, resp, self)
89
89
  else
90
- PaginatedResponse.new(@klass, resp, self)
90
+ PaginatedResponse.new(klass, resp, self)
91
91
  end
92
+ # Return Response/Status Object if there is no output otherwise
93
+ when NilClass
94
+ resp
95
+ # Default handler / if klass defined store plain response in data
92
96
  else
93
- resp.data
97
+ klass ? klass.new({ data: resp.data, response: resp }, resp, self) : resp
94
98
  end
95
99
  end
96
100
  end
@@ -83,7 +83,7 @@ module LabClient
83
83
  # Valid Integer in String
84
84
  return obj_id if /\A\d+\z/.match(obj_id)
85
85
 
86
- CGI.escape obj_id.to_s
86
+ ERB::Util.url_encode obj_id.to_s
87
87
  end
88
88
 
89
89
  def format_query_id(key, query)
@@ -47,7 +47,7 @@ module LabClient
47
47
  project_id = format_id(project_id)
48
48
 
49
49
  # Path Name Encoding
50
- file_path = CGI.escape(file_path)
50
+ file_path = ERB::Util.url_encode(file_path)
51
51
 
52
52
  client.request(:post, "projects/#{project_id}/repository/files/#{file_path}", nil, query)
53
53
  end
@@ -38,7 +38,7 @@ module LabClient
38
38
  project_id = format_id(project_id)
39
39
 
40
40
  # Path Name Encoding
41
- file_path = CGI.escape(file_path)
41
+ file_path = ERB::Util.url_encode(file_path)
42
42
 
43
43
  client.request(:delete, "projects/#{project_id}/repository/files/#{file_path}", nil, query)
44
44
  end
@@ -0,0 +1,11 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # General File Wrapper
4
+ class LabFile < Klass
5
+ include ClassHelpers
6
+
7
+ def inspect
8
+ "#<LabFile size: #{data&.size}>"
9
+ end
10
+ end
11
+ end
@@ -27,25 +27,27 @@ module LabClient
27
27
  desc 'via Project'
28
28
  example <<~DOC
29
29
  project = client.projects.show(264)
30
- project.file('a3c86df3f')
30
+ project.file('README.md')
31
31
  DOC
32
32
  end
33
33
 
34
34
  def show(project_id, file_path, ref = :main, kind = nil)
35
+ # LabStruct vs LabFile
36
+ return_kind = kind == :raw ? LabFile : nil
37
+
35
38
  kind = case kind
36
39
  when :raw
37
40
  '/raw'
38
41
  when :blame
39
42
  '/blame'
40
43
  end
41
- # GET /projects/:id/repository/files/:file_path
42
44
 
43
45
  project_id = format_id(project_id)
44
46
 
45
47
  # Path Name Encoding
46
- file_path = CGI.escape(file_path)
48
+ file_path = ERB::Util.url_encode(file_path)
47
49
 
48
- client.request(:get, "projects/#{project_id}/repository/files/#{file_path}#{kind}", nil, ref: ref)
50
+ client.request(:get, "projects/#{project_id}/repository/files/#{file_path}#{kind}", return_kind, ref: ref)
49
51
  end
50
52
  end
51
53
  end
@@ -44,7 +44,7 @@ module LabClient
44
44
  project_id = format_id(project_id)
45
45
 
46
46
  # Path Name Encoding
47
- file_path = CGI.escape(file_path)
47
+ file_path = ERB::Util.url_encode(file_path)
48
48
 
49
49
  client.request(:put, "projects/#{project_id}/repository/files/#{file_path}", nil, query)
50
50
  end
@@ -18,7 +18,6 @@ module LabClient
18
18
  end
19
19
 
20
20
  def sync(group_id)
21
- # POST /groups/:id/ldap_sync
22
21
  group_id = format_id(group_id)
23
22
 
24
23
  client.request(:post, "groups/#{group_id}/ldap_sync")
@@ -82,15 +82,25 @@ module Typhoeus
82
82
  self
83
83
  end
84
84
 
85
+ # Check if response body can be parsed
86
+ def json_body?
87
+ content_type = headers['content-type']
88
+
89
+ return false unless content_type
90
+ return true if content_type.include? 'application/json'
91
+
92
+ false
93
+ end
94
+
85
95
  def process_body
86
- if body.empty?
87
- nil
88
- elsif headers['content-type']&.include? 'text/plain'
89
- body
90
- else
96
+ return nil if body.empty?
97
+
98
+ if json_body?
91
99
  result = Oj.load(body, mode: :compat, symbol_keys: true, object_class: LabClient::LabStruct)
92
100
  result.instance_variable_set(:@response, self) if result.instance_of?(LabClient::LabStruct)
93
101
  result
102
+ else
103
+ body
94
104
  end
95
105
  end
96
106
 
@@ -3,10 +3,10 @@ module LabClient
3
3
  # Specifics
4
4
  class Issues < Common
5
5
  doc 'Delete' do
6
- desc 'Updates an existing project issue. This call is also used to mark an issue as closed. [Project ID, Issue IID]'
6
+ desc 'Only for administrators and project owners. Deletes an issue. [Project ID, Issue IID]'
7
7
  example 'client.issues.delete(5, 1)'
8
8
  result <<~DOC
9
- => #<Issue id: 1, title: Moar Fancy!, state: opened>
9
+ => #<TyphoeusResponse code: 204>
10
10
  DOC
11
11
  end
12
12
 
@@ -3,11 +3,15 @@ module LabClient
3
3
  # Specifics
4
4
  class Jobs < Common
5
5
  doc 'Artifacts' do
6
- desc 'Get the job’s artifacts zipped archive of a project. [Project ID, Job ID, File Path, Job Token]'
6
+ desc 'Get the job’s artifacts zipped archive of a project. [Project ID, Job ID, Job Token, File Path]'
7
7
  example 'client.jobs.artifacts(264, 1)'
8
8
 
9
9
  markdown <<~DOC
10
- File Output will default to the current directory + job id + file extension. 14.zip
10
+ ---
11
+
12
+ Two methods are available. `download_artifacts` will download and write to the local directory (or file path) and `artifacts`/`show_artifacts` which will return a `LabFile` with the key of `data` for the response result.
13
+
14
+ File Output will default to the current directory + job id + file extension. 14.zip (Still returning `LabFile`)
11
15
 
12
16
  Job Token: To be used with triggers for multi-project pipelines. It should be invoked only inside `.gitlab-ci.yml`. Its value is always `$CI_JOB_TOKEN`.
13
17
  DOC
@@ -16,7 +20,7 @@ module LabClient
16
20
  doc 'Artifacts' do
17
21
  desc 'Specific output location'
18
22
  example <<~DOC
19
- client.jobs.artifacts(264, 1, '/tmp/output.zip')
23
+ client.jobs.download_artifacts(264, 1, '/tmp/output.zip')
20
24
  DOC
21
25
  end
22
26
 
@@ -24,6 +28,7 @@ module LabClient
24
28
  desc 'via Project'
25
29
  example <<~DOC
26
30
  project = client.projects.show(264)
31
+ project.job_download_artifacts(7)
27
32
  project.job_artifacts(7)
28
33
  DOC
29
34
  end
@@ -32,18 +37,29 @@ module LabClient
32
37
  desc 'via Job'
33
38
  example <<~DOC
34
39
  job = client.jobs.show(264, 7)
35
- job.artifacts
40
+ job.download_artifacts
41
+ job.show_artifacts
36
42
  DOC
37
43
  end
38
44
 
39
- def artifacts(project_id, job_id, file_path = nil, job_token = nil)
45
+ def artifacts(project_id, job_id, job_token = nil)
40
46
  job_id = format_id(job_id)
41
47
  project_id = format_id(project_id)
42
- file_path ||= "#{Dir.pwd}/#{job_id}.zip"
43
48
  query = { job_token: job_token } if job_token
44
- output = client.request(:get, "projects/#{project_id}/jobs/#{job_id}/artifacts", nil, query)
45
49
 
46
- File.write(file_path, output)
50
+ # Don't try to process output
51
+ client.request(:get, "projects/#{project_id}/jobs/#{job_id}/artifacts", LabFile, query)
52
+ end
53
+
54
+ # Helper to write immediately to a file
55
+ def download_artifacts(project_id, job_id, file_path = nil, job_token = nil)
56
+ file_path ||= "#{Dir.pwd}/#{job_id}.zip"
57
+ output = artifacts(project_id, job_id, job_token)
58
+
59
+ File.write(file_path, output.data) if output.success?
60
+
61
+ # Return LabFile
62
+ output
47
63
  end
48
64
  end
49
65
  end
@@ -17,9 +17,16 @@ module LabClient
17
17
  Pipeline.new(@table[:pipeline], response, client)
18
18
  end
19
19
 
20
- def artifacts(file_path = nil, job_token = nil)
20
+ # File Write Response
21
+ def download_artifacts(file_path = nil, job_token = nil)
21
22
  project_id = collect_project_id
22
- client.jobs.artifacts(project_id, id, file_path, job_token)
23
+ client.jobs.download_artifacts(project_id, id, job_token, file_path)
24
+ end
25
+
26
+ # LabFile Response
27
+ def show_artifacts(job_token = nil)
28
+ project_id = collect_project_id
29
+ client.jobs.artifacts(project_id, id, job_token)
23
30
  end
24
31
 
25
32
  def artifacts_path(artifacts_path, file_path = nil)
@@ -65,7 +72,7 @@ module LabClient
65
72
  help do
66
73
  @group_name = 'Jobs'
67
74
  subtitle 'Job'
68
- option 'artifacts', 'Download Job artifacts. [File Path, Job Token]'
75
+ option 'download_artifacts', 'Download Job artifacts. [File Path, Job Token]'
69
76
  option 'artifacts_path', 'Download Job artifacts path. [File Path, Output Path]'
70
77
  option 'trace', 'Get Job Output'
71
78
  option 'cancel', 'Cancel Job'
@@ -226,8 +226,12 @@ module LabClient
226
226
  client.jobs.show(id, job_id)
227
227
  end
228
228
 
229
- def job_artifacts(job_id, file_path = nil, job_token = nil)
230
- client.jobs.artifacts(id, job_id, file_path, job_token)
229
+ def job_download_artifacts(job_id, file_path = nil, job_token = nil)
230
+ client.jobs.download_artifacts(id, job_id, file_path, job_token)
231
+ end
232
+
233
+ def job_artifacts(job_id, job_token = nil)
234
+ client.jobs.artifacts(id, job_id, job_token)
231
235
  end
232
236
 
233
237
  def job_artifacts_latest(branch_name, job_name, file_path = nil, job_token = nil)
@@ -717,6 +721,15 @@ module LabClient
717
721
  client.projects.clusters.show(id, cluster_id)
718
722
  end
719
723
 
724
+ # Templates
725
+ def templates(template_type)
726
+ client.projects.templates.list(id, template_type)
727
+ end
728
+
729
+ def template_show(template_type, template_name, query = {})
730
+ client.projects.templates.show(id, template_type, template_name, query)
731
+ end
732
+
720
733
  # Reload
721
734
  def reload
722
735
  update_self client.projects.show(id)
@@ -264,6 +264,10 @@ module LabClient
264
264
  # Clusters
265
265
  option 'clusters', 'Returns a list of project clusters.'
266
266
 
267
+ # Clusters
268
+ option 'templates', 'List Templates of Type [String/Symbol]'
269
+ option 'template_show', 'Get one template of a particular type [Type: String/Symbol, Name: String/Symbol, Params: Hash]'
270
+
267
271
  option 'events', 'List project events [Hash]'
268
272
  option 'parent', 'Show (API Call) Project Parent, returns either Group or User'
269
273
  end
@@ -0,0 +1,17 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Inspect Helper
4
+ class ProjectTemplates < Common
5
+ include ClassHelpers
6
+ end
7
+ end
8
+
9
+ # Top namespace
10
+ module LabClient
11
+ # Specifics
12
+ class Projects < Common
13
+ def templates
14
+ ProjectTemplates.new(client)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,30 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Specifics
4
+ class ProjectTemplates < Common
5
+ doc 'List' do
6
+ desc 'Get all templates of a particular type. [Project ID, String/Symbol]'
7
+ example 'client.projects.templates.list(15, :issues)'
8
+ result '[{:key=>"Code Contributions", :name=>"Code Contributions"}, ...]'
9
+
10
+ markdown <<~DOC
11
+ | Attribute | Type | Required | Description |
12
+ | --------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------ |
13
+ | type | string | yes | The type of the template. Accepted values are: `dockerfiles`, `gitignores`, `gitlab_ci_ymls`, `licenses`, `issues`, `merge_requests` |
14
+ DOC
15
+ end
16
+
17
+ doc 'List' do
18
+ desc 'Via Project [String/Symbol]'
19
+ example <<~DOC
20
+ project = client.projects.show(16)
21
+ project.templates(:issues)
22
+ DOC
23
+ end
24
+
25
+ def list(project_id, template_type)
26
+ project_id = format_id(project_id)
27
+ client.request(:get, "projects/#{project_id}/templates/#{template_type}")
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,36 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Specifics
4
+ class ProjectTemplates < Common
5
+ doc 'Show' do
6
+ desc 'Get one template of a particular type. [Project ID, Type: String/Symbol, Name: String/Symbol, Hash]'
7
+ example 'client.projects.templates.show(15,:issues,:elasticsearch)'
8
+ result '[#<Runner id: 1, status: online>, ... ]'
9
+
10
+ markdown <<~DOC
11
+
12
+ | Attribute | Type | Required | Description |
13
+ | ---------------------------- | ----------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
14
+ | type | string | yes | The type of the template. One of: `dockerfiles`, `gitignores`, `gitlab_ci_ymls`, `licenses`, `issues`, or `merge_requests`. |
15
+ | name | string | yes | The key of the template, as obtained from the collection endpoint |
16
+ | source_template_project_id | integer | no | The project ID where a given template is being stored. This is useful when multiple templates from different projects have the same name. If multiple templates have the same name, the match from `closest ancestor` is returned if `source_template_project_id` is not specified |
17
+ | project | string | no | The project name to use when expanding placeholders in the template. Only affects licenses |
18
+ | fullname | string | no | The full name of the copyright holder to use when expanding placeholders in the template. Only affects licenses |
19
+ DOC
20
+ end
21
+
22
+ doc 'List' do
23
+ desc 'Via Project [String/Symbol]'
24
+ example <<~DOC
25
+ project = client.projects.show(16)
26
+ project.template_show(:issues, 'Elasticsearch')
27
+ DOC
28
+ end
29
+
30
+ def show(project_id, template_type, template_name, query = {})
31
+ project_id = format_id(project_id)
32
+
33
+ client.request(:get, "projects/#{project_id}/templates/#{template_type}/#{template_name}", nil, query)
34
+ end
35
+ end
36
+ end
@@ -17,6 +17,11 @@ module LabClient
17
17
  client.registry.tags(project_id, id)
18
18
  end
19
19
 
20
+ def delete
21
+ project_id = collect_project_id
22
+ client.registry.delete(project_id, id)
23
+ end
24
+
20
25
  help do
21
26
  @group_name = 'Registry'
22
27
  subtitle 'Registry Repository'
@@ -0,0 +1,7 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Inspect Helper
4
+ class RepositoryTree < Klass
5
+ include ClassHelpers
6
+ end
7
+ end
@@ -29,7 +29,7 @@ module LabClient
29
29
  def tree(project_id, query = {})
30
30
  project_id = format_id(project_id)
31
31
 
32
- client.request(:get, "projects/#{project_id}/repository/tree", nil, query)
32
+ client.request(:get, "projects/#{project_id}/repository/tree", RepositoryTree, query)
33
33
  end
34
34
  end
35
35
  end
@@ -0,0 +1,23 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Specifics
4
+ class Terraform < Common
5
+ doc 'Create' do
6
+ desc 'Creates a new State. [Project ID, StateName, LockID, Hash]'
7
+ example 'client.terraform.create(5, {})'
8
+ result '#<TerraformState serial: 4>'
9
+
10
+ markdown <<~DOC
11
+ Attributes for Hash
12
+
13
+ ID,Operation,Info,Who,Version,Created,Path
14
+ DOC
15
+ end
16
+
17
+ def create(project_id, name, xid, body)
18
+ project_id = format_id(project_id)
19
+
20
+ client.request(:post, "projects/#{project_id}/terraform/state/#{name}?ID=#{xid}", nil, body)
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,16 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Specifics
4
+ class Terraform < Common
5
+ doc 'Delete' do
6
+ desc 'Delete Terraform State. [Project ID, StateName]'
7
+ example 'client.terraform.delete(5, :state_name)'
8
+ end
9
+
10
+ def delete(project_id, name)
11
+ project_id = format_id(project_id)
12
+
13
+ client.request(:delete, "projects/#{project_id}/terraform/state/#{name}")
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,17 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Specifics
4
+ class Terraform < Common
5
+ doc 'Lock' do
6
+ desc 'Locks a new State. [Project ID, Hash]'
7
+ example 'client.wikis.Lock(5, content: "Lots of Stuff", title: "Title!")'
8
+ result '#<TerraformState slug: Title!>'
9
+ end
10
+
11
+ def lock(project_id, name, query)
12
+ project_id = format_id(project_id)
13
+
14
+ client.request(:post, "projects/#{project_id}/terraform/state/#{name}/lock", nil, query)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,22 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Specifics
4
+ class Terraform < Common
5
+ doc 'Show' do
6
+ desc 'Collect Terraform State Information'
7
+ example 'client.terraform.show(264, "README.md")'
8
+
9
+ markdown <<~DOC
10
+ Ref will default to `main`
11
+
12
+ Kind can be left empty or set to either :raw or :blame
13
+ DOC
14
+ end
15
+
16
+ def show(project_id, name)
17
+ project_id = format_id(project_id)
18
+
19
+ client.request(:get, "projects/#{project_id}/terraform/state/#{name}", TerraformState)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Inspect Helper
4
+ class TerraformState < Klass
5
+ include ClassHelpers
6
+
7
+ def inspect
8
+ "#<TerraformState serial: #{serial}>"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ # Top namespace
2
+ module LabClient
3
+ # Specifics
4
+ class Terraform < Common
5
+ doc 'Lock' do
6
+ desc 'Unlock State [Project ID, StateName Lock ID]'
7
+ example 'client.terraform.lock(5, :state_name, 123)'
8
+ end
9
+
10
+ def unlock(project_id, name, xid)
11
+ project_id = format_id(project_id)
12
+
13
+ client.request(:delete, "projects/#{project_id}/terraform/state/#{name}/lock?ID=#{xid}")
14
+ end
15
+ end
16
+ end
@@ -1,6 +1,6 @@
1
1
  # Overall version
2
2
  module LabClient
3
- VERSION = '0.5.0'.freeze
3
+ VERSION = '0.7.0'.freeze
4
4
 
5
5
  # Make it easy to print version
6
6
  def self.version
data/lib/labclient.rb CHANGED
@@ -7,6 +7,9 @@ require 'gitlab_chronic_duration'
7
7
  require 'ostruct'
8
8
  require 'ougai'
9
9
 
10
+ # Escaping Paths - https://stackoverflow.com/questions/2824126/whats-the-difference-between-uri-escape-and-cgi-escape/13059657#13059657
11
+ require 'erb'
12
+
10
13
  require 'labclient/version'
11
14
  require 'labclient/logger'
12
15
  require 'labclient/docs'
@@ -266,6 +269,11 @@ require 'labclient/projects/access_requests/approve'
266
269
  require 'labclient/projects/access_requests/deny'
267
270
  require 'labclient/projects/access_requests/access_request'
268
271
 
272
+ # Project Templates
273
+ require 'labclient/projects/templates/client'
274
+ require 'labclient/projects/templates/show'
275
+ require 'labclient/projects/templates/list'
276
+
269
277
  # ===========================================================
270
278
  # Final Projects
271
279
  # ===========================================================
@@ -771,18 +779,13 @@ require 'labclient/pipelines/pipeline'
771
779
  # Repository
772
780
  require 'labclient/repository/alias'
773
781
  require 'labclient/repository/tree'
782
+ require 'labclient/repository/repository_tree'
774
783
  require 'labclient/repository/blob'
775
784
  require 'labclient/repository/archive'
776
785
  require 'labclient/repository/compare'
777
786
  require 'labclient/repository/contributors'
778
787
  require 'labclient/repository/merge_base'
779
788
 
780
- # Files
781
- require 'labclient/files/show'
782
- require 'labclient/files/create'
783
- require 'labclient/files/update'
784
- require 'labclient/files/delete'
785
-
786
789
  # Branches
787
790
  require 'labclient/branches/list'
788
791
  require 'labclient/branches/show'
@@ -865,6 +868,21 @@ require 'labclient/feature_flags/delete'
865
868
  require 'labclient/feature_flags/list'
866
869
  require 'labclient/feature_flags/feature_flag'
867
870
 
871
+ # Files
872
+ require 'labclient/files/file'
873
+ require 'labclient/files/show'
874
+ require 'labclient/files/create'
875
+ require 'labclient/files/update'
876
+ require 'labclient/files/delete'
877
+
878
+ # Terraform
879
+ require 'labclient/terraform/create'
880
+ require 'labclient/terraform/lock'
881
+ require 'labclient/terraform/unlock'
882
+ require 'labclient/terraform/delete'
883
+ require 'labclient/terraform/show'
884
+ require 'labclient/terraform/terraform_state'
885
+
868
886
  require 'labclient/resource_labels/resource_label'
869
887
 
870
888
  # Generators
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: labclient
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Davin Walker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-30 00:00:00.000000000 Z
11
+ date: 2022-02-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -449,6 +449,7 @@ files:
449
449
  - lib/labclient/feature_flags/list.rb
450
450
  - lib/labclient/files/create.rb
451
451
  - lib/labclient/files/delete.rb
452
+ - lib/labclient/files/file.rb
452
453
  - lib/labclient/files/show.rb
453
454
  - lib/labclient/files/update.rb
454
455
  - lib/labclient/generator/generator.rb
@@ -798,6 +799,9 @@ files:
798
799
  - lib/labclient/projects/stars/starred_projects.rb
799
800
  - lib/labclient/projects/stars/starrers.rb
800
801
  - lib/labclient/projects/submodule.rb
802
+ - lib/labclient/projects/templates/client.rb
803
+ - lib/labclient/projects/templates/list.rb
804
+ - lib/labclient/projects/templates/show.rb
801
805
  - lib/labclient/projects/transfer.rb
802
806
  - lib/labclient/projects/triggers/client.rb
803
807
  - lib/labclient/projects/triggers/create.rb
@@ -848,6 +852,7 @@ files:
848
852
  - lib/labclient/repository/contributors.rb
849
853
  - lib/labclient/repository/merge_base.rb
850
854
  - lib/labclient/repository/raw_blob.rb
855
+ - lib/labclient/repository/repository_tree.rb
851
856
  - lib/labclient/repository/tree.rb
852
857
  - lib/labclient/resource_labels/epics/client.rb
853
858
  - lib/labclient/resource_labels/epics/list.rb
@@ -891,6 +896,12 @@ files:
891
896
  - lib/labclient/tags/show.rb
892
897
  - lib/labclient/tags/tag.rb
893
898
  - lib/labclient/tags/update.rb
899
+ - lib/labclient/terraform/create.rb
900
+ - lib/labclient/terraform/delete.rb
901
+ - lib/labclient/terraform/lock.rb
902
+ - lib/labclient/terraform/show.rb
903
+ - lib/labclient/terraform/terraform_state.rb
904
+ - lib/labclient/terraform/unlock.rb
894
905
  - lib/labclient/todos/list.rb
895
906
  - lib/labclient/todos/mark_all_done.rb
896
907
  - lib/labclient/todos/mark_done.rb