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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '054178514bf7e420e00cd8da8a148cd4d479609668c180507fadbcd7a086f15d'
4
- data.tar.gz: 3ef8c388ad8c8734179ce042d3eb966dea6df881b72e7615f0b104a1890106a5
3
+ metadata.gz: aa0dbea6bc97ed3a7d08b703e7fd9091def9a8326196d36c071fb8e3e9be654b
4
+ data.tar.gz: dc27646ce5d395932bd2fbddef1678cb5445959494270b8d5f149462a8648e90
5
5
  SHA512:
6
- metadata.gz: c8e1abc0ded22d56ee2acd5dec6d9f7079c0331d187b1d4ff4b26858faf50ff870016e1adfa6b785673d39b6d0dcf097dca7c1b0526da442e1939ce0952f3799
7
- data.tar.gz: 8ecc3ceefc10856cbd2f60ec24bd1ecde442764610dbb7d179f064080ac434fa4829374efb05513c67420ab8b76b0280ad594fd566824fdfba0e8d14afc209fb
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)
@@ -19,7 +19,7 @@ module Hanami
19
19
 
20
20
  if config.subresource_integrity.any?
21
21
  result << "--"
22
- result << "--sri=#{config.subresource_integrity.join(',')}"
22
+ result << "--sri=#{escape(config.subresource_integrity.join(','))}"
23
23
  end
24
24
 
25
25
  result
@@ -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 :skip_view, required: false, type: :boolean, default: DEFAULT_SKIP_VIEW,
30
- desc: "Skip view and template generation"
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(name:, url: nil, http: nil, format: DEFAULT_FORMAT, skip_view: DEFAULT_SKIP_VIEW, slice: nil,
64
- context: nil, **)
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
- run_install_commmand!(head: head)
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 run_install_commmand!(head:)
124
+ def run_install_command!(head:)
120
125
  head_flag = head ? " --head" : ""
121
126
  bundler.exec("hanami install#{head_flag}").tap do |result|
122
- raise HanamiInstallError.new(result.err) unless result.successful?
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
- <%%= favicon %>
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
- %(<%= css "#{slice}/app" %>)
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
- %(<%= js "#{slice}/app" %>)
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
- <%%= favicon %>
9
- <%%= css "app" %>
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
- <%%= js "app" %>
15
+ <%%= javascript_tag "app" %>
16
16
  <%- end -%>
17
17
  </body>
18
18
  </html>
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "<%= underscored_app_name %>",
3
3
  "private": true,
4
+ "type": "module",
4
5
  "scripts": {
5
- "assets": "node config/assets.mjs"
6
+ "assets": "node config/assets.js"
6
7
  },
7
8
  "dependencies": {
8
9
  <%= hanami_assets_npm_package %>
@@ -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.mjs", file("assets.mjs"))
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 defined?(Hanami::VERSION)
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)(.+)\.(.+)$/, '\1.\2')
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 =~ /alpha|beta|rc/
44
+ version.match?(/alpha|beta|rc/)
45
45
  end
46
46
 
47
47
  # @example
@@ -6,6 +6,6 @@ module Hanami
6
6
  #
7
7
  # @api public
8
8
  # @since 2.0.0
9
- VERSION = "2.1.0.rc1"
9
+ VERSION = "2.1.0.rc2"
10
10
  end
11
11
  end
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.rc1
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-01 00:00:00.000000000 Z
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.mjs
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.13
333
+ rubygems_version: 3.4.21
334
334
  signing_key:
335
335
  specification_version: 4
336
336
  summary: Hanami CLI