gemstack-cli 0.2.2 → 0.2.3
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 +4 -0
- data/lib/gemstack/cli/app_generator.rb +9 -2
- data/lib/gemstack/cli/doctor.rb +15 -14
- data/templates/app/Gemfile.tt +1 -1
- data/templates/app/dot_node-version.tt +1 -0
- data/templates/app/dot_nvmrc.tt +1 -0
- data/templates/app/dot_tool-versions.tt +3 -0
- metadata +8 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3b7ea1041a871d84d72d33529ee4b303145363665a6605d0cc5d533fd4604157
|
|
4
|
+
data.tar.gz: 02625e8747b1efe7fae2191d356376bc8bdde1500d892cef5f945badb1d5451d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 96aabfd8af652f60639dd4aa4b155351b654be18ff569a262520c1fec6a1d7f73a1f192c62b7dba551eb4bbdce86fc3e4ad1a00f100d4b4ad6ba51e5a3e56f21
|
|
7
|
+
data.tar.gz: 2efe2c5964c8a597efae119096f5293b635574b1b2db68b5be483a203d2d3228ec3ff87018f37865a5caf081b1efd7b97708b55d44465cba61bab223aed6d210
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require "gemstack/dev"
|
|
4
|
+
|
|
3
5
|
module GemStack
|
|
4
6
|
class CLI < Thor
|
|
5
7
|
# `gemstack new NAME` — a Ruby API + Next.js application containing the
|
|
@@ -30,8 +32,12 @@ module GemStack
|
|
|
30
32
|
|
|
31
33
|
def version = GemStack::VERSION
|
|
32
34
|
|
|
33
|
-
# Pins the app to the Ruby that generated it
|
|
35
|
+
# Pins the app to the Ruby that generated it, in files every version
|
|
36
|
+
# manager reads (.ruby-version: rbenv, rvm, chruby, asdf, mise;
|
|
37
|
+
# .tool-versions: asdf, mise), and Node.js likewise (.node-version,
|
|
38
|
+
# .nvmrc, .tool-versions) — DECISIONS D-066.
|
|
34
39
|
def ruby_version = RUBY_VERSION
|
|
40
|
+
def node_version = @node_version ||= Dev::Toolchain.pinned_node_version
|
|
35
41
|
def frontend? = !@options[:skip_frontend]
|
|
36
42
|
def database? = !@options[:skip_database]
|
|
37
43
|
|
|
@@ -54,7 +60,8 @@ module GemStack
|
|
|
54
60
|
database_adapter if database? # fail early on an unknown --database
|
|
55
61
|
@output.puts("Creating GemStack application #{name} in #{destination}")
|
|
56
62
|
render_directory("app", destination, skip: lambda { |rel|
|
|
57
|
-
!database? && (rel.start_with?("db/", "app/models/") || rel == "config/database.yml.tt")
|
|
63
|
+
(!database? && (rel.start_with?("db/", "app/models/") || rel == "config/database.yml.tt")) ||
|
|
64
|
+
(!frontend? && %w[dot_node-version.tt dot_nvmrc.tt].include?(rel))
|
|
58
65
|
})
|
|
59
66
|
render_directory("frontend", File.join(destination, "frontend")) if frontend?
|
|
60
67
|
install unless @options[:skip_install]
|
data/lib/gemstack/cli/doctor.rb
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require "open3"
|
|
4
4
|
require "socket"
|
|
5
|
+
require "gemstack/dev"
|
|
5
6
|
|
|
6
7
|
module GemStack
|
|
7
8
|
class CLI < Thor
|
|
@@ -50,11 +51,11 @@ module GemStack
|
|
|
50
51
|
|
|
51
52
|
def check_ruby
|
|
52
53
|
wanted = read(".ruby-version")&.strip&.delete_prefix("ruby-")
|
|
53
|
-
if
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
elsif
|
|
57
|
-
|
|
54
|
+
if !Dev::Toolchain.ruby_ok?
|
|
55
|
+
problem("Ruby #{RUBY_VERSION}", "GemStack needs Ruby #{Dev::Toolchain::MIN_RUBY} or newer — " \
|
|
56
|
+
"#{Dev::Toolchain.ruby_hint(wanted.to_s.empty? ? "3.4" : wanted)}")
|
|
57
|
+
elsif wanted && !wanted.empty? && !RUBY_VERSION.start_with?(wanted)
|
|
58
|
+
caution("Ruby #{RUBY_VERSION}", "the app pins #{wanted} (.ruby-version) — #{Dev::Toolchain.ruby_hint(wanted)}")
|
|
58
59
|
else
|
|
59
60
|
pass("Ruby #{RUBY_VERSION}#{" (YJIT available)" if defined?(RubyVM::YJIT)}")
|
|
60
61
|
end
|
|
@@ -63,17 +64,17 @@ module GemStack
|
|
|
63
64
|
def check_node
|
|
64
65
|
return unless File.directory?(path("frontend"))
|
|
65
66
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if
|
|
69
|
-
problem("Node.js not found",
|
|
70
|
-
elsif (version
|
|
71
|
-
problem("Node.js #{version}
|
|
67
|
+
node = Dev::Toolchain.node(@run)
|
|
68
|
+
wanted = read(".node-version")&.strip || read(".nvmrc")&.strip || Dev::Toolchain::LTS_NODE
|
|
69
|
+
if node.nil?
|
|
70
|
+
problem("Node.js not found", Dev::Toolchain.node_hint(wanted, nil))
|
|
71
|
+
elsif !Dev::Toolchain.node_ok?(node[:version])
|
|
72
|
+
problem("Node.js #{node[:version]} (#{node[:path]})",
|
|
73
|
+
"Next.js 16 needs #{MIN_NODE.join(".")}+ — " \
|
|
74
|
+
"#{Dev::Toolchain.node_hint(wanted, Dev::Toolchain.node_manager(node[:path]))}")
|
|
72
75
|
else
|
|
73
|
-
pass("Node.js #{version}")
|
|
76
|
+
pass("Node.js #{node[:version]}")
|
|
74
77
|
end
|
|
75
|
-
rescue SystemCallError
|
|
76
|
-
problem("Node.js not found", "install Node.js #{MIN_NODE.join(".")}+ (the frontend is Next.js)")
|
|
77
78
|
end
|
|
78
79
|
|
|
79
80
|
def check_frontend_dependencies
|
data/templates/app/Gemfile.tt
CHANGED
|
@@ -38,7 +38,7 @@ gem "<%= driver_gem %>", "<%= driver_version %>" # the <%= database_adapter %> d
|
|
|
38
38
|
# gem "stripe"
|
|
39
39
|
|
|
40
40
|
group :development, :test do
|
|
41
|
-
gem "irb" # `gemstack console
|
|
41
|
+
gem "irb" # `gemstack console` (a bundled gem, not a default one, in newer Rubies)
|
|
42
42
|
gem "minitest", "~> 5.25"
|
|
43
43
|
gem "rack-test", "~> 2.2"
|
|
44
44
|
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= node_version %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<%= node_version %>
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gemstack-cli
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Adware Technologies
|
|
@@ -16,28 +16,28 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - '='
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.2.
|
|
19
|
+
version: 0.2.3
|
|
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: 0.2.
|
|
26
|
+
version: 0.2.3
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: gemstack-dev
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - '='
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 0.2.
|
|
33
|
+
version: 0.2.3
|
|
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.2.
|
|
40
|
+
version: 0.2.3
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: thor
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -99,6 +99,8 @@ files:
|
|
|
99
99
|
- templates/app/db/seeds.rb
|
|
100
100
|
- templates/app/dot_env.example.tt
|
|
101
101
|
- templates/app/dot_gitignore
|
|
102
|
+
- templates/app/dot_node-version.tt
|
|
103
|
+
- templates/app/dot_nvmrc.tt
|
|
102
104
|
- templates/app/dot_ruby-version.tt
|
|
103
105
|
- templates/app/dot_tool-versions.tt
|
|
104
106
|
- templates/app/test/health_test.rb
|
|
@@ -190,7 +192,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
190
192
|
requirements:
|
|
191
193
|
- - ">="
|
|
192
194
|
- !ruby/object:Gem::Version
|
|
193
|
-
version: '
|
|
195
|
+
version: '3.3'
|
|
194
196
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
195
197
|
requirements:
|
|
196
198
|
- - ">="
|