xapixctl 1.1.0 → 1.1.1

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: 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