Class: Transcode::Configuration
- Inherits:
-
Object
- Object
- Transcode::Configuration
- Defined in:
- lib/transcode/configurator.rb
Overview
Handles input parameters.
Constant Summary collapse
- DIC =
[ ['-a', '--act', 'Real encoding.', nil, :act], ['-s', '--sca', 'Scans files at the directory.', nil, :sca], ['-m', '--mp3', 'Converts files to mp3.', nil, :mp3], ['-d', '--dir dir', 'Directory to transcode.', String, :dir], ['-i', '--tit tit', 'Specific title by number.', Array, :tit], ['-o', '--out out', 'Directory to output.', String, :out], ['-u', '--aud aud', 'Audio stream numbers.', Array, :aud], ['-t', '--sub sub', 'Subtitle stream numbers.', Array, :sub], ['-w', '--wid wid', 'Width of the table.', Integer, :wid] ].freeze
- EXT =
%i[ avi flv m4v mkv mp4 mpg mpeg ts webm vob wmv ].map(&:to_s).join(',').freeze
Instance Attribute Summary collapse
-
#files ⇒ Object
readonly
rubocop:disable Metrics/ClassLength.
Instance Method Summary collapse
- #act? ⇒ Boolean
- #aud ⇒ Object
- #dir ⇒ Object
- #find_dir ⇒ Object
- #find_fil ⇒ Object
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #mp3? ⇒ Boolean
- #out ⇒ Object
- #sca? ⇒ Boolean
- #sub ⇒ Object
- #tit ⇒ Object
- #validate ⇒ Object
- #validate_files ⇒ Object
-
#validate_tit ⇒ Object
rubocop:disable Metrics/AbcSize.
- #validate_val(val, tag) ⇒ Object
- #wid ⇒ Object
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/transcode/configurator.rb', line 27 def initialize @options = {} OptionParser.new do |o| o. = "Usage: #{File.basename($PROGRAM_NAME)} [options]." DIC.each { |f, p, d, t, k| o.on(f, p, t, d) { |i| @options[k] = i } } end.parse! find_dir find_fil validate end |
Instance Attribute Details
#files ⇒ Object (readonly)
rubocop:disable Metrics/ClassLength
11 12 13 |
# File 'lib/transcode/configurator.rb', line 11 def files @files end |
Instance Method Details
#act? ⇒ Boolean
95 96 97 |
# File 'lib/transcode/configurator.rb', line 95 def act? @options[:act] end |
#aud ⇒ Object
119 120 121 |
# File 'lib/transcode/configurator.rb', line 119 def aud @options[:aud] end |
#dir ⇒ Object
107 108 109 |
# File 'lib/transcode/configurator.rb', line 107 def dir @options[:dir] end |
#find_dir ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/transcode/configurator.rb', line 38 def find_dir if dir.nil? @options[:dir] = Dir.pwd else raise "No such directory: #{dir}." unless File.directory?(dir) @options[:dir] = File.(dir) end @options[:out] = File.(out.nil? ? '~' : out) end |
#find_fil ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/transcode/configurator.rb', line 49 def find_fil @files = Dir.glob("#{dir}/*.{#{EXT}}").select { |f| File.file? f } sub = !mp3? @files += Dir.glob("#{dir}/*").select { |f| File.directory? f } if sub @files.sort_by!(&:naturalized) @files.sort_by!(&:swapcase) end |
#mp3? ⇒ Boolean
103 104 105 |
# File 'lib/transcode/configurator.rb', line 103 def mp3? @options[:mp3] end |
#out ⇒ Object
115 116 117 |
# File 'lib/transcode/configurator.rb', line 115 def out @options[:out] end |
#sca? ⇒ Boolean
99 100 101 |
# File 'lib/transcode/configurator.rb', line 99 def sca? @options[:sca] end |
#sub ⇒ Object
123 124 125 |
# File 'lib/transcode/configurator.rb', line 123 def sub @options[:sub] end |
#tit ⇒ Object
111 112 113 |
# File 'lib/transcode/configurator.rb', line 111 def tit @options[:tit] end |
#validate ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/transcode/configurator.rb', line 57 def validate validate_files validate_tit validate_val(aud, :aud) validate_val(sub, :sub) raise "Width of the table should exeeds 14 symbols: #{wid}." if wid < 15 end |
#validate_files ⇒ Object
65 66 67 68 69 70 |
# File 'lib/transcode/configurator.rb', line 65 def validate_files raise "#{dir} doesn't have #{EXT} files or directories." if files.empty? bad = files.reject { |f| File.readable?(f) } raise "Unable to read #{bad} files." unless bad.empty? end |
#validate_tit ⇒ Object
rubocop:disable Metrics/AbcSize
72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/transcode/configurator.rb', line 72 def validate_tit # rubocop:disable Metrics/AbcSize if tit.nil? @options[:tit] = Array.new(files.size, '0') return end if files.size == 1 @files = Array.new(tit.size, files.first) return end raise "Title feature doesn't support #{files.size} files." end |
#validate_val(val, tag) ⇒ Object
84 85 86 87 88 89 90 91 92 93 |
# File 'lib/transcode/configurator.rb', line 84 def validate_val(val, tag) f = files.size (@options[tag] = Array.new(f, '0')).nil? || return if val.nil? s = val.size if s == 1 @options[tag] = Array.new(f, val.first) else raise "#{tag} and files do not suit #{s} != #{f}." unless s == f end end |
#wid ⇒ Object
127 128 129 130 131 132 133 134 135 |
# File 'lib/transcode/configurator.rb', line 127 def wid if @options[:wid].nil? # Reads current terminal width. wid = `tput cols` wid.to_s.empty? ? 79 : wid.to_i else @options[:wid].to_i end end |