Class: Fontist::ImportCLI

Inherits:
Thor
  • Object
show all
Includes:
CLI::ClassOptions
Defined in:
lib/fontist/import_cli.rb

Instance Method Summary collapse

Methods included from CLI::ClassOptions

#handle_class_options, included, #log_level

Instance Method Details

#googleObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/fontist/import_cli.rb', line 27

def google
  handle_class_options(options)

  require "fontist/import/google_fonts_importer"

  # Support both --font-name and --font-family (backward compatibility)
  font_name = options[:font_name] || options[:font_family]

  importer = Fontist::Import::GoogleFontsImporter.new(
    source_path: options[:source_path],
    output_path: options[:output_path],
    font_family: font_name,
    force: options[:force],
    verbose: options[:verbose],
    import_cache: options[:import_cache],
  )

  result = importer.import

  # Report results only in non-verbose mode (verbose mode already has rich summary)
  unless options[:verbose]
    Fontist.ui.success("Import completed")
    Fontist.ui.say("  Successful: #{result[:successful]}")
    Fontist.ui.say("  Skipped: #{result[:skipped]}") if result[:skipped]&.positive?
    Fontist.ui.say("  Overwritten: #{result[:overwritten]}") if result[:overwritten]&.positive?
    Fontist.ui.say("  Failed: #{result[:failed]}") if result[:failed]&.positive?
    Fontist.ui.say("  Duration: #{format_duration(result[:duration])}")
  end

  CLI::STATUS_SUCCESS
rescue StandardError => e
  Fontist.ui.error("Import error: #{e.message}")
  Fontist.ui.error(e.backtrace.join("\n")) if options[:verbose]
  Fontist::CLI::STATUS_UNKNOWN_ERROR
end

#macosObject



86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/fontist/import_cli.rb', line 86

def macos
  handle_class_options(options)
  require_relative "import/macos"

  # Handle deprecated formulas_dir option
  output_dir = if options[:formulas_dir] && !options[:output_path]
                 Fontist.ui.error("DEPRECATED: --formulas-dir is deprecated, use --output-path instead")
                 options[:formulas_dir]
               else
                 options[:output_path]
               end

  plist_path = options[:plist] || detect_latest_catalog
  force = options[:force]
  verbose = options[:verbose]
  font_name = options[:font_name]

  Import::Macos.new(
    plist_path,
    formulas_dir: output_dir,
    font_name: font_name,
    force: force,
    verbose: verbose,
    import_cache: options[:import_cache],
  ).call

  CLI::STATUS_SUCCESS
rescue StandardError => e
  Fontist.ui.error("Import error: #{e.message}")
  Fontist.ui.error(e.backtrace.join("\n")) if options[:verbose]
  CLI::STATUS_UNKNOWN_ERROR
end

#silObject



136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/fontist/import_cli.rb', line 136

def sil
  handle_class_options(options)

  require "fontist/import/sil_import"

  importer = Fontist::Import::SilImport.new(
    output_path: options[:output_path],
    font_name: options[:font_name],
    force: options[:force],
    verbose: options[:verbose],
    import_cache: options[:import_cache],
  )

  result = importer.call

  # Report results only in non-verbose mode (verbose mode already has rich summary)
  unless options[:verbose]
    Fontist.ui.success("Import completed")
    Fontist.ui.say("  Successful: #{result[:successful]}")
    Fontist.ui.say("  Skipped: #{result[:skipped]}") if result[:skipped]&.positive?
    Fontist.ui.say("  Overwritten: #{result[:overwritten]}") if result[:overwritten]&.positive?
    Fontist.ui.say("  Failed: #{result[:failed]}") if result[:failed]&.positive?
    Fontist.ui.say("  Duration: #{format_duration(result[:duration])}")
  end

  CLI::STATUS_SUCCESS
rescue StandardError => e
  Fontist.ui.error("Import error: #{e.message}")
  Fontist.ui.error(e.backtrace.join("\n")) if options[:verbose]
  Fontist::CLI::STATUS_UNKNOWN_ERROR
end