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 +4 -4
- data/CHANGELOG.md +24 -0
- data/README.md +14 -1
- data/lib/strata/cli/guard.rb +2 -1
- data/lib/strata/cli/helpers/datasource_helper.rb +77 -1
- data/lib/strata/cli/sub_commands/datasource.rb +25 -0
- data/lib/strata/cli/utils/git.rb +18 -0
- data/lib/strata/cli/utils/version_checker.rb +140 -0
- data/lib/strata/cli/version.rb +1 -1
- data/lib/strata/cli.rb +12 -4
- metadata +56 -27
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0dc0377469e1bfb8d12c50f839b1f530d2104b1b894e5623d0f009081e60f1e5
|
|
4
|
+
data.tar.gz: f4595f187e23891e5b1d64ef384ae48b1d3e73bd34a5ab8afefab9886b95f5ad
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
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
|
|
data/lib/strata/cli/guard.rb
CHANGED
|
@@ -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
|
-
|
|
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)
|
data/lib/strata/cli/utils/git.rb
CHANGED
|
@@ -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
|
data/lib/strata/cli/version.rb
CHANGED
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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.
|
|
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:
|
|
14
|
+
name: dwh
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
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:
|
|
26
|
+
version: 0.1.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
28
|
+
name: pg
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
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:
|
|
40
|
+
version: '1.0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: mysql2
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
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: '
|
|
54
|
+
version: '0.5'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
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
|
|
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
|
|
68
|
+
version: '3.0'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
|
-
name:
|
|
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
|
|
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
|
|
82
|
+
version: '2.0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
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:
|
|
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:
|
|
112
|
+
name: faraday
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
115
|
- - "~>"
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version:
|
|
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:
|
|
124
|
+
version: '2.0'
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
|
-
name:
|
|
126
|
+
name: sqlite3
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
128
128
|
requirements:
|
|
129
129
|
- - "~>"
|
|
130
130
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: '
|
|
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: '
|
|
138
|
+
version: '2.0'
|
|
139
139
|
- !ruby/object:Gem::Dependency
|
|
140
|
-
name:
|
|
140
|
+
name: pastel
|
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
|
142
142
|
requirements:
|
|
143
143
|
- - "~>"
|
|
144
144
|
- !ruby/object:Gem::Version
|
|
145
|
-
version: '
|
|
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: '
|
|
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
|