xapixctl 1.1.0 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6cd8ba6213479cad5bf20ea1e07db40e09dd375f58ccfb12d6183f31707db480
4
- data.tar.gz: 1056d41e4dfc798aa86d7a9f3bff136cc145c7dd0803c77d47c91440a481b75e
3
+ metadata.gz: eb39c7aace95b6c10168b43e536b404a8d5edcdfc48d12890b296708199dccda
4
+ data.tar.gz: 5db98915dd0ac3f1c02b64ceee8ba7497a72fe4ccd65c09c2543aa108a4a1b95
5
5
  SHA512:
6
- metadata.gz: 61a99b2b54e627228d20edb639fceee90d7a93bb503237f69f877a746e20826cd43f60d7ddc66910e94c1596aeee14f5e5cc6359e81ca5c3db3fa5d46d0caaab
7
- data.tar.gz: d09d9ccd590a01d06cf6509ae0f44a1f44a5f205ef48f3032d997da6fbf64d5f61d785145512cd06f483d40ec976c5e34db4a030719b5e667fccd04b346f4619
6
+ metadata.gz: d67fe8ecd7b977fd05c7f8f8fb9b2b0fdbd4b1153405f0419f93bf05eea7dcb77d4314f4a635d77cb8472c50fcdef9c92df5fae1e361a8874b33401968dfaa35
7
+ data.tar.gz: e44e46596d4b155a5e3e5c08772de09fdbac68d1b5de23c6377a448f75af35c3701e59cf25498491d57c1c5418b3340ec7098939d168063f0c18bbe929c532d7
@@ -1,5 +1,6 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.5
2
+ NewCops: enable
3
+ TargetRubyVersion: 2.6
3
4
  DisplayCopNames: true
4
5
  Exclude:
5
6
  - bin/*
@@ -25,3 +26,6 @@ Style/OptionHash:
25
26
  Metrics/BlockLength:
26
27
  Exclude:
27
28
  - spec/**/*
29
+
30
+ Naming/RescuedExceptionsVariableName:
31
+ PreferredName: 'err'
@@ -1,40 +1,40 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- xapixctl (1.0.1)
4
+ xapixctl (1.1.1)
5
5
  activesupport (>= 5.2.3, < 6.0.0)
6
6
  rest-client (>= 2.1.0, < 3.0.0)
7
- thor (>= 0.20.3, < 1.0.0)
7
+ thor (>= 1.0.0, < 1.1.0)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activesupport (5.2.4.3)
12
+ activesupport (5.2.4.4)
13
13
  concurrent-ruby (~> 1.0, >= 1.0.2)
14
14
  i18n (>= 0.7, < 2)
15
15
  minitest (~> 5.1)
16
16
  tzinfo (~> 1.1)
17
17
  ast (2.4.1)
18
- concurrent-ruby (1.1.6)
18
+ concurrent-ruby (1.1.7)
19
19
  diff-lcs (1.3)
20
20
  domain_name (0.5.20190701)
21
21
  unf (>= 0.0.5, < 1.0.0)
22
22
  http-accept (1.7.0)
23
23
  http-cookie (1.0.3)
24
24
  domain_name (~> 0.5)
25
- i18n (1.8.3)
25
+ i18n (1.8.5)
26
26
  concurrent-ruby (~> 1.0)
27
27
  mime-types (3.3.1)
28
28
  mime-types-data (~> 3.2015)
29
29
  mime-types-data (3.2020.0512)
30
- minitest (5.14.1)
30
+ minitest (5.14.2)
31
31
  netrc (0.11.0)
32
32
  parallel (1.19.2)
33
- parser (2.7.1.3)
34
- ast (~> 2.4.0)
33
+ parser (2.7.1.4)
34
+ ast (~> 2.4.1)
35
35
  rainbow (3.0.0)
36
36
  rake (13.0.1)
37
- regexp_parser (1.7.1)
37
+ regexp_parser (1.8.0)
38
38
  relaxed-rubocop (2.5)
39
39
  rest-client (2.1.0)
40
40
  http-accept (>= 1.7.0, < 2.0)
@@ -55,19 +55,19 @@ GEM
55
55
  diff-lcs (>= 1.2.0, < 2.0)
56
56
  rspec-support (~> 3.9.0)
57
57
  rspec-support (3.9.3)
58
- rubocop (0.85.1)
58
+ rubocop (0.91.0)
59
59
  parallel (~> 1.10)
60
- parser (>= 2.7.0.1)
60
+ parser (>= 2.7.1.1)
61
61
  rainbow (>= 2.2.2, < 4.0)
62
62
  regexp_parser (>= 1.7)
63
63
  rexml
64
- rubocop-ast (>= 0.0.3)
64
+ rubocop-ast (>= 0.4.0, < 1.0)
65
65
  ruby-progressbar (~> 1.7)
66
66
  unicode-display_width (>= 1.4.0, < 2.0)
67
- rubocop-ast (0.0.3)
68
- parser (>= 2.7.0.1)
67
+ rubocop-ast (0.4.2)
68
+ parser (>= 2.7.1.4)
69
69
  ruby-progressbar (1.10.1)
70
- thor (0.20.3)
70
+ thor (1.0.1)
71
71
  thread_safe (0.3.6)
72
72
  tzinfo (1.2.7)
73
73
  thread_safe (~> 0.1)
@@ -84,7 +84,7 @@ DEPENDENCIES
84
84
  rake (~> 13.0)
85
85
  relaxed-rubocop (~> 2.5)
86
86
  rspec (~> 3.0)
87
- rubocop (~> 0.85.0)
87
+ rubocop (~> 0.89)
88
88
  xapixctl!
89
89
 
90
90
  BUNDLED WITH
data/Rakefile CHANGED
@@ -3,4 +3,4 @@ require "rspec/core/rake_task"
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor'
4
+
5
+ module Xapixctl
6
+ class BaseCli < Thor
7
+ def self.exit_on_failure?; true; end
8
+
9
+ class_option :verbose, type: :boolean, aliases: "-v"
10
+ class_option :xapix_url, desc: "Fallback: environment variable XAPIX_URL. URL to Xapix. Default: https://cloud.xapix.io/"
11
+ class_option :xapix_token, desc: "Fallback: environment variable XAPIX_TOKEN. Your access token."
12
+
13
+ private
14
+
15
+ def warn_api_error(text, err, result)
16
+ details = "\n " + result['errors'].map { |k| k['detail'] }.join("\n ") rescue err.to_s
17
+ warn "#{text}: #{details}"
18
+ exit 1
19
+ end
20
+
21
+ def show_deployment_status(result)
22
+ return unless result && result['project_publication']
23
+ puts "deployment: #{result.dig('project_publication', 'deployment')}"
24
+ puts " data api: #{result.dig('project_publication', 'data_api')} (version: #{result.dig('project_publication', 'data_api_version').presence || 'n/a'})"
25
+ puts " user management: #{result.dig('project_publication', 'user_management')}"
26
+ if result.dig('project_publication', 'deployment') == 'success'
27
+ puts " base URL: #{result.dig('project_publication', 'base_url')}"
28
+ end
29
+ end
30
+
31
+ DOCUMENT_STRUCTURE = %w[version kind metadata definition].freeze
32
+ def resources_from_file(filename)
33
+ yaml_string = filename == '-' ? $stdin.read : IO.read(filename)
34
+ yaml_string.split(/^---\s*\n/).map { |yml| Psych.safe_load(yml) }.compact.each do |doc|
35
+ unless (DOCUMENT_STRUCTURE - doc.keys.map(&:to_s)).empty?
36
+ warn "does not look like a correct resource definition:"
37
+ warn doc.inspect
38
+ exit 1
39
+ end
40
+ yield doc
41
+ end
42
+ end
43
+
44
+ def connection
45
+ url = options[:xapix_url] || ENV['XAPIX_URL'] || 'https://cloud.xapix.io/'
46
+ token = options[:xapix_token] || ENV['XAPIX_TOKEN']
47
+ raise Thor::RequiredArgumentMissingError, "no XAPIX_TOKEN given. Either use --xapix_token [TOKEN] or set environment variable XAPIX_TOKEN (recommended)" if !token
48
+ PhoenixClient::Connection.new(url, token)
49
+ end
50
+ end
51
+ end
@@ -1,14 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'thor'
3
+ require 'xapixctl/base_cli'
4
+ require 'xapixctl/preview_cli'
4
5
 
5
6
  module Xapixctl
6
- class Cli < Thor
7
- def self.exit_on_failure?; true; end
8
-
9
- class_option :verbose, type: :boolean, aliases: "-v"
10
- class_option :xapix_url, desc: "Fallback: environment variable XAPIX_URL. URL to Xapix. Default: https://cloud.xapix.io/"
11
- class_option :xapix_token, desc: "Fallback: environment variable XAPIX_TOKEN. Your access token."
7
+ class Cli < BaseCli
8
+ desc "preview SUBCOMMAND ...ARGS", "Request preview for resources"
9
+ subcommand "preview", Preview
12
10
 
13
11
  option :org, aliases: "-o", desc: "Organization", required: true
14
12
  option :project, aliases: "-p", desc: "Project"
@@ -128,7 +126,7 @@ module Xapixctl
128
126
  end
129
127
  elsif options[:file]
130
128
  resources_from_file(options[:file]) do |desc|
131
- type = desc.dig('kind')
129
+ type = desc['kind']
132
130
  id = desc.dig('metadata', 'id')
133
131
  puts "deleting #{type} #{id}"
134
132
  connection.delete(type, id, org: options[:org], project: options[:project]) do |res|
@@ -141,46 +139,6 @@ module Xapixctl
141
139
  end
142
140
  end
143
141
 
144
- option :org, aliases: "-o", desc: "Organization", required: true
145
- option :project, aliases: "-p", desc: "Project", required: true
146
- option :format, aliases: "-f", default: 'text', enum: ['text', 'yaml', 'json'], desc: "Output format"
147
- desc "preview ID", "Preview a pipeline"
148
- long_desc <<-LONGDESC
149
- `xapixctl preview` will return a preview of the given pipeline.
150
-
151
- The preview function will not call any external data sources but calculate a preview based on the provided sample data.
152
-
153
- To preview a pipeline attached to an endpoint, please use `xapixctl preview-ep` to see the correct preview.
154
-
155
- Examples:
156
- \x5> $ xapixctl preview -o xapix -p some-project pipeline
157
- LONGDESC
158
- def preview(pipeline)
159
- connection.pipeline_preview(pipeline, org: options[:org], project: options[:project], format: options[:format].to_sym) do |res|
160
- res.on_success { |preview| puts preview }
161
- res.on_error { |err, result| warn_api_error('could not fetch preview', err, result) }
162
- end
163
- end
164
-
165
- option :org, aliases: "-o", desc: "Organization", required: true
166
- option :project, aliases: "-p", desc: "Project", required: true
167
- option :format, aliases: "-f", default: 'text', enum: ['text', 'yaml', 'json'], desc: "Output format"
168
- desc "preview-ep ID", "Preview an endpoint"
169
- long_desc <<-LONGDESC
170
- `xapixctl preview-ep` will return a preview of the given endpoint.
171
-
172
- The preview function will not call any external data sources but calculate a preview based on the provided sample data.
173
-
174
- Examples:
175
- \x5> $ xapixctl preview-ep -o xapix -p some-project endpoint
176
- LONGDESC
177
- def preview_ep(endpoint)
178
- connection.endpoint_preview(endpoint, org: options[:org], project: options[:project], format: options[:format].to_sym) do |res|
179
- res.on_success { |preview| puts preview }
180
- res.on_error { |err, result| warn_api_error('could not fetch preview', err, result) }
181
- end
182
- end
183
-
184
142
  option :org, aliases: "-o", desc: "Organization", required: true
185
143
  option :project, aliases: "-p", desc: "Project", required: true
186
144
  desc "publish", "Publishes the current version of the given project"
@@ -230,43 +188,5 @@ module Xapixctl
230
188
  res.on_error { |err, result| warn_api_error("could not get", err, result) }
231
189
  end
232
190
  end
233
-
234
- private
235
-
236
- def warn_api_error(text, err, result)
237
- details = "\n " + result['errors'].map { |k| k['detail'] }.join("\n ") rescue err.to_s
238
- warn "#{text}: #{details}"
239
- exit 1
240
- end
241
-
242
- def show_deployment_status(result)
243
- return unless result && result['project_publication']
244
- puts "deployment: #{result.dig('project_publication', 'deployment')}"
245
- puts " data api: #{result.dig('project_publication', 'data_api')} (version: #{result.dig('project_publication', 'data_api_version').presence || 'n/a'})"
246
- puts " user management: #{result.dig('project_publication', 'user_management')}"
247
- if result.dig('project_publication', 'deployment') == 'success'
248
- puts " base URL: #{result.dig('project_publication', 'base_url')}"
249
- end
250
- end
251
-
252
- DOCUMENT_STRUCTURE = %w[version kind metadata definition].freeze
253
- def resources_from_file(filename)
254
- yaml_string = filename == '-' ? $stdin.read : IO.read(filename)
255
- yaml_string.split(/^---\s*\n/).map { |yml| Psych.safe_load(yml) }.compact.each do |doc|
256
- unless (DOCUMENT_STRUCTURE - doc.keys.map(&:to_s)).empty?
257
- warn "does not look like a correct resource definition:"
258
- warn doc.inspect
259
- exit 1
260
- end
261
- yield doc
262
- end
263
- end
264
-
265
- def connection
266
- url = options[:xapix_url] || ENV['XAPIX_URL'] || 'https://cloud.xapix.io/'
267
- token = options[:xapix_token] || ENV['XAPIX_TOKEN']
268
- raise Thor::RequiredArgumentMissingError, "no XAPIX_TOKEN given. Either use --xapix_token [TOKEN] or set environment variable XAPIX_TOKEN (recommended)" if !token
269
- PhoenixClient::Connection.new(url, token)
270
- end
271
191
  end
272
192
  end
@@ -2,7 +2,6 @@
2
2
 
3
3
  module Xapixctl
4
4
  module PhoenixClient
5
-
6
5
  class ResultHandler
7
6
  def initialize(default_success_handler:, default_error_handler:)
8
7
  @success_handler = default_success_handler
@@ -34,12 +33,12 @@ module Xapixctl
34
33
  end
35
34
 
36
35
  TEXT_FORMATTERS = {
37
- all: ->(data) { "id : %{id}\nkind: %{kind}\nname: %{name}\n\n" % { id: data.dig('metadata', 'id'), kind: data.dig('kind'), name: data.dig('definition', 'name') } }
36
+ all: ->(data) { "id : %<id>s\nkind: %<kind>s\nname: %<name>s\n\n" % { id: data.dig('metadata', 'id'), kind: data['kind'], name: data.dig('definition', 'name') } }
38
37
  }.freeze
39
38
 
40
39
  FORMATTERS = {
41
40
  json: ->(data) { JSON.pretty_generate(data) },
42
- yaml: ->(data) { Psych.dump(data.deep_transform_keys! { |k| k.to_s.camelize(:lower) }) },
41
+ yaml: ->(data) { Psych.dump(data) },
43
42
  text: ->(data) { (TEXT_FORMATTERS[data.dig('metadata', 'type')] || TEXT_FORMATTERS[:all]).call(data) }
44
43
  }.freeze
45
44
 
@@ -80,10 +79,13 @@ module Xapixctl
80
79
  Schema
81
80
  DataSource
82
81
  Pipeline
82
+ Service
83
83
  EndpointGroup
84
84
  Endpoint
85
85
  StreamGroup
86
86
  Stream
87
+ Scheduler
88
+ StreamProcessor
87
89
  ApiPublishing
88
90
  ApiPublishingRole
89
91
  ].freeze
@@ -134,6 +136,13 @@ module Xapixctl
134
136
  run { @client[endpoint_preview_path(org, project, endpoint_id)].get }
135
137
  end
136
138
 
139
+ def stream_processor_preview(stream_processor_id, org:, project:, format: :hash, &block)
140
+ result_handler(block).
141
+ prepare_data(->(data) { data['stream_processor_preview'] }).
142
+ formatter(PREVIEW_FORMATTERS[format]).
143
+ run { @client[stream_processor_preview_path(org, project, stream_processor_id)].get }
144
+ end
145
+
137
146
  def publish(org:, project:, &block)
138
147
  result_handler(block).
139
148
  run { @client[project_publications_path(org, project)].post('') }
@@ -190,6 +199,10 @@ module Xapixctl
190
199
  "/projects/#{org}/#{project}/endpoints/#{endpoint}/preview"
191
200
  end
192
201
 
202
+ def stream_processor_preview_path(org, project, stream_processor)
203
+ "/projects/#{org}/#{project}/stream_processors/#{stream_processor}/preview"
204
+ end
205
+
193
206
  def project_publications_path(org, project)
194
207
  "/projects/#{org}/#{project}/publications"
195
208
  end
@@ -0,0 +1,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'xapixctl/base_cli'
4
+
5
+ module Xapixctl
6
+ class Preview < BaseCli
7
+ option :org, aliases: "-o", desc: "Organization", required: true
8
+ option :project, aliases: "-p", desc: "Project", required: true
9
+ option :format, aliases: "-f", default: 'text', enum: ['text', 'yaml', 'json'], desc: "Output format"
10
+ desc "pipeline ID", "Preview a pipeline"
11
+ long_desc <<-LONGDESC
12
+ `xapixctl preview pipeline` will return a preview of the given pipeline.
13
+
14
+ The preview function will not call any external data sources but calculate a preview based on the provided sample data.
15
+
16
+ To preview a pipeline attached to an endpoint, please use `xapixctl preview endpoint` to see the correct preview.
17
+
18
+ Examples:
19
+ \x5> $ xapixctl preview pipeline -o xapix -p some-project pipeline
20
+ LONGDESC
21
+ def pipeline(pipeline)
22
+ connection.pipeline_preview(pipeline, org: options[:org], project: options[:project], format: options[:format].to_sym) do |res|
23
+ res.on_success { |preview| puts preview }
24
+ res.on_error { |err, result| warn_api_error('could not fetch preview', err, result) }
25
+ end
26
+ end
27
+
28
+ option :org, aliases: "-o", desc: "Organization", required: true
29
+ option :project, aliases: "-p", desc: "Project", required: true
30
+ option :format, aliases: "-f", default: 'text', enum: ['text', 'yaml', 'json'], desc: "Output format"
31
+ desc "endpoint ID", "Preview an endpoint"
32
+ long_desc <<-LONGDESC
33
+ `xapixctl preview endpoint` will return a preview of the given endpoint.
34
+
35
+ The preview function will not call any external data sources but calculate a preview based on the provided sample data.
36
+
37
+ Examples:
38
+ \x5> $ xapixctl preview endpoint -o xapix -p some-project endpoint
39
+ LONGDESC
40
+ def endpoint(endpoint)
41
+ connection.endpoint_preview(endpoint, org: options[:org], project: options[:project], format: options[:format].to_sym) do |res|
42
+ res.on_success { |preview| puts preview }
43
+ res.on_error { |err, result| warn_api_error('could not fetch preview', err, result) }
44
+ end
45
+ end
46
+
47
+ option :org, aliases: "-o", desc: "Organization", required: true
48
+ option :project, aliases: "-p", desc: "Project", required: true
49
+ option :format, aliases: "-f", default: 'text', enum: ['text', 'yaml', 'json'], desc: "Output format"
50
+ desc "stream-processor ID", "Preview a stream processor"
51
+ long_desc <<-LONGDESC
52
+ `xapixctl preview stream-processor` will return a preview of the given stream processor.
53
+
54
+ The preview function will not call any external data sources but calculate a preview based on the provided sample data.
55
+
56
+ Examples:
57
+ \x5> $ xapixctl preview stream-processor -o xapix -p some-project processor
58
+ LONGDESC
59
+ def stream_processor(stream_processor)
60
+ connection.stream_processor_preview(stream_processor, org: options[:org], project: options[:project], format: options[:format].to_sym) do |res|
61
+ res.on_success { |preview| puts preview }
62
+ res.on_error { |err, result| warn_api_error('could not fetch preview', err, result) }
63
+ end
64
+ end
65
+ end
66
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Xapixctl
2
- VERSION = "1.1.0"
4
+ VERSION = "1.1.1"
3
5
  end
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.authors = ["Michael Reinsch"]
9
9
  spec.email = ["michael@xapix.io"]
10
10
 
11
- spec.summary = %q{xapix client library and command line tool}
11
+ spec.summary = 'xapix client library and command line tool'
12
12
  spec.homepage = "https://github.com/xapix-io/xapixctl"
13
13
  spec.license = "EPL-2.0"
14
14
 
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  # Specify which files should be added to the gem when it is released.
19
19
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
20
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
20
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
21
21
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
22
  end
23
23
  spec.bindir = "exe"
@@ -26,11 +26,11 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency "activesupport", ">= 5.2.3", "< 6.0.0"
28
28
  spec.add_dependency "rest-client", ">= 2.1.0", "< 3.0.0"
29
- spec.add_dependency "thor", ">= 0.20.3", "< 1.0.0"
29
+ spec.add_dependency "thor", ">= 1.0.0", "< 1.1.0"
30
30
 
31
31
  spec.add_development_dependency "bundler", "~> 1.17.3"
32
32
  spec.add_development_dependency "rake", "~> 13.0"
33
33
  spec.add_development_dependency "relaxed-rubocop", "~> 2.5"
34
34
  spec.add_development_dependency "rspec", "~> 3.0"
35
- spec.add_development_dependency "rubocop", "~> 0.85.0"
35
+ spec.add_development_dependency "rubocop", "~> 0.89"
36
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xapixctl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Reinsch
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-22 00:00:00.000000000 Z
11
+ date: 2020-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -56,20 +56,20 @@ dependencies:
56
56
  requirements:
57
57
  - - ">="
58
58
  - !ruby/object:Gem::Version
59
- version: 0.20.3
59
+ version: 1.0.0
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: 1.0.0
62
+ version: 1.1.0
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 0.20.3
69
+ version: 1.0.0
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: 1.0.0
72
+ version: 1.1.0
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: bundler
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -132,14 +132,14 @@ dependencies:
132
132
  requirements:
133
133
  - - "~>"
134
134
  - !ruby/object:Gem::Version
135
- version: 0.85.0
135
+ version: '0.89'
136
136
  type: :development
137
137
  prerelease: false
138
138
  version_requirements: !ruby/object:Gem::Requirement
139
139
  requirements:
140
140
  - - "~>"
141
141
  - !ruby/object:Gem::Version
142
- version: 0.85.0
142
+ version: '0.89'
143
143
  description:
144
144
  email:
145
145
  - michael@xapix.io
@@ -161,8 +161,10 @@ files:
161
161
  - bin/setup
162
162
  - exe/xapixctl
163
163
  - lib/xapixctl.rb
164
+ - lib/xapixctl/base_cli.rb
164
165
  - lib/xapixctl/cli.rb
165
166
  - lib/xapixctl/phoenix_client.rb
167
+ - lib/xapixctl/preview_cli.rb
166
168
  - lib/xapixctl/version.rb
167
169
  - xapixctl.gemspec
168
170
  homepage: https://github.com/xapix-io/xapixctl