strata-cli 0.1.1.beta → 0.1.3.beta

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: d9887ae6b4d871118361a7ef0b90c6b07a5095c59f8b7acc812aefc4ef8e5a58
4
- data.tar.gz: e2fba95feba89bb6193d563f7b2dba3e594ea57915c56700f9228b29783c942a
3
+ metadata.gz: 0dc0377469e1bfb8d12c50f839b1f530d2104b1b894e5623d0f009081e60f1e5
4
+ data.tar.gz: f4595f187e23891e5b1d64ef384ae48b1d3e73bd34a5ab8afefab9886b95f5ad
5
5
  SHA512:
6
- metadata.gz: d131c145bc2cf2aab4c532266f2d7bd8df1026053ff3b0cce4734867132ec6f2500147b645aecf28fe1e2a3d3d99803d26ce02e7484f6f0d4c9a399fa9ccd8e0
7
- data.tar.gz: a7c089088c80acbc89e9de821de1ab482a4d51f685ac3a06089f1e0469945e05720fdebdb09ea9d114c14cf7c7768c0073d5b3a26bcf357a45ba7fbc474723ce
6
+ metadata.gz: b13368ec18b1d53316d3eb01f42f869ff81e8297b2f5451c337073cf0fed8400694a629136c3bbc8bec9b3bfd1affd786a9b1343a4b9b6f3561089d5aba86e9c
7
+ data.tar.gz: c47cfbdd8e1d54dda6b9b92b3e6385bf14f8d0e03c608721436dafeb70177fe2f51893003721edd1bebb757bbd8f0eefc3164c6c9287707ffc8ee3f86d2175f1
data/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [0.1.3.beta] - 2026-01-28
4
+
5
+ ### Added
6
+
7
+ - **Runtime adapter driver checks**: When a datasource is used, the CLI now verifies that required driver gems (pg, mysql2, tiny_tds, sqlite3, aws-sdk-*, trino-client, duckdb) are installed, and surfaces adapter-specific guidance if they are not.
8
+
9
+ ### Changed
10
+
11
+ - **Adapter installation behavior**: On first use of any adapter, the CLI will attempt to install any missing driver gem once; if installation still fails, it raises a clear `Strata::CommandError` with likely causes and manual install instructions.
12
+ - **DuckDB handling**: DuckDB now follows the same “try install once, then explain” pattern as other adapters, with extra hints for DuckDB’s native build and header/library requirements. DuckDB is still not a default dependency.
13
+
14
+ ## [0.1.2.beta] - 2025-01-27
15
+
16
+ ### Added
17
+
18
+ - **Version checker**: Notifies when a newer strata-cli is available on Rubygems. Uses a 24-hour cache; set `STRATA_SKIP_VERSION_CHECK=true` to disable. Skipped for `version` and `help` commands.
19
+ - **Git requirement check**: Exits with a clear error when Git is not installed (required for deploy and other features). Skipped for `version` and `help` commands.
20
+
21
+ ### Changed
22
+
23
+ - **Ruby requirement**: `required_ruby_version` set to `>= 3.4.4` (aligned with dwh gem).
24
+ - **CI**: Test on Ruby 3.4.4 and 3.4.5.
25
+ - **README**: Document Ruby and dwh requirements (>= 3.4.4), native dependencies (pg, mysql2, tiny_tds) with install hints, and installation troubleshooting.
26
+
3
27
  ## [0.1.1.beta] - 2025-01-22
4
28
 
5
29
  - Initial release
data/README.md CHANGED
@@ -4,6 +4,8 @@ Command-line interface for the Strata Semantic Analytics System. Create, manage,
4
4
 
5
5
  ## Installation
6
6
 
7
+ ### Basic Installation
8
+
7
9
  ```bash
8
10
  gem install strata-cli
9
11
  ```
@@ -12,7 +14,12 @@ gem install strata-cli
12
14
 
13
15
  - Ruby >= 3.4.4
14
16
  - Git (for deployment features)
15
- - Access to a Strata server
17
+
18
+ ## Dependencies
19
+
20
+
21
+ ### Adapter Gems and System Libraries
22
+
16
23
 
17
24
  ## Commands Overview
18
25
 
@@ -54,6 +61,9 @@ strata project link 12345
54
61
  ### `strata datasource adapters`
55
62
  List all supported data warehouse adapters.
56
63
 
64
+ ### `strata datasource check`
65
+ Check which database adapter gems are installed.
66
+
57
67
  ### `strata datasource list`
58
68
  List all configured datasources with their keys and display names.
59
69
 
@@ -256,6 +266,9 @@ strata a models # Validate models only
256
266
  ### `strata version`
257
267
  Print the CLI version.
258
268
 
269
+ ### `strata check`
270
+ Check which database adapter gems are installed (no project required).
271
+
259
272
  ### `strata adapters`
260
273
  List all supported data warehouse adapters.
261
274
 
@@ -8,7 +8,8 @@ module Strata
8
8
  adapters
9
9
  version
10
10
  deploy
11
- ]
11
+ ].freeze
12
+
12
13
  def invoke_command(command, *args)
13
14
  Utils.exit_error_if_not_strata! unless ALLOWED_COMMANDS.include?(command.name)
14
15
  super
@@ -3,6 +3,17 @@
3
3
  module Strata
4
4
  module CLI
5
5
  module DatasourceHelper
6
+ ADAPTER_DRIVER_GEMS = {
7
+ postgres: %w[pg],
8
+ redshift: %w[pg],
9
+ mysql: %w[mysql2],
10
+ sqlserver: %w[tiny_tds],
11
+ athena: %w[aws-sdk-athena aws-sdk-s3],
12
+ trino: %w[trino-client],
13
+ sqlite: %w[sqlite3],
14
+ duckdb: %w[duckdb]
15
+ }.freeze
16
+
6
17
  def resolve_datasource(ds_key_arg = nil, prompt: TTY::Prompt.new)
7
18
  # 1. Use argument if provided
8
19
  return validate_datasource(ds_key_arg) if ds_key_arg
@@ -29,7 +40,44 @@ module Strata
29
40
 
30
41
  def create_adapter(ds_key)
31
42
  config = ds_config(ds_key).merge(Credentials.fetch(ds_key))
32
- DWH.create(config["adapter"].to_sym, config)
43
+ adapter_sym = config["adapter"].to_sym
44
+ ensure_adapter_driver_gems!(adapter_sym)
45
+ DWH.create(adapter_sym, config)
46
+ end
47
+
48
+ def ensure_adapter_driver_gems!(adapter_sym)
49
+ required = ADAPTER_DRIVER_GEMS.fetch(adapter_sym, [])
50
+ return if required.empty?
51
+
52
+ missing = required.reject { gem_installed?(it) }
53
+ return if missing.empty?
54
+
55
+ if respond_to?(:say)
56
+ say "Required gem(s) for '#{adapter_sym}' not found (#{missing.join(", ")}). Attempting to install...",
57
+ :yellow
58
+ end
59
+
60
+ missing.each do |gem_name|
61
+ system("gem", "install", gem_name, "-q", "--no-document")
62
+ end
63
+
64
+ still_missing = missing.reject { gem_installed?(it) }
65
+ return if still_missing.empty?
66
+
67
+ details = adapter_driver_gem_help(adapter_sym, still_missing)
68
+
69
+ msg = <<~MSG
70
+ Missing required gem(s) for adapter '#{adapter_sym}': #{still_missing.join(", ")}
71
+
72
+ This adapter can't be used until the driver gem(s) are installed.
73
+
74
+ Install manually:
75
+
76
+ gem install #{still_missing.join(" ")}
77
+
78
+ #{details}
79
+ MSG
80
+ raise Strata::CommandError, msg
33
81
  end
34
82
 
35
83
  def ds_config(ds_key)
@@ -57,6 +105,34 @@ module Strata
57
105
  {}
58
106
  end
59
107
  end
108
+
109
+ def gem_installed?(name)
110
+ Gem::Specification.find_by_name(name)
111
+ true
112
+ rescue Gem::MissingSpecError
113
+ false
114
+ end
115
+
116
+ def adapter_driver_gem_help(adapter_sym, missing)
117
+ case adapter_sym
118
+ when :postgres, :redshift
119
+ "Notes:\n- 'pg' requires PostgreSQL client libraries (libpq) installed on your system. See https://www.postgresql.org/download/"
120
+ when :mysql
121
+ "Notes:\n- 'mysql2' requires MySQL client libraries installed on your system. See https://dev.mysql.com/downloads/"
122
+ when :sqlserver
123
+ "Notes:\n- 'tiny_tds' requires FreeTDS and (often) OpenSSL installed on your system. See https://www.freetds.org/"
124
+ when :sqlite
125
+ "Notes:\n- 'sqlite3' requires SQLite development libraries installed on your system."
126
+ when :athena
127
+ "Notes:\n- AWS SDK gems are pure Ruby; no system libraries required."
128
+ when :trino
129
+ "Notes:\n- 'trino-client' is pure Ruby; no system libraries required."
130
+ when :duckdb
131
+ "Notes:\n- See https://github.com/suketa/ruby-duckdb"
132
+ else
133
+ "Notes:\n- Install missing gems: #{missing.join(", ")}"
134
+ end
135
+ end
60
136
  end
61
137
  end
62
138
  end
@@ -23,6 +23,17 @@ module Strata
23
23
  end
24
24
  end
25
25
 
26
+ desc "check", "Check which database adapter gems are installed"
27
+ def check
28
+ rows = adapter_gem_status.map do |adapter, info|
29
+ status = info[:installed] ? "✔" : "✗"
30
+ [adapter.to_s, info[:gem], status]
31
+ end
32
+ say "\n Adapter gem status:\n\n", :yellow
33
+ print_table(rows, headers: %w[Adapter Gem Installed], color: :magenta)
34
+ say "\n Install missing gems with: gem install <gem_name>", :cyan
35
+ end
36
+
26
37
  desc "list", "List current configured datasources by key and name"
27
38
  def list
28
39
  ds = begin
@@ -223,6 +234,20 @@ module Strata
223
234
 
224
235
  private
225
236
 
237
+ def adapter_gem_status
238
+ DatasourceHelper::ADAPTER_DRIVER_GEMS.to_h do |adapter, gems|
239
+ installed = gems.all? { |g| gem_installed?(g) }
240
+ [adapter, {gem: gems.join(", "), installed: installed}]
241
+ end
242
+ end
243
+
244
+ def gem_installed?(name)
245
+ Gem::Specification.find_by_name(name)
246
+ true
247
+ rescue Gem::MissingSpecError
248
+ false
249
+ end
250
+
226
251
  def validate_file_path(file_path, project_path = Dir.pwd)
227
252
  expanded = File.expand_path(file_path, project_path)
228
253
  project_root = File.expand_path(project_path)
@@ -113,6 +113,24 @@ module Strata
113
113
  File.directory?(".git")
114
114
  end
115
115
 
116
+ def git_available?
117
+ _, _, status = Open3.capture3("git", "--version")
118
+ status.success?
119
+ rescue
120
+ false
121
+ end
122
+
123
+ def check_requirement_and_exit_if_unavailable(args)
124
+ # Allow help and version commands to work without Git
125
+ command = args.first
126
+ return if args.empty? || %w[version help].include?(command)
127
+
128
+ return if git_available?
129
+
130
+ Thor::Shell::Color.new.say_error "ERROR: Git is required but not found. Please install Git to use strata-cli.", :red
131
+ exit 1
132
+ end
133
+
116
134
  def git_remote_url(remote_name = "origin")
117
135
  return nil unless git_repo?
118
136
 
@@ -0,0 +1,140 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "net/http"
4
+ require "uri"
5
+ require "json"
6
+ require "fileutils"
7
+ require "timeout"
8
+ require "thor"
9
+
10
+ module Strata
11
+ module CLI
12
+ module Utils
13
+ module VersionChecker
14
+ module_function
15
+
16
+ GEM_NAME = "strata-cli"
17
+ RUBYGEMS_API_URL = "https://rubygems.org/api/v1/gems/#{GEM_NAME}.json"
18
+ CACHE_FILE = File.join(ENV.fetch("TMPDIR", "/tmp"), "strata-cli-version-check-cache")
19
+ CACHE_DURATION = 86_400 # 24 hours in seconds
20
+
21
+ def check_and_notify(current_version)
22
+ return if skip_check?
23
+
24
+ latest_version = fetch_latest_version
25
+ return unless latest_version
26
+
27
+ if newer_version_available?(current_version, latest_version)
28
+ display_update_message(latest_version)
29
+ end
30
+
31
+ update_cache
32
+ rescue
33
+ # Silently fail - version checking should never break the CLI
34
+ # In development, you might want to log this: warn "Version check failed: #{e.message}"
35
+ nil
36
+ end
37
+
38
+ def newer_version_available?(current, latest)
39
+ return false unless current && latest
40
+
41
+ # Simple version comparison (assumes semantic versioning)
42
+ # Convert non-numeric parts (like "beta") to 0 for comparison
43
+ current_parts = current.split(".").map { |p| p.to_i }
44
+ latest_parts = latest.split(".").map { |p| p.to_i }
45
+
46
+ # Pad with zeros if needed
47
+ max_length = [current_parts.length, latest_parts.length].max
48
+ current_parts += [0] * (max_length - current_parts.length)
49
+ latest_parts += [0] * (max_length - latest_parts.length)
50
+
51
+ # Compare arrays element by element
52
+ latest_parts.zip(current_parts).each do |latest_part, current_part|
53
+ return true if latest_part > current_part
54
+ return false if latest_part < current_part
55
+ end
56
+
57
+ false # Versions are equal
58
+ end
59
+
60
+ def fetch_latest_version
61
+ uri = URI(RUBYGEMS_API_URL)
62
+ http = Net::HTTP.new(uri.host, uri.port)
63
+ http.use_ssl = true
64
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
65
+ http.open_timeout = 2 # 2 second timeout
66
+ http.read_timeout = 2
67
+
68
+ response = http.get(uri.path)
69
+ parse_version_response(response)
70
+ rescue
71
+ # Silently fail - version checking should never break the CLI
72
+ # This includes SSL errors, network errors, timeouts, etc.
73
+ nil
74
+ end
75
+
76
+ def parse_version_response(response)
77
+ return nil unless response.is_a?(Net::HTTPSuccess)
78
+
79
+ data = JSON.parse(response.body)
80
+ data["version"]
81
+ rescue JSON::ParserError
82
+ nil
83
+ end
84
+
85
+ def display_update_message(version)
86
+ require_relative "../helpers/color_helper"
87
+ colors = ColorHelper
88
+
89
+ message = "💡 Tip: A new version of #{GEM_NAME} (#{version}) is available. " \
90
+ "Update with: #{colors.info("gem update strata-cli")}"
91
+
92
+ # Use Thor's say method for consistent output
93
+ shell = Thor::Shell::Color.new
94
+ shell.say "\n#{colors.warning(message)}\n"
95
+ end
96
+
97
+ def skip_check?
98
+ return true if ENV["STRATA_SKIP_VERSION_CHECK"] == "true"
99
+ return false unless cache_valid?
100
+
101
+ # Check was done recently, skip
102
+ true
103
+ end
104
+
105
+ def cache_valid?
106
+ return false unless File.exist?(CACHE_FILE)
107
+
108
+ cache_time = File.mtime(CACHE_FILE)
109
+ (Time.now - cache_time) < CACHE_DURATION
110
+ end
111
+
112
+ def update_cache
113
+ FileUtils.touch(CACHE_FILE)
114
+ end
115
+
116
+ def check_and_notify_if_needed(current_version, args)
117
+ # Skip version check for version and help commands
118
+ command = args.first
119
+ return if args.empty? || %w[version help].include?(command)
120
+
121
+ # Early return if we should skip (avoids any work when cache is valid)
122
+ return if skip_check?
123
+
124
+ begin
125
+ # Run synchronously with timeout to ensure it completes before process exits
126
+ Timeout.timeout(3) do
127
+ check_and_notify(current_version)
128
+ end
129
+ rescue Timeout::Error
130
+ # If it takes too long, silently fail
131
+ nil
132
+ rescue
133
+ # Silently fail - version checking should never break the CLI
134
+ nil
135
+ end
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Strata
4
4
  module CLI
5
- VERSION = "0.1.1.beta"
5
+ VERSION = "0.1.3.beta"
6
6
  end
7
7
  end
data/lib/strata/cli.rb CHANGED
@@ -4,6 +4,8 @@ require_relative "cli/version"
4
4
  require_relative "cli/configuration"
5
5
  require_relative "cli/main"
6
6
  require_relative "cli/utils"
7
+ require_relative "cli/utils/git"
8
+ require_relative "cli/utils/version_checker"
7
9
 
8
10
  module Strata
9
11
  class StrataError < StandardError; end
@@ -27,10 +29,16 @@ module Strata
27
29
  end
28
30
 
29
31
  def self.start(args)
30
- Main.start(args)
31
- rescue TTY::Reader::InputInterrupt
32
- warn "\nCancelled."
33
- exit(1)
32
+ Utils::Git.check_requirement_and_exit_if_unavailable(args)
33
+
34
+ begin
35
+ Main.start(args)
36
+ rescue TTY::Reader::InputInterrupt
37
+ warn "\nCancelled."
38
+ exit(1)
39
+ end
40
+
41
+ Utils::VersionChecker.check_and_notify_if_needed(VERSION, args)
34
42
  end
35
43
  end
36
44
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strata-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1.beta
4
+ version: 0.1.3.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ajo Abraham
@@ -11,77 +11,77 @@ cert_chain: []
11
11
  date: 1980-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: aws-sdk-athena
14
+ name: dwh
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: 0.1.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.0'
26
+ version: 0.1.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: dwh
28
+ name: pg
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.0
33
+ version: '1.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.1.0
40
+ version: '1.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: faraday
42
+ name: mysql2
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2.0'
47
+ version: '0.5'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2.0'
54
+ version: '0.5'
55
55
  - !ruby/object:Gem::Dependency
56
- name: mysql2
56
+ name: tiny_tds
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.5'
61
+ version: '3.0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.5'
68
+ version: '3.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: pastel
70
+ name: trino-client
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0.8'
75
+ version: '2.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0.8'
82
+ version: '2.0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: pg
84
+ name: aws-sdk-athena
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: ruby_llm
98
+ name: aws-sdk-s3
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
@@ -109,47 +109,75 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '1.0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: thor
112
+ name: faraday
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 1.3.2
117
+ version: '2.0'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 1.3.2
124
+ version: '2.0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: tiny_tds
126
+ name: sqlite3
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '3.0'
131
+ version: '2.0'
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '3.0'
138
+ version: '2.0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: trino-client
140
+ name: pastel
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '2.0'
145
+ version: '0.8'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '2.0'
152
+ version: '0.8'
153
+ - !ruby/object:Gem::Dependency
154
+ name: ruby_llm
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: thor
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 1.3.2
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 1.3.2
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: tty-prompt
155
183
  requirement: !ruby/object:Gem::Requirement
@@ -279,6 +307,7 @@ files:
279
307
  - lib/strata/cli/utils/git.rb
280
308
  - lib/strata/cli/utils/import_manager.rb
281
309
  - lib/strata/cli/utils/test_reporter.rb
310
+ - lib/strata/cli/utils/version_checker.rb
282
311
  - lib/strata/cli/utils/yaml_import_resolver.rb
283
312
  - lib/strata/cli/version.rb
284
313
  - sig/strata/cli.rbs