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.
35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/transcode/configurator.rb', line 35 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 } } add(o) 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
107 108 109 |
# File 'lib/transcode/configurator.rb', line 107 def act? @options[:act] end |
#add(opt) ⇒ Object
28 29 30 31 32 33 |
# File 'lib/transcode/configurator.rb', line 28 def add(opt) opt.on('-v', '--version', 'Show version.') do puts "#{File.basename($PROGRAM_NAME)} #{VERSION} #{DATE}" exit end end |
#aud ⇒ Object
131 132 133 |
# File 'lib/transcode/configurator.rb', line 131 def aud @options[:aud] end |
#dir ⇒ Object
119 120 121 |
# File 'lib/transcode/configurator.rb', line 119 def dir @options[:dir] end |
#find_dir ⇒ Object
47 48 49 50 |
# File 'lib/transcode/configurator.rb', line 47 def find_dir @options[:dir] = File.(dir.nil? ? Dir.pwd : dir) @options[:out] = File.(out.nil? ? Dir.pwd : out) end |
#find_fil ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/transcode/configurator.rb', line 52 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
115 116 117 |
# File 'lib/transcode/configurator.rb', line 115 def mp3? @options[:mp3] end |
#out ⇒ Object
127 128 129 |
# File 'lib/transcode/configurator.rb', line 127 def out @options[:out] end |
#sca? ⇒ Boolean
111 112 113 |
# File 'lib/transcode/configurator.rb', line 111 def sca? @options[:sca] end |
#sub ⇒ Object
135 136 137 |
# File 'lib/transcode/configurator.rb', line 135 def sub @options[:sub] end |
#tit ⇒ Object
123 124 125 |
# File 'lib/transcode/configurator.rb', line 123 def tit @options[:tit] end |
#validate ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'lib/transcode/configurator.rb', line 60 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 exeeds 14 symbols: #{wid}." if wid < 15 end |
#validate_dir(dir, isw) ⇒ Object
70 71 72 73 74 75 |
# File 'lib/transcode/configurator.rb', line 70 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
77 78 79 80 81 |
# File 'lib/transcode/configurator.rb', line 77 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
83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/transcode/configurator.rb', line 83 def validate_tit 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
95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/transcode/configurator.rb', line 95 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
139 140 141 142 143 144 145 146 147 |
# File 'lib/transcode/configurator.rb', line 139 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 |