Class: Transcode::Configurator
- Inherits:
-
Object
- Object
- Transcode::Configurator
- 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 m2ts m4v mkv mp4 mpg mpeg mov 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
- #add(opt) ⇒ Object
- #aud ⇒ Object
- #dir ⇒ Object
- #find_dir ⇒ Object
- #find_fil ⇒ Object
-
#initialize ⇒ Configurator
constructor
A new instance of Configurator.
- #mp3? ⇒ Boolean
- #out ⇒ Object
- #sca? ⇒ Boolean
- #sub ⇒ Object
- #tit ⇒ Object
- #validate ⇒ Object
- #validate_dir(dir, isw) ⇒ Object
- #validate_fil ⇒ Object
- #validate_tit ⇒ Object
- #validate_val(val, tag) ⇒ Object
- #wid ⇒ Object
Constructor Details
#initialize ⇒ Configurator
Returns a new instance of Configurator.
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/transcode/configurator.rb', line 36 def initialize = {} 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| [k] = i } } add(o) end.parse! find_dir find_fil validate end |
Instance Attribute Details
#files ⇒ Object (readonly)
rubocop:disable Metrics/ClassLength
12 13 14 |
# File 'lib/transcode/configurator.rb', line 12 def files @files end |
Instance Method Details
#act? ⇒ Boolean
108 109 110 |
# File 'lib/transcode/configurator.rb', line 108 def act? [:act] end |
#add(opt) ⇒ Object
29 30 31 32 33 34 |
# File 'lib/transcode/configurator.rb', line 29 def add(opt) opt.on('-v', '--version', 'Show version.') do puts "#{File.basename($PROGRAM_NAME)} #{VERSION} #{DATE}" exit end end |
#aud ⇒ Object
132 133 134 |
# File 'lib/transcode/configurator.rb', line 132 def aud [:aud] end |
#dir ⇒ Object
120 121 122 |
# File 'lib/transcode/configurator.rb', line 120 def dir [:dir] end |
#find_dir ⇒ Object
48 49 50 51 |
# File 'lib/transcode/configurator.rb', line 48 def find_dir [:dir] = File.(dir.nil? ? Dir.pwd : dir) [:out] = File.(out.nil? ? Dir.pwd : out) end |
#find_fil ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/transcode/configurator.rb', line 53 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
116 117 118 |
# File 'lib/transcode/configurator.rb', line 116 def mp3? [:mp3] end |
#out ⇒ Object
128 129 130 |
# File 'lib/transcode/configurator.rb', line 128 def out [:out] end |
#sca? ⇒ Boolean
112 113 114 |
# File 'lib/transcode/configurator.rb', line 112 def sca? [:sca] end |
#sub ⇒ Object
136 137 138 |
# File 'lib/transcode/configurator.rb', line 136 def sub [:sub] end |
#tit ⇒ Object
124 125 126 |
# File 'lib/transcode/configurator.rb', line 124 def tit [:tit] end |
#validate ⇒ Object
61 62 63 64 65 66 67 68 69 |
# File 'lib/transcode/configurator.rb', line 61 def validate validate_dir(dir, false) validate_dir(out, true) validate_fil validate_tit validate_val(aud, :aud) validate_val(sub, :sub) raise "Width of the table should exceeds 14 symbols: #{wid}." if wid < 15 end |
#validate_dir(dir, isw) ⇒ Object
71 72 73 74 75 76 |
# File 'lib/transcode/configurator.rb', line 71 def validate_dir(dir, isw) raise "#{dir}: No such directory." unless File.directory?(dir) err = isw ? File.writable?(dir) : File.readable?(dir) raise "#{out}: Permission denied." unless err end |
#validate_fil ⇒ Object
78 79 80 81 82 |
# File 'lib/transcode/configurator.rb', line 78 def validate_fil bad = files.reject { |f| File.readable?(f) } raise "#{dir} doesn't have #{EXT} files or directories." if files.empty? raise "#{bad.join(',')}: Permission denied." unless bad.empty? end |
#validate_tit ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/transcode/configurator.rb', line 84 def validate_tit if tit.nil? [: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
96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/transcode/configurator.rb', line 96 def validate_val(val, tag) f = files.size ([tag] = Array.new(f, '0')).nil? || return if val.nil? s = val.size if s == 1 [tag] = Array.new(f, val.first) else raise "#{tag} and files do not suit #{s} != #{f}." unless s == f end end |
#wid ⇒ Object
140 141 142 143 144 145 146 147 148 |
# File 'lib/transcode/configurator.rb', line 140 def wid if [:wid].nil? # Reads current terminal width. wid = `tput cols` wid.to_s.empty? ? 79 : wid.to_i else [:wid].to_i end end |