hanami-cli 2.1.0.rc1 → 2.1.0.rc2
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 +18 -0
- data/lib/hanami/cli/commands/app/assets/command.rb +0 -14
- data/lib/hanami/cli/commands/app/assets/compile.rb +1 -1
- data/lib/hanami/cli/commands/app/generate/action.rb +25 -4
- data/lib/hanami/cli/commands/app/generate/part.rb +10 -1
- data/lib/hanami/cli/commands/gem/new.rb +13 -4
- data/lib/hanami/cli/generators/app/slice/app_layout.erb +1 -1
- data/lib/hanami/cli/generators/app/slice_context.rb +2 -2
- data/lib/hanami/cli/generators/gem/app/app_layout.erb +3 -3
- data/lib/hanami/cli/generators/gem/app/package.json.erb +2 -1
- data/lib/hanami/cli/generators/gem/app.rb +1 -1
- data/lib/hanami/cli/generators/version.rb +3 -3
- data/lib/hanami/cli/version.rb +1 -1
- metadata +4 -4
- /data/lib/hanami/cli/generators/gem/app/{assets.mjs → assets.js} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa0dbea6bc97ed3a7d08b703e7fd9091def9a8326196d36c071fb8e3e9be654b
|
4
|
+
data.tar.gz: dc27646ce5d395932bd2fbddef1678cb5445959494270b8d5f149462a8648e90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac1ab34a920c7fea44106a75c8c7e8d1bb0e475ff1e48ce2ef9b87912e9da6c83aa847ddf56661db13a01551fd58e098245b6d8ac277ca7143c69681d97d5ece
|
7
|
+
data.tar.gz: 706d1bb79523ba8a7efd9281267de12a0f275be0b60374c619b132371e0339335e6a4112b7a53ed5951e57293799aea1b4a89ac5bf6f9ee718daec4e1c44ee45
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,24 @@
|
|
2
2
|
|
3
3
|
Hanami Command Line Interface
|
4
4
|
|
5
|
+
## v2.1.0.rc2 - 2023-11-08
|
6
|
+
|
7
|
+
### Added
|
8
|
+
|
9
|
+
- [Tim Riley] Add `--skip-tests` for `hanami generate` commands. This CLI option will skip tests generation.
|
10
|
+
|
11
|
+
### Changed
|
12
|
+
|
13
|
+
- [Tim Riley] Set `"type": "module"` in package.json, enabling ES modules by default
|
14
|
+
- [Tim Riley] Rename `config/assets.mjs` to `config/assets.js` (use a plain `.js` file extension)
|
15
|
+
|
16
|
+
### Fixed
|
17
|
+
|
18
|
+
- [Tim Riley] Use correct helper names in generated app layout
|
19
|
+
- [Luca Guidi] Ensure to generate apps with correct pre-release version of `hanami-assets` NPM package
|
20
|
+
- [Sean Collins] Print to stderr NPM installation errors when running `hanami install`
|
21
|
+
- [Sean Collins] Ensure to install missing gems after `hanami install` is ran
|
22
|
+
|
5
23
|
## v2.1.0.rc1 - 2023-11-01
|
6
24
|
|
7
25
|
### Added
|
@@ -42,20 +42,6 @@ module Hanami
|
|
42
42
|
[config.package_manager_run_command, "assets"]
|
43
43
|
end
|
44
44
|
|
45
|
-
# @since 2.1.0
|
46
|
-
# @api private
|
47
|
-
def entry_points
|
48
|
-
config.entry_points.map do |entry_point|
|
49
|
-
escape(entry_point)
|
50
|
-
end.join(" ")
|
51
|
-
end
|
52
|
-
|
53
|
-
# @since 2.1.0
|
54
|
-
# @api private
|
55
|
-
def destination
|
56
|
-
escape(config.destination)
|
57
|
-
end
|
58
|
-
|
59
45
|
# @since 2.1.0
|
60
46
|
# @api private
|
61
47
|
def escape(str)
|
@@ -22,12 +22,25 @@ module Hanami
|
|
22
22
|
DEFAULT_SKIP_VIEW = false
|
23
23
|
private_constant :DEFAULT_SKIP_VIEW
|
24
24
|
|
25
|
+
DEFAULT_SKIP_TESTS = false
|
26
|
+
private_constant :DEFAULT_SKIP_TESTS
|
27
|
+
|
25
28
|
argument :name, required: true, desc: "Action name"
|
26
29
|
option :url, required: false, type: :string, desc: "Action URL"
|
27
30
|
option :http, required: false, type: :string, desc: "Action HTTP method"
|
28
31
|
# option :format, required: false, type: :string, default: DEFAULT_FORMAT, desc: "Template format"
|
29
|
-
option
|
30
|
-
|
32
|
+
option \
|
33
|
+
:skip_view,
|
34
|
+
required: false,
|
35
|
+
type: :boolean,
|
36
|
+
default: DEFAULT_SKIP_VIEW,
|
37
|
+
desc: "Skip view and template generation"
|
38
|
+
option \
|
39
|
+
:skip_tests,
|
40
|
+
required: false,
|
41
|
+
type: :boolean,
|
42
|
+
default: DEFAULT_SKIP_TESTS,
|
43
|
+
desc: "Skip test generation"
|
31
44
|
option :slice, required: false, desc: "Slice name"
|
32
45
|
|
33
46
|
# rubocop:disable Layout/LineLength
|
@@ -60,8 +73,16 @@ module Hanami
|
|
60
73
|
|
61
74
|
# @since 2.0.0
|
62
75
|
# @api private
|
63
|
-
def call(
|
64
|
-
|
76
|
+
def call(
|
77
|
+
name:,
|
78
|
+
url: nil,
|
79
|
+
http: nil,
|
80
|
+
format: DEFAULT_FORMAT,
|
81
|
+
skip_view: DEFAULT_SKIP_VIEW,
|
82
|
+
skip_tests: DEFAULT_SKIP_TESTS, # rubocop:disable Lint/UnusedMethodArgument
|
83
|
+
slice: nil,
|
84
|
+
context: nil, **
|
85
|
+
)
|
65
86
|
slice = inflector.underscore(Shellwords.shellescape(slice)) if slice
|
66
87
|
name = naming.action_name(name)
|
67
88
|
*controller, action = name.split(ACTION_SEPARATOR)
|
@@ -12,8 +12,17 @@ module Hanami
|
|
12
12
|
# @since 2.1.0
|
13
13
|
# @api private
|
14
14
|
class Part < App::Command
|
15
|
+
DEFAULT_SKIP_TESTS = false
|
16
|
+
private_constant :DEFAULT_SKIP_TESTS
|
17
|
+
|
15
18
|
argument :name, required: true, desc: "Part name"
|
16
19
|
option :slice, required: false, desc: "Slice name"
|
20
|
+
option \
|
21
|
+
:skip_tests,
|
22
|
+
required: false,
|
23
|
+
type: :boolean,
|
24
|
+
default: DEFAULT_SKIP_TESTS,
|
25
|
+
desc: "Skip test generation"
|
17
26
|
|
18
27
|
example [
|
19
28
|
%(book (MyApp::Views::Parts::Book)),
|
@@ -36,7 +45,7 @@ module Hanami
|
|
36
45
|
|
37
46
|
# @since 2.0.0
|
38
47
|
# @api private
|
39
|
-
def call(name:, slice: nil, **)
|
48
|
+
def call(name:, slice: nil, skip_tests: DEFAULT_SKIP_TESTS, **) # rubocop:disable Lint/UnusedMethodArgument
|
40
49
|
slice = inflector.underscore(Shellwords.shellescape(slice)) if slice
|
41
50
|
|
42
51
|
generator.call(app.namespace, name, slice)
|
@@ -99,11 +99,16 @@ module Hanami
|
|
99
99
|
|
100
100
|
unless skip_assets
|
101
101
|
out.puts "Running npm install..."
|
102
|
-
system_call.call("npm", ["install"])
|
102
|
+
system_call.call("npm", ["install"]).tap do |result|
|
103
|
+
unless result.successful?
|
104
|
+
puts "NPM ERROR:"
|
105
|
+
puts(result.err.lines.map { |line| line.prepend(" ") })
|
106
|
+
end
|
107
|
+
end
|
103
108
|
end
|
104
109
|
|
105
110
|
out.puts "Running Hanami install..."
|
106
|
-
|
111
|
+
run_install_command!(head: head)
|
107
112
|
end
|
108
113
|
end
|
109
114
|
end
|
@@ -116,10 +121,14 @@ module Hanami
|
|
116
121
|
attr_reader :generator
|
117
122
|
attr_reader :system_call
|
118
123
|
|
119
|
-
def
|
124
|
+
def run_install_command!(head:)
|
120
125
|
head_flag = head ? " --head" : ""
|
121
126
|
bundler.exec("hanami install#{head_flag}").tap do |result|
|
122
|
-
|
127
|
+
if result.successful?
|
128
|
+
bundler.exec("check").successful? || bundler.exec("install")
|
129
|
+
else
|
130
|
+
raise HanamiInstallError.new(result.err)
|
131
|
+
end
|
123
132
|
end
|
124
133
|
end
|
125
134
|
end
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
6
|
<title><%= humanized_app_name %> - <%= humanized_slice_name %></title>
|
7
7
|
<%- if bundled_assets? -%>
|
8
|
-
<%%=
|
8
|
+
<%%= favicon_tag %>
|
9
9
|
<%= stylesheet_erb_tag %>
|
10
10
|
<%- end -%>
|
11
11
|
</head>
|
@@ -38,13 +38,13 @@ module Hanami
|
|
38
38
|
# @since 2.1.0
|
39
39
|
# @api private
|
40
40
|
def stylesheet_erb_tag
|
41
|
-
%(<%=
|
41
|
+
%(<%= stylesheet_tag "#{slice}/app" %>)
|
42
42
|
end
|
43
43
|
|
44
44
|
# @since 2.1.0
|
45
45
|
# @api private
|
46
46
|
def javascript_erb_tag
|
47
|
-
%(<%=
|
47
|
+
%(<%= javascript_tag "#{slice}/app" %>)
|
48
48
|
end
|
49
49
|
|
50
50
|
private
|
@@ -5,14 +5,14 @@
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
6
|
<title><%= humanized_app_name %></title>
|
7
7
|
<%- if generate_assets? -%>
|
8
|
-
<%%=
|
9
|
-
<%%=
|
8
|
+
<%%= favicon_tag %>
|
9
|
+
<%%= stylesheet_tag "app" %>
|
10
10
|
<%- end -%>
|
11
11
|
</head>
|
12
12
|
<body>
|
13
13
|
<%%= yield %>
|
14
14
|
<%- if generate_assets? -%>
|
15
|
-
<%%=
|
15
|
+
<%%= javascript_tag "app" %>
|
16
16
|
<%- end -%>
|
17
17
|
</body>
|
18
18
|
</html>
|
@@ -62,7 +62,7 @@ module Hanami
|
|
62
62
|
|
63
63
|
if context.generate_assets?
|
64
64
|
fs.write("package.json", t("package.json.erb", context))
|
65
|
-
fs.write("config/assets.
|
65
|
+
fs.write("config/assets.js", file("assets.js"))
|
66
66
|
fs.write("app/assets/js/app.js", t("app_js.erb", context))
|
67
67
|
fs.write("app/assets/css/app.css", t("app_css.erb", context))
|
68
68
|
fs.write("app/assets/images/favicon.ico", file("favicon.ico"))
|
@@ -9,7 +9,7 @@ module Hanami
|
|
9
9
|
# @since 2.0.0
|
10
10
|
# @api private
|
11
11
|
def self.version
|
12
|
-
return Hanami::VERSION if
|
12
|
+
return Hanami::VERSION if Hanami.const_defined?(:VERSION)
|
13
13
|
|
14
14
|
Hanami::CLI::VERSION
|
15
15
|
end
|
@@ -32,7 +32,7 @@ module Hanami
|
|
32
32
|
if prerelease?
|
33
33
|
result = result
|
34
34
|
.sub(/\.(alpha|beta|rc)/, '-\1')
|
35
|
-
.sub(/(alpha|beta|rc)(
|
35
|
+
.sub(/(alpha|beta|rc)(\d+)(?:\.\d+)?\Z/, '\1.\2')
|
36
36
|
end
|
37
37
|
|
38
38
|
"^#{result}"
|
@@ -41,7 +41,7 @@ module Hanami
|
|
41
41
|
# @since 2.0.0
|
42
42
|
# @api private
|
43
43
|
def self.prerelease?
|
44
|
-
version
|
44
|
+
version.match?(/alpha|beta|rc/)
|
45
45
|
end
|
46
46
|
|
47
47
|
# @example
|
data/lib/hanami/cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanami-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.0.
|
4
|
+
version: 2.1.0.rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -272,7 +272,7 @@ files:
|
|
272
272
|
- lib/hanami/cli/generators/gem/app/app_css.erb
|
273
273
|
- lib/hanami/cli/generators/gem/app/app_js.erb
|
274
274
|
- lib/hanami/cli/generators/gem/app/app_layout.erb
|
275
|
-
- lib/hanami/cli/generators/gem/app/assets.
|
275
|
+
- lib/hanami/cli/generators/gem/app/assets.js
|
276
276
|
- lib/hanami/cli/generators/gem/app/config_ru.erb
|
277
277
|
- lib/hanami/cli/generators/gem/app/dev
|
278
278
|
- lib/hanami/cli/generators/gem/app/env.erb
|
@@ -330,7 +330,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
330
330
|
- !ruby/object:Gem::Version
|
331
331
|
version: 1.3.1
|
332
332
|
requirements: []
|
333
|
-
rubygems_version: 3.4.
|
333
|
+
rubygems_version: 3.4.21
|
334
334
|
signing_key:
|
335
335
|
specification_version: 4
|
336
336
|
summary: Hanami CLI
|
File without changes
|