hanami-assets 2.1.0.rc2 → 2.1.0

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: 71f6b2236cb6f96e86f9bbf25453b179685db554ef87faa5c64a09457aaefea3
4
- data.tar.gz: 513533d8e23d48cc02dbaad76188724c934ddc4bf51bcd31b706fa61ef611a35
3
+ metadata.gz: 1a0f74ce24868eb7966c76d648440874d7379feec8a0dcf54cc2b2ec041b1e68
4
+ data.tar.gz: 70224e7d218a8ce723f33a6472e45864c49867816e96faf73efdeb0ae5693bd5
5
5
  SHA512:
6
- metadata.gz: b47ce4c26181b7f0bb21ec64522162fd212ba33ab9284bdbfafd7c8b96bb983ca90a220266f1a5608dd0b990ca4ed40dd0a130445aab6de60f824ca018423347
7
- data.tar.gz: 4df3a64885b684132af03c206ae224ad1f3855180aac4b6f15fb323dba8199f5195a4a0c5f6123854427888e96ff2b3201d037a6035b5a396b5561f9c2a5d26a
6
+ metadata.gz: 3843017a4e9ba13f467858ec0bc697ac89ee414c709a5a33cbd7f5b6d6a977b07d84961cb611983b4e2d0175e393354907de10d1191df396b64806913eee27ce
7
+ data.tar.gz: 4c60284918e679b1be855867bbcecc3b31901e3acf98c515cbda4c2d2cdd378c15ec988d43ce4346e03372966cc2bad7204b932a83027d7749bbacaa3729bdb9
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  # Hanami::Assets
2
2
  Assets management for Ruby web applications
3
3
 
4
+ ## v2.1.0 - 2024-02-27
5
+
6
+ ## v2.1.0.rc3 - 2024-02-16
7
+ ### Changed
8
+ - [Tim Riley] Require a `root:` argument when initializing `Hanami::Assets`. This should be the directory containing the compiled assets and their `assets.json` manifest file.
9
+ - [Tim Riley] Removed `manifest_path` setting; the manifest path is no longer user-configurable.
10
+ - [Tim Riley] Replaced `package_manager_run_command` setting with `node_command` setting.
11
+ - [Tim Riley] Removed unused `sources`, `entry_point_patterns` and `destination` settings.
12
+ - [Tim Riley] Removed `bin/hanami-assets` executable.
13
+
4
14
  ## v2.1.0.rc2 - 2023-11-08
5
15
 
6
16
  ## v2.1.0.rc1 - 2023-11-01
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "uri"
4
+
3
5
  module Hanami
4
6
  class Assets
5
7
  # Base URL
@@ -7,11 +9,6 @@ module Hanami
7
9
  # @since 2.1.0
8
10
  # @api private
9
11
  class BaseUrl
10
- # @since 2.1.0
11
- # @api private
12
- SEPARATOR = "/"
13
- private_constant :SEPARATOR
14
-
15
12
  # @since 2.1.0
16
13
  # @api private
17
14
  attr_reader :url
@@ -17,12 +17,12 @@ module Hanami
17
17
  BASE_URL = ""
18
18
  private_constant :BASE_URL
19
19
 
20
- # @!attribute [rw] package_manager_run_command
20
+ # @!attribute [rw] node_command
21
21
  # @return [String]
22
22
  #
23
23
  # @api public
24
24
  # @since 2.1.0
25
- setting :package_manager_run_command, default: "npm run --silent"
25
+ setting :node_command, default: "node"
26
26
 
27
27
  # @!attribute [rw] path_prefix
28
28
  # @return [String]
@@ -51,13 +51,6 @@ module Hanami
51
51
  # @since 2.1.0
52
52
  setting :base_url, constructor: -> url { BaseUrl.new(url.to_s) }
53
53
 
54
- # @!attribute [rw] manifest_path
55
- # @return [String, nil]
56
- #
57
- # @api public
58
- # @since 2.1.0
59
- setting :manifest_path
60
-
61
54
  # @api public
62
55
  # @since 2.1.0
63
56
  def initialize(**values)
@@ -9,13 +9,6 @@ module Hanami
9
9
  class Error < ::StandardError
10
10
  end
11
11
 
12
- # Error raised when assets config is not valid.
13
- #
14
- # @api public
15
- # @since 2.1.0
16
- class ConfigError < Error
17
- end
18
-
19
12
  # Error returned when the assets manifest file is missing.
20
13
  #
21
14
  # @api public
@@ -5,6 +5,6 @@ module Hanami
5
5
  # Defines the version
6
6
  #
7
7
  # @since 0.1.0
8
- VERSION = "2.1.0.rc2"
8
+ VERSION = "2.1.0"
9
9
  end
10
10
  end
data/lib/hanami/assets.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "json"
4
+ require "pathname"
4
5
  require "zeitwerk"
5
6
 
6
7
  module Hanami
@@ -28,19 +29,38 @@ module Hanami
28
29
  require_relative "assets/version"
29
30
  require_relative "assets/errors"
30
31
 
32
+ # Returns the directory (under `public/assets/`) to be used for storing a slice's compiled
33
+ # assets.
34
+ #
35
+ # This is shared logic used by both Hanami (for the assets provider) and Hanami::CLI (for the
36
+ # assets commands).
37
+ #
38
+ # @since 2.1.0
39
+ # @api private
40
+ def self.public_assets_dir(slice)
41
+ return nil if slice.app.eql?(slice)
42
+
43
+ slice.slice_name.to_s.split("/").map { |name| "_#{name}" }.join("/")
44
+ end
45
+
31
46
  # @api private
32
47
  # @since 2.1.0
33
- SEPARATOR = "/"
34
- private_constant :SEPARATOR
48
+ MANIFEST_PATH = "assets.json"
49
+ private_constant :MANIFEST_PATH
35
50
 
36
51
  # @api private
37
52
  # @since 2.1.0
38
53
  attr_reader :config
39
54
 
55
+ # @api private
56
+ # @since 2.1.0
57
+ attr_reader :root
58
+
40
59
  # @api public
41
60
  # @since 2.1.0
42
- def initialize(config:)
61
+ def initialize(config:, root:)
43
62
  @config = config
63
+ @root = Pathname(root)
44
64
  end
45
65
 
46
66
  # Returns the asset at the given path.
@@ -92,15 +112,13 @@ module Hanami
92
112
  def manifest
93
113
  return @manifest if instance_variable_defined?(:@manifest)
94
114
 
95
- unless config.manifest_path
96
- raise ConfigError, "no manifest_path configured"
97
- end
115
+ full_manifest_path = root.join(MANIFEST_PATH)
98
116
 
99
- unless File.exist?(config.manifest_path)
100
- raise ManifestMissingError.new(config.manifest_path)
117
+ unless full_manifest_path.exist?
118
+ raise ManifestMissingError.new(full_manifest_path.to_s)
101
119
  end
102
120
 
103
- @manifest = JSON.parse(File.read(config.manifest_path))
121
+ @manifest = JSON.parse(File.read(full_manifest_path))
104
122
  end
105
123
  end
106
124
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanami-assets
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0.rc2
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Guidi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-08 00:00:00.000000000 Z
11
+ date: 2024-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zeitwerk
@@ -145,15 +145,13 @@ dependencies:
145
145
  description: Assets management for Ruby web applications
146
146
  email:
147
147
  - me@lucaguidi.com
148
- executables:
149
- - hanami-assets
148
+ executables: []
150
149
  extensions: []
151
150
  extra_rdoc_files: []
152
151
  files:
153
152
  - CHANGELOG.md
154
153
  - LICENSE.md
155
154
  - README.md
156
- - bin/hanami-assets
157
155
  - hanami-assets.gemspec
158
156
  - lib/hanami-assets.rb
159
157
  - lib/hanami/assets.rb
@@ -178,11 +176,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
178
176
  version: '3.0'
179
177
  required_rubygems_version: !ruby/object:Gem::Requirement
180
178
  requirements:
181
- - - ">"
179
+ - - ">="
182
180
  - !ruby/object:Gem::Version
183
- version: 1.3.1
181
+ version: '0'
184
182
  requirements: []
185
- rubygems_version: 3.4.21
183
+ rubygems_version: 3.5.6
186
184
  signing_key:
187
185
  specification_version: 4
188
186
  summary: Assets management
data/bin/hanami-assets DELETED
@@ -1,23 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require "optparse"
5
- require "pathname"
6
-
7
- options = {}
8
- OptionParser.new do |opts|
9
- opts.banner = "Usage: hanami-assets --config=path/to/config.rb"
10
-
11
- opts.on("-c", "--config FILE", "Path to config") do |c|
12
- options[:config] = c
13
- end
14
- end.parse!
15
-
16
- config = options.fetch(:config) { raise ArgumentError.new("You must specify a configuration file") }
17
- config = Pathname.new(config)
18
- config.exist? or raise ArgumentError.new("Cannot find configuration file: #{config}")
19
-
20
- require "hanami/assets"
21
- load config
22
-
23
- Hanami::Assets.deploy