Class: Fontist::CLI

Inherits:
Thor
  • Object
show all
Includes:
ClassOptions
Defined in:
lib/fontist/cli.rb,
lib/fontist/cli/class_options.rb

Defined Under Namespace

Modules: ClassOptions

Constant Summary collapse

STATUS_SUCCESS =
0
STATUS_UNKNOWN_ERROR =
1
STATUS_NON_SUPPORTED_FONT_ERROR =
2
STATUS_MISSING_FONT_ERROR =
3
STATUS_LICENSING_ERROR =
4
STATUS_MANIFEST_COULD_NOT_BE_FOUND_ERROR =
5
STATUS_MANIFEST_COULD_NOT_BE_READ_ERROR =
6
STATUS_FONT_INDEX_CORRUPTED =
7
STATUS_REPO_NOT_FOUND =
8
STATUS_MAIN_REPO_NOT_FOUND =
9
STATUS_REPO_COULD_NOT_BE_UPDATED =
10
STATUS_MANUAL_FONT_ERROR =
11
STATUS_SIZE_LIMIT_ERROR =
12
STATUS_FORMULA_NOT_FOUND =
13
STATUS_FONTCONFIG_NOT_FOUND =
14
STATUS_FONTCONFIG_FILE_NOT_FOUND =
15
ERROR_TO_STATUS =
{
  Fontist::Errors::UnsupportedFontError => [STATUS_NON_SUPPORTED_FONT_ERROR],
  Fontist::Errors::MissingFontError => [STATUS_MISSING_FONT_ERROR],
  Fontist::Errors::SizeLimitError => [
    STATUS_SIZE_LIMIT_ERROR,
    :append,
    "Please specify higher `--size-limit`, or use the `--newest` or " \
    "`--smallest` options.",
  ],
  Fontist::Errors::ManualFontError => [STATUS_MANUAL_FONT_ERROR],
  Fontist::Errors::LicensingError => [STATUS_LICENSING_ERROR],
  Fontist::Errors::ManifestCouldNotBeFoundError => [STATUS_MANIFEST_COULD_NOT_BE_FOUND_ERROR,
                                                    :overwrite,
                                                    "Manifest could not be found."],
  Fontist::Errors::ManifestCouldNotBeReadError => [STATUS_MANIFEST_COULD_NOT_BE_READ_ERROR,
                                                   :overwrite,
                                                   "Manifest could not be read."],
  Fontist::Errors::FontIndexCorrupted => [STATUS_FONT_INDEX_CORRUPTED],
  Fontist::Errors::RepoNotFoundError => [STATUS_REPO_NOT_FOUND],
  Fontist::Errors::MainRepoNotFoundError => [STATUS_MAIN_REPO_NOT_FOUND],
  Fontist::Errors::FormulaNotFoundError => [STATUS_FORMULA_NOT_FOUND],
  Fontist::Errors::FontconfigNotFoundError => [STATUS_FONTCONFIG_NOT_FOUND],
  Fontist::Errors::FontconfigFileNotFoundError =>
    [STATUS_FONTCONFIG_FILE_NOT_FOUND],
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ClassOptions

#handle_class_options

Class Method Details

.exit_on_failure?Boolean

Returns:

  • (Boolean)


54
55
56
# File 'lib/fontist/cli.rb', line 54

def self.exit_on_failure?
  false
end

Instance Method Details

#create_formula(url) ⇒ Object



184
185
186
187
188
189
190
# File 'lib/fontist/cli.rb', line 184

def create_formula(url)
  handle_class_options(options)
  require "fontist/import/create_formula"
  name = Fontist::Import::CreateFormula.new(url, options).call
  Fontist.ui.say("#{name} formula has been successfully created")
  success
end

#install(font) ⇒ Object



93
94
95
96
97
98
99
100
# File 'lib/fontist/cli.rb', line 93

def install(font)
  handle_class_options(options)
  confirmation = options[:accept_all_licenses] ? "yes" : "no"
  Fontist::Font.install(font, options.merge(confirmation: confirmation))
  success
rescue Fontist::Errors::GeneralError => e
  handle_error(e)
end

#list(font = nil) ⇒ Object



126
127
128
129
130
131
132
133
# File 'lib/fontist/cli.rb', line 126

def list(font = nil)
  handle_class_options(options)
  formulas = Fontist::Font.list(font)
  print_list(formulas)
  success
rescue Fontist::Errors::GeneralError => e
  handle_error(e)
end

#manifest_install(manifest) ⇒ Object



164
165
166
167
168
169
170
171
172
173
174
175
176
# File 'lib/fontist/cli.rb', line 164

def manifest_install(manifest)
  handle_class_options(options)
  paths = Fontist::Manifest::Install.from_file(
    manifest,
    confirmation: options[:accept_all_licenses] ? "yes" : "no",
    hide_licenses: options[:hide_licenses]
  )

  print_yaml(paths)
  success
rescue Fontist::Errors::GeneralError => e
  handle_error(e)
end

#manifest_locations(manifest) ⇒ Object



148
149
150
151
152
153
154
155
# File 'lib/fontist/cli.rb', line 148

def manifest_locations(manifest)
  handle_class_options(options)
  paths = Fontist::Manifest::Locations.from_file(manifest)
  print_yaml(paths)
  success
rescue Fontist::Errors::GeneralError => e
  handle_error(e)
end

#rebuild_indexObject



199
200
201
202
203
204
# File 'lib/fontist/cli.rb', line 199

def rebuild_index
  handle_class_options(options)
  Fontist::Index.rebuild
  Fontist.ui.say("Formula index has been rebuilt.")
  STATUS_SUCCESS
end

#status(font = nil) ⇒ Object



115
116
117
118
119
120
121
122
123
# File 'lib/fontist/cli.rb', line 115

def status(font = nil)
  handle_class_options(options)
  paths = Fontist::Font.status(font)
  return error("No font is installed.", STATUS_MISSING_FONT_ERROR) if paths.empty?

  success
rescue Fontist::Errors::GeneralError => e
  handle_error(e)
end

#uninstall(font) ⇒ Object



103
104
105
106
107
108
109
110
111
# File 'lib/fontist/cli.rb', line 103

def uninstall(font)
  handle_class_options(options)
  fonts_paths = Fontist::Font.uninstall(font)
  Fontist.ui.success("These fonts are removed:")
  Fontist.ui.success(fonts_paths.join("\n"))
  success
rescue Fontist::Errors::GeneralError => e
  handle_error(e)
end

#updateObject



136
137
138
139
140
141
142
143
144
# File 'lib/fontist/cli.rb', line 136

def update
  handle_class_options(options)
  Formula.update_formulas_repo
  Fontist.ui.success("Formulas have been successfully updated.")
  success
rescue Fontist::Errors::RepoCouldNotBeUpdatedError => e
  Fontist.ui.error(e.message)
  STATUS_REPO_COULD_NOT_BE_UPDATED
end