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
STATUS_FONTIST_VERSION_ERROR =
15
STATUS_INVALID_CONFIG_ATTRIBUTE =
16
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],
  Fontist::Errors::FontistVersionError => [STATUS_FONTIST_VERSION_ERROR],
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Methods included from ClassOptions

#handle_class_options, included, #log_level

Class Method Details

.exit_on_failure?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/fontist/cli.rb', line 59

def self.exit_on_failure?
  false
end

Instance Method Details

#create_formula(url) ⇒ Object



179
180
181
182
183
184
185
# File 'lib/fontist/cli.rb', line 179

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



87
88
89
90
91
92
93
94
# File 'lib/fontist/cli.rb', line 87

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



120
121
122
123
124
125
126
127
# File 'lib/fontist/cli.rb', line 120

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



158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/fontist/cli.rb', line 158

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



142
143
144
145
146
147
148
149
# File 'lib/fontist/cli.rb', line 142

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



194
195
196
197
198
199
# File 'lib/fontist/cli.rb', line 194

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



109
110
111
112
113
114
115
116
117
# File 'lib/fontist/cli.rb', line 109

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



97
98
99
100
101
102
103
104
105
# File 'lib/fontist/cli.rb', line 97

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



130
131
132
133
134
135
136
137
138
# File 'lib/fontist/cli.rb', line 130

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