fontist 1.15.2 → 1.16.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: d98d4d83f8bbfe87d19e6c11dd8d365810ac47ddeef59a8855f3fba7f9d5418d
4
- data.tar.gz: 4f349a35dfe3d164e599dee2e077625b8273dd91c6d4b698042bf25a54ba45a0
3
+ metadata.gz: 14a836d048cc0ce0d74885f256e3d7cb48466efcadd75008207e1568927ca8cc
4
+ data.tar.gz: 468355d3c50412aef7642ad44abf204edbf827a81d3ccfe327f274a90cddedcd
5
5
  SHA512:
6
- metadata.gz: 007af294bcd909651345c08df9f948dae6d62eb7c3e6f26048dc91df3542a53f417a9446c69790f9bfb017e3fd7d9389784938d37274223ff4e16bd1bae47703
7
- data.tar.gz: 4068f33a62c9e8afe20b3bd6c135fc642c9dcfc9738faa37b49f1e582a6e5b4d879e7d8df65c34554818b2dd1258bd76ee57b90f85b1a119bd3748263f5d374d
6
+ metadata.gz: 62e88a6ac1766b61ffe5db70b36f9b0bb8316d80c048d8df8de57e39e3387de1fd60c3cff1094f0b235d7bfab0979d2b4e4ed01eba12125852f745327e8641b1
7
+ data.tar.gz: 97338d5eee1a8df78555281d9bc765499f30c86b98913bae5b21729745e5e983ed257e8ee51d543802e69dc734eee64f464dd8b319c534c3b06c768a65267817
data/README.adoc CHANGED
@@ -123,7 +123,7 @@ for the newest version of the font among formulas with size below a limit
123
123
  (300 MB). This behavior can be changed with options.
124
124
 
125
125
  NOTE: If styles of a font are spread among several formulas, then all
126
- available formulas would be installed.
126
+ available styles from all formulas would be installed.
127
127
 
128
128
  Supported options:
129
129
 
@@ -936,6 +936,33 @@ its font location was only obtainable using the full "`Courier New`" font name.
936
936
  From v1.10 onwards the behavior has been made consistent -- only the proper
937
937
  "`Courier New`" name should be used.
938
938
 
939
+ [[install-font-change]]
940
+ ==== To v1.16+
941
+
942
+ Fontist versions beyond v1.16 treats the `font` argument of the `install`
943
+ command differently.
944
+ After the upgrade, please ensure all required fonts are specified when using
945
+ `fontist install`, `fontist manifest-install` (and their corresponding Ruby
946
+ interface `Font.install` and `Manifest::Install`), or use the `-F, --formula`
947
+ option.
948
+
949
+ Starting from v1.16, Fontist installs only requested fonts instead of a whole
950
+ formula, unless specified explicitly.
951
+ changed now.
952
+
953
+ For example, an installation request for the "`Arial`" font prior to v1.16 will
954
+ setup all fonts found in the "`ms_truetype`" formula: "`Arial`", "`Trebuchet
955
+ MS`", "`Verdana`" and "`Times New Roman`".
956
+
957
+ From v1.16 onwards, Fontist will install _only_ the requested "`Arial`" font.
958
+
959
+ To install all fonts from a formula, the `-F, --formula` option can be used:
960
+
961
+ [source,sh]
962
+ ----
963
+ $ fontist install --formula ms_truetype
964
+ ----
965
+
939
966
 
940
967
 
941
968
  == Maintenance (for Fontist maintainers only!)
data/fontist.gemspec CHANGED
@@ -46,7 +46,7 @@ Gem::Specification.new do |spec|
46
46
  spec.add_development_dependency "rake", "~> 13"
47
47
  spec.add_development_dependency "rspec", "~> 3.0"
48
48
  spec.add_development_dependency "rspec-benchmark", "~> 0.6"
49
- spec.add_development_dependency "rubocop", "~> 1.5"
49
+ spec.add_development_dependency "rubocop", "~> 1.22.1"
50
50
  spec.add_development_dependency "rubocop-rails", "~> 2.9"
51
51
  spec.add_development_dependency "rubocop-performance", "~> 1.10"
52
52
  end
data/lib/fontist/font.rb CHANGED
@@ -125,7 +125,10 @@ module Fontist
125
125
  end
126
126
 
127
127
  def font_installer(formula)
128
- FontInstaller.new(formula, no_progress: @no_progress)
128
+ options = { no_progress: @no_progress }
129
+ return FontInstaller.new(formula, **options) if @by_formula
130
+
131
+ FontInstaller.new(formula, font_name: @name, **options)
129
132
  end
130
133
 
131
134
  def sufficient_formulas
@@ -3,8 +3,9 @@ require "excavate"
3
3
 
4
4
  module Fontist
5
5
  class FontInstaller
6
- def initialize(formula, no_progress: false)
6
+ def initialize(formula, font_name: nil, no_progress: false)
7
7
  @formula = formula
8
+ @font_name = font_name
8
9
  @no_progress = no_progress
9
10
  end
10
11
 
@@ -90,9 +91,15 @@ module Fontist
90
91
 
91
92
  def source_files
92
93
  @source_files ||= @formula.fonts.flat_map do |font|
93
- font.styles.map do |style|
94
- style.source_font || style.font
95
- end
94
+ next [] if @font_name && !font.name.casecmp?(@font_name)
95
+
96
+ font_files(font)
97
+ end
98
+ end
99
+
100
+ def font_files(font)
101
+ font.styles.map do |style|
102
+ style.source_font || style.font
96
103
  end
97
104
  end
98
105
 
@@ -11,7 +11,7 @@ module Fontist
11
11
  end
12
12
 
13
13
  def call(formulas)
14
- return [] if formulas.size.zero?
14
+ return [] if formulas.empty?
15
15
  return formulas if contain_different_styles?(formulas)
16
16
  return by_version(formulas) if version_is_passed?
17
17
  return newest(formulas) if newest_is_passed?
@@ -82,7 +82,8 @@ module Fontist
82
82
 
83
83
  def filter_by_size_limit(formulas)
84
84
  formulas.select do |formula|
85
- formula.file_size.nil? || formula.file_size < size_limit_in_bytes
85
+ formula.file_size.nil? || resources_cached?(formula) ||
86
+ formula.file_size < size_limit_in_bytes
86
87
  end
87
88
  end
88
89
 
@@ -122,5 +123,11 @@ module Fontist
122
123
  formula.file_size || 0
123
124
  end
124
125
  end
126
+
127
+ def resources_cached?(formula)
128
+ Utils::Cache.new.already_fetched?(
129
+ formula.resources.flat_map(&:urls),
130
+ )
131
+ end
125
132
  end
126
133
  end
@@ -21,6 +21,11 @@ module Fontist
21
21
  downloaded_file(path)
22
22
  end
23
23
 
24
+ def already_fetched?(keys)
25
+ map = load_cache
26
+ keys.find { |k| cache_exist?(map[k]) }
27
+ end
28
+
24
29
  def delete(key)
25
30
  lock(lock_path) do
26
31
  map = load_cache
@@ -1,3 +1,3 @@
1
1
  module Fontist
2
- VERSION = "1.15.2".freeze
2
+ VERSION = "1.16.0".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fontist
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.15.2
4
+ version: 1.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-05-22 00:00:00.000000000 Z
11
+ date: 2023-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: down
@@ -240,14 +240,14 @@ dependencies:
240
240
  requirements:
241
241
  - - "~>"
242
242
  - !ruby/object:Gem::Version
243
- version: '1.5'
243
+ version: 1.22.1
244
244
  type: :development
245
245
  prerelease: false
246
246
  version_requirements: !ruby/object:Gem::Requirement
247
247
  requirements:
248
248
  - - "~>"
249
249
  - !ruby/object:Gem::Version
250
- version: '1.5'
250
+ version: 1.22.1
251
251
  - !ruby/object:Gem::Dependency
252
252
  name: rubocop-rails
253
253
  requirement: !ruby/object:Gem::Requirement