hanami-cli 2.1.0.rc1 → 2.1.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
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