Class: SpreenTracks::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/spreen_tracks/cli.rb,
sig/generated/spreen_tracks/cli.rbs

Overview

Command line interface behind the track-delimiter executable: track-delimiter [--extension EXT] [--delimiter CHAR] [--mode d|e].

Constant Summary collapse

MODES =

: Array

Returns:

  • (Array[String])
%w[d e].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(argv) ⇒ CLI

Returns a new instance of CLI.

Parameters:

  • argv (Array[String])


22
23
24
25
26
27
28
# File 'lib/spreen_tracks/cli.rb', line 22

def initialize(argv)
  @argv      = argv.dup
  @extension = '.m4a'
  @delimiter = '_'
  @mode      = 'd'
  @action    = :replace_delimiters
end

Instance Attribute Details

#actionSymbol (readonly)

: Symbol

Returns:

  • (Symbol)


45
46
47
# File 'lib/spreen_tracks/cli.rb', line 45

def action
  @action
end

#argvArray[String] (readonly)

: Array

Returns:

  • (Array[String])


41
42
43
# File 'lib/spreen_tracks/cli.rb', line 41

def argv
  @argv
end

#delimiterString (readonly)

: String

Returns:

  • (String)


43
44
45
# File 'lib/spreen_tracks/cli.rb', line 43

def delimiter
  @delimiter
end

#extensionString (readonly)

: String

Returns:

  • (String)


42
43
44
# File 'lib/spreen_tracks/cli.rb', line 42

def extension
  @extension
end

#modeString (readonly)

: String

Returns:

  • (String)


44
45
46
# File 'lib/spreen_tracks/cli.rb', line 44

def mode
  @mode
end

Class Method Details

.start(argv = ARGV) ⇒ Integer

Parameters:

  • argv (Array[String]) (defaults to: ARGV)

Returns:

  • (Integer)


16
17
18
# File 'lib/spreen_tracks/cli.rb', line 16

def self.start(argv = ARGV)
  new(argv).run
end

Instance Method Details

#parserOptionParser

Returns:

  • (OptionParser)


66
67
68
69
70
71
72
# File 'lib/spreen_tracks/cli.rb', line 66

def parser
  @parser ||= OptionParser.new('Usage: track-delimiter [options]') do |opt|
    replacement_options(opt)
    opt.on('--version', 'Print the version') { @action = :print_version }
    opt.on('-h', '--help', 'Print this help') { @action = :print_help }
  end
end

Returns:

  • (Integer)


60
61
62
63
# File 'lib/spreen_tracks/cli.rb', line 60

def print_help
  puts parser
  0
end

Returns:

  • (Integer)


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

def print_version
  puts VERSION
  0
end

#replace_delimitersInteger

Returns:

  • (Integer)


48
49
50
51
# File 'lib/spreen_tracks/cli.rb', line 48

def replace_delimiters
  Application.run(extension:, delimiter:, mode:)
  0
end

#replacement_options(opt) ⇒ void

This method returns an undefined value.

Parameters:

  • opt (OptionParser)


76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/spreen_tracks/cli.rb', line 76

def replacement_options(opt)
  opt.on('--extension EXT', 'Target extension of the files to rename (default: .m4a)') do |value|
    @extension = value
  end
  opt.on('--delimiter CHAR', 'Delimiter that replaces the space after the track number (default: _)') do |value|
    @delimiter = value
  end
  opt.on('--mode MODE', MODES,
         "Execution mode (#{MODES.join(' or ')}, default: d for dry run; e executes)") do |value|
    @mode = value
  end
end

#runInteger

Returns:

  • (Integer)


31
32
33
34
35
36
37
# File 'lib/spreen_tracks/cli.rb', line 31

def run
  parser.parse!(argv)
  __send__(action)
rescue Application::InvalidModeError, OptionParser::ParseError => e
  warn e.message
  1
end