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)


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

def self.exit_on_failure?
  false
end

Instance Method Details

#create_formula(url) ⇒ Object



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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