fontist 1.2.1 → 1.3.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: fbead3aabe1b99a416f96322c97681a9a693526c719d3fcf55658645ca6eb6ae
4
- data.tar.gz: c45621c68c5b456104f2f6bc07b8af5dcba2f60a180ddb700bb6ad4373fee775
3
+ metadata.gz: 1f45a43c4f700cd793576c4783b7098beea7d366c8aeb2654fcc5b6a38c986b0
4
+ data.tar.gz: 01ce25c4eae85e3fb20b7cdf0d106a04a2273e770a4261e937c344520a723651
5
5
  SHA512:
6
- metadata.gz: e69aa36d462a3e554da1435f5194c12b9ad4103739d58ecc1bce0659d3fa730dcbedf1881c561535b2af2386038c42cff70535f62fc8c63ee4c1c86a7f429e67
7
- data.tar.gz: f94bb6c098e06eca1efbd16fa79e2ea5ec525c05caddb1a043a7ba6e34a2d869c50125d1aa3af96f14b40bddbb95244ada63d5045126a7e621f9e2f9b634add3
6
+ metadata.gz: 6aae04a73aa89e5a7919430cecf56a8da1361bbe7b4a40a5676abe1ca02cc011e95681b7520a2d0ec3f47dd793af48c462f9deb1377b2547ba5d5edbc8c864e4
7
+ data.tar.gz: 541d57da927636744955a5917ad39d57fe793bb37b0c31d167252da9efea8815c3675d2e998ed7ef585921415733e2b393de19f16be433d2ca62cfdbf0d00f02
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_runtime_dependency "down", "~> 5.0"
25
25
  spec.add_runtime_dependency "libmspack", "~> 0.1.0"
26
26
  spec.add_runtime_dependency "rubyzip", "~> 2.3.0"
27
+ spec.add_runtime_dependency "thor", "~> 1.0.1"
27
28
 
28
29
  spec.add_development_dependency "pry"
29
30
  spec.add_development_dependency "bundler", "~> 2.0"
@@ -14,6 +14,10 @@ require "fontist/formula"
14
14
  require "fontist/system_font"
15
15
 
16
16
  module Fontist
17
+ def self.ui
18
+ Fontist::Utils::UI
19
+ end
20
+
17
21
  def self.lib_path
18
22
  Fontist.root_path.join("lib")
19
23
  end
@@ -62,17 +62,52 @@ module Fontist
62
62
  if formula
63
63
  raise(
64
64
  Fontist::Errors::MissingFontError,
65
- "Fonts are missing, please run " \
65
+ "#{name}" "Fonts are missing, please run " \
66
66
  "Fontist::Font.install('#{name}', confirmation: 'yes') to " \
67
- "download the font"
67
+ "download the font."
68
68
  )
69
69
  end
70
70
  end
71
71
 
72
72
  def download_font
73
73
  if formula
74
+ check_and_confirm_required_license(formula)
74
75
  font_installer(formula).fetch_font(name, confirmation: confirmation)
75
76
  end
76
77
  end
78
+
79
+ def check_and_confirm_required_license(formula)
80
+ if formula.license_required && !confirmation.casecmp("yes").zero?
81
+ @confirmation = show_license_and_ask_for_input(formula.license)
82
+
83
+ if !confirmation.casecmp("yes").zero?
84
+ raise Fontist::Errors::LicensingError.new(
85
+ "Fontist will not download these fonts unless you accept the terms."
86
+ )
87
+ end
88
+ end
89
+ end
90
+
91
+ def show_license_and_ask_for_input(license)
92
+ Fontist.ui.say(license_agrement_message(license))
93
+ Fontist.ui.ask(
94
+ "\nDo you accept all presented font licenses, and want Fontist " \
95
+ "to download these fonts for you? => TYPE 'Yes' or 'No':"
96
+ )
97
+ end
98
+
99
+ def license_agrement_message(license)
100
+ <<~MSG
101
+ FONT LICENSE ACCEPTANCE REQUIRED FOR "#{name}":
102
+
103
+ Fontist can install this font if you accept its licensing conditions.
104
+
105
+ FONT LICENSE BEGIN ("#{name}")
106
+ -----------------------------------------------------------------------
107
+ #{license}
108
+ -----------------------------------------------------------------------
109
+ FONT LICENSE END ("#{name}")
110
+ MSG
111
+ end
77
112
  end
78
113
  end
@@ -32,6 +32,7 @@ module Fontist
32
32
  license: formula.instance.license,
33
33
  homepage: formula.instance.homepage ,
34
34
  description: formula.instance.description,
35
+ license_required: formula.instance.license_required,
35
36
  }
36
37
  end
37
38
 
@@ -1,3 +1,4 @@
1
+ require "fontist/utils/ui"
1
2
  require "fontist/utils/dsl"
2
3
  require "fontist/utils/downloader"
3
4
  require "fontist/utils/zip_extractor"
@@ -4,8 +4,8 @@ module Fontist
4
4
  def initialize(file, file_size: nil, sha: nil, progress_bar: nil)
5
5
  # TODO: If the first mirror fails, try the second one
6
6
  @file = file
7
- @progress_bar = progress_bar
8
7
  @sha = [sha].flatten.compact
8
+ @progress_bar = set_progress_bar(progress_bar)
9
9
  @file_size = (file_size || default_file_size).to_i
10
10
  end
11
11
 
@@ -42,6 +42,10 @@ module Fontist
42
42
  options[:download_path] || Fontist.root_path.join("tmp")
43
43
  end
44
44
 
45
+ def set_progress_bar(progress_bar)
46
+ ENV.fetch("TEST_ENV", "") === "CI" ? false : progress_bar
47
+ end
48
+
45
49
  def download_file
46
50
  bar = ProgressBar.new(file_size / byte_to_megabyte)
47
51
 
@@ -0,0 +1,15 @@
1
+ require "thor"
2
+
3
+ module Fontist
4
+ module Utils
5
+ class UI < Thor
6
+ def self.say(message)
7
+ new.say(message)
8
+ end
9
+
10
+ def self.ask(message, options = {})
11
+ new.ask(message, options)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module Fontist
2
- VERSION = "1.2.1".freeze
2
+ VERSION = "1.3.0".freeze
3
3
  end
@@ -46,13 +46,35 @@ RSpec.describe Fontist::Font do
46
46
 
47
47
  describe ".install" do
48
48
  context "with valid font name" do
49
- it "installs the font and return the paths" do
50
- name = "Calibri"
49
+ it "installs and returns paths for fonts with open license" do
50
+ stub_fontist_path_to_temp_path
51
+
52
+ font = { name: "Overpass Mono", filename: "overpass-mono-regular.otf" }
53
+ font_paths = Fontist::Font.install(font[:name], confirmation: "no")
54
+
55
+ expect(font_paths.join("|").downcase).to include(font[:filename])
56
+ end
51
57
 
58
+ it "install proprietary fonts with correct license agreement" do
52
59
  stub_fontist_path_to_temp_path
53
- font_paths = Fontist::Font.install(name, confirmation: "yes")
60
+ stub_license_agreement_prompt_with("yes")
61
+
62
+ font = { name: "Calibri", filename: "calibri.ttf" }
63
+ font_paths = Fontist::Font.install(font[:name])
64
+
65
+ expect(font_paths.join("|").downcase).to include(font[:filename])
66
+ end
67
+
68
+ it "raises error for missing license agreement" do
69
+ stub_fontist_path_to_temp_path
70
+ stub_license_agreement_prompt_with("no")
54
71
 
55
- expect(font_paths.join("|").downcase).to include("#{name.downcase}.ttf")
72
+ font = { name: "Calibri", filename: "calibri.ttf" }
73
+ allow(Fontist::SystemFont).to receive(:find).and_return(nil)
74
+
75
+ expect { Fontist::Font.install(font[:name]) }.to raise_error(
76
+ Fontist::Errors::LicensingError
77
+ )
56
78
  end
57
79
  end
58
80
 
@@ -84,4 +106,8 @@ RSpec.describe Fontist::Font do
84
106
  allow(Fontist::SystemFont).to receive(:find).
85
107
  and_return(["spec/fixtures/fonts/#{name}"])
86
108
  end
109
+
110
+ def stub_license_agreement_prompt_with(confirmation = "yes")
111
+ allow(Fontist.ui).to receive(:ask).and_return(confirmation)
112
+ end
87
113
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fontist
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-08-03 00:00:00.000000000 Z
12
+ date: 2020-08-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: down
@@ -53,6 +53,20 @@ dependencies:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: 2.3.0
56
+ - !ruby/object:Gem::Dependency
57
+ name: thor
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 1.0.1
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 1.0.1
56
70
  - !ruby/object:Gem::Dependency
57
71
  name: pry
58
72
  requirement: !ruby/object:Gem::Requirement
@@ -159,6 +173,7 @@ files:
159
173
  - lib/fontist/utils/downloader.rb
160
174
  - lib/fontist/utils/dsl.rb
161
175
  - lib/fontist/utils/exe_extractor.rb
176
+ - lib/fontist/utils/ui.rb
162
177
  - lib/fontist/utils/zip_extractor.rb
163
178
  - lib/fontist/version.rb
164
179
  - spec/fixtures/fonts/DejaVuSerif.ttf
@@ -209,7 +224,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
209
224
  - !ruby/object:Gem::Version
210
225
  version: '0'
211
226
  requirements: []
212
- rubygems_version: 3.0.3
227
+ rubygems_version: 3.0.4
213
228
  signing_key:
214
229
  specification_version: 4
215
230
  summary: A libarary find or download fonts