fontist 1.9.0 → 1.11.1

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.
@@ -0,0 +1,78 @@
1
+ module Fontist
2
+ class Update
3
+ BRANCH = "v2".freeze
4
+
5
+ def self.call
6
+ new(BRANCH).call
7
+ end
8
+
9
+ def initialize(branch = "main")
10
+ @branch = branch
11
+ end
12
+
13
+ def call
14
+ update_main_repo
15
+ update_private_repos
16
+ ensure
17
+ rebuild_index
18
+ end
19
+
20
+ private
21
+
22
+ def update_main_repo
23
+ dir = File.dirname(Fontist.formulas_repo_path)
24
+ FileUtils.mkdir_p(dir) unless File.exist?(dir)
25
+
26
+ unless Dir.exist?(Fontist.formulas_repo_path)
27
+ return Git.clone(Fontist.formulas_repo_url,
28
+ Fontist.formulas_repo_path,
29
+ branch: @branch,
30
+ depth: 1)
31
+ end
32
+
33
+ git = Git.open(Fontist.formulas_repo_path)
34
+ return git.pull("origin", @branch) if git.current_branch == @branch
35
+
36
+ git.config("remote.origin.fetch",
37
+ "+refs/heads/#{@branch}:refs/remotes/origin/#{@branch}")
38
+ git.fetch
39
+ git.checkout(@branch)
40
+ git.pull("origin", @branch)
41
+ end
42
+
43
+ def update_private_repos
44
+ private_repos.each do |path|
45
+ update_repo(path)
46
+ end
47
+ end
48
+
49
+ def update_repo(path)
50
+ Git.open(path).pull
51
+ rescue Git::GitExecuteError => e
52
+ name = repo_name(path)
53
+ raise Errors::RepoCouldNotBeUpdatedError.new(<<~MSG.chomp)
54
+ Formulas repo '#{name}' could not be updated.
55
+ Please consider reinitializing it with:
56
+ fontist remove #{name}
57
+ fontist setup #{name} REPO_URL
58
+
59
+ Git error:
60
+ #{e.message}
61
+ MSG
62
+ end
63
+
64
+ def private_repos
65
+ Dir.glob(Fontist.private_formulas_path.join("*")).select do |path|
66
+ File.directory?(path)
67
+ end
68
+ end
69
+
70
+ def repo_name(path)
71
+ File.basename(path)
72
+ end
73
+
74
+ def rebuild_index
75
+ Index.rebuild
76
+ end
77
+ end
78
+ end
@@ -24,12 +24,7 @@ module Fontist
24
24
  download_file
25
25
  end
26
26
 
27
- if !sha.empty? && !sha.include?(Digest::SHA256.file(file).to_s)
28
- raise(Fontist::Errors::TamperedFileError.new(
29
- "The downloaded file from #{@file} doesn't " \
30
- "match with the expected sha256 checksum!"
31
- ))
32
- end
27
+ raise_if_tampered(file)
33
28
 
34
29
  file
35
30
  end
@@ -38,6 +33,19 @@ module Fontist
38
33
 
39
34
  attr_reader :file, :sha, :file_size
40
35
 
36
+ def raise_if_tampered(file)
37
+ file_checksum = Digest::SHA256.file(file).to_s
38
+ if !sha.empty? && !sha.include?(file_checksum)
39
+ raise(
40
+ Fontist::Errors::TamperedFileError.new(
41
+ "The downloaded file from #{@file} doesn't " \
42
+ "match with the expected sha256 checksum (#{file_checksum})!\n" \
43
+ "Beginning of content: #{File.read(file, 3000)}",
44
+ ),
45
+ )
46
+ end
47
+ end
48
+
41
49
  def byte_to_megabyte
42
50
  @byte_to_megabyte ||= 1024 * 1024
43
51
  end
@@ -59,6 +67,7 @@ module Fontist
59
67
  url,
60
68
  open_timeout: 10,
61
69
  read_timeout: 10,
70
+ max_redirects: 10,
62
71
  headers: headers,
63
72
  content_length_proc: ->(content_length) {
64
73
  @progress_bar.total = content_length if content_length
@@ -1,3 +1,3 @@
1
1
  module Fontist
2
- VERSION = "1.9.0".freeze
2
+ VERSION = "1.11.1".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.9.0
4
+ version: 1.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-22 00:00:00.000000000 Z
11
+ date: 2021-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: down
@@ -234,6 +234,20 @@ dependencies:
234
234
  - - "~>"
235
235
  - !ruby/object:Gem::Version
236
236
  version: '1.0'
237
+ - !ruby/object:Gem::Dependency
238
+ name: socksify
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
237
251
  description: Install openly-licensed fonts on Windows, Linux and Mac!
238
252
  email:
239
253
  - open.source@ribose.com
@@ -252,6 +266,7 @@ files:
252
266
  - ".rubocop.yml"
253
267
  - Gemfile
254
268
  - LICENSE.txt
269
+ - README.adoc
255
270
  - README.md
256
271
  - Rakefile
257
272
  - exe/fontist
@@ -262,7 +277,6 @@ files:
262
277
  - lib/fontist/font.rb
263
278
  - lib/fontist/font_installer.rb
264
279
  - lib/fontist/font_path.rb
265
- - lib/fontist/fontist_font.rb
266
280
  - lib/fontist/formula.rb
267
281
  - lib/fontist/formula_paths.rb
268
282
  - lib/fontist/helpers.rb
@@ -296,9 +310,11 @@ files:
296
310
  - lib/fontist/import/text_helper.rb
297
311
  - lib/fontist/index.rb
298
312
  - lib/fontist/indexes/base_index.rb
313
+ - lib/fontist/indexes/default_family_font_index.rb
299
314
  - lib/fontist/indexes/filename_index.rb
300
315
  - lib/fontist/indexes/font_index.rb
301
316
  - lib/fontist/indexes/index_formula.rb
317
+ - lib/fontist/indexes/preferred_family_font_index.rb
302
318
  - lib/fontist/manifest.rb
303
319
  - lib/fontist/manifest/install.rb
304
320
  - lib/fontist/manifest/locations.rb
@@ -307,6 +323,7 @@ files:
307
323
  - lib/fontist/system.yml
308
324
  - lib/fontist/system_font.rb
309
325
  - lib/fontist/system_index.rb
326
+ - lib/fontist/update.rb
310
327
  - lib/fontist/utils.rb
311
328
  - lib/fontist/utils/cache.rb
312
329
  - lib/fontist/utils/downloader.rb
@@ -1,24 +0,0 @@
1
- module Fontist
2
- class FontistFont
3
- def initialize(font_name:)
4
- @font_name = font_name
5
- end
6
-
7
- def self.find(name)
8
- new(font_name: name).find
9
- end
10
-
11
- def find
12
- styles = FormulaPaths.new(font_paths).find(@font_name)
13
- return unless styles
14
-
15
- styles.map { |x| x[:path] }
16
- end
17
-
18
- private
19
-
20
- def font_paths
21
- Dir.glob(Fontist.fonts_path.join("**"))
22
- end
23
- end
24
- end