Class: AudioBookCreator::Cli
- Inherits:
-
Object
- Object
- AudioBookCreator::Cli
- Includes:
- Logging
- Defined in:
- lib/audio_book_creator/cli.rb
Defined Under Namespace
Classes: OptSetter
Instance Attribute Summary collapse
-
#web ⇒ Object
writeonly
stub for testing.
Instance Method Summary collapse
- #book_def ⇒ Object
- #conductor ⇒ Object
- #database ⇒ Object
-
#initialize ⇒ Cli
constructor
A new instance of Cli.
-
#page_def ⇒ Object
parameter objects.
- #parse(argv) ⇒ Object
- #run ⇒ Object
- #set_args(argv, usage) ⇒ Object
- #speaker_def ⇒ Object
- #surfer_def ⇒ Object
- #verbose=(val) ⇒ Object
Methods included from Logging
Constructor Details
#initialize ⇒ Cli
Returns a new instance of Cli.
9 10 11 12 13 14 |
# File 'lib/audio_book_creator/cli.rb', line 9 def initialize self.verbose = false page_def.title_path = "h1" page_def.body_path = "p" page_def.link_path = "a" end |
Instance Attribute Details
#web=(value) ⇒ Object (writeonly)
stub for testing
17 18 19 |
# File 'lib/audio_book_creator/cli.rb', line 17 def web=(value) @web = value end |
Instance Method Details
#book_def ⇒ Object
82 83 84 |
# File 'lib/audio_book_creator/cli.rb', line 82 def book_def @book_def ||= BookDef.new end |
#conductor ⇒ Object
94 95 96 |
# File 'lib/audio_book_creator/cli.rb', line 94 def conductor @conductor ||= Conductor.new(page_def, book_def, speaker_def, surfer_def) end |
#database ⇒ Object
34 35 36 |
# File 'lib/audio_book_creator/cli.rb', line 34 def database "pages.db" end |
#page_def ⇒ Object
parameter objects
78 79 80 |
# File 'lib/audio_book_creator/cli.rb', line 78 def page_def @page_def ||= PageDef.new end |
#parse(argv) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/audio_book_creator/cli.rb', line 42 def parse(argv) = OptionParser.new do |opts| opts.program_name = "audio_book_creator" opts.version = VERSION opts. = "Usage: audio_book_creator [options] title url [url] [...]" opt(opts, self) do |o| o.opt(:verbose, "-v", "--verbose", "Run verbosely") end opt(opts, page_def) do |o| o.opt(:title_path, "--title STRING", "Title css (e.g.: h1)") o.opt(:body_path, "--body STRING", "Content css (e.g.: p)") o.opt(:link_path, "--link STRING", "Next Page css (e.g.: a.Next)") o.opt(:chapter_path, "--chapter STRING", "Next Chapter css") end opt(opts, surfer_def) do |o| o.opt(:max, "--no-max", "Don't limit the number of pages to visit") o.opt(:max, "--max NUMBER", Integer, "Maximum number of pages to visit (default: 10)") o.opt(:regen_html, "--force-html", "Regerate the audio") end opt(opts, speaker_def) do |o| o.opt(:regen_audio, "--force-audio", "Regerate the audio") o.opt(:rate, "--rate NUMBER", Integer, "Set words per minute") o.opt(:voice, "--voice STRING", "Set speaker voice") end opt(opts, book_def) do |o| o.opt(:base_dir, "--base-dir STRING", "Directory to hold files") o.opt(:itunes, "--itunes", "-A", "Load book into itunes") end end .parse!(argv) set_args(argv, .to_s) self end |
#run ⇒ Object
98 99 100 |
# File 'lib/audio_book_creator/cli.rb', line 98 def run conductor.run end |
#set_args(argv, usage) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/audio_book_creator/cli.rb', line 19 def set_args(argv, usage) if argv.empty? puts "please url", usage exit 2 elsif argv.first.include?("://") book_def.title = argv.first.split("/").last book_def.urls = argv else book_def.title = argv.shift book_def.urls = argv end surfer_def.cache_filename = database surfer_def.host = book_def.urls.first end |
#speaker_def ⇒ Object
86 87 88 |
# File 'lib/audio_book_creator/cli.rb', line 86 def speaker_def @speaker_def ||= SpeakerDef.new end |
#surfer_def ⇒ Object
90 91 92 |
# File 'lib/audio_book_creator/cli.rb', line 90 def surfer_def @surfer_def ||= SurferDef.new end |
#verbose=(val) ⇒ Object
38 39 40 |
# File 'lib/audio_book_creator/cli.rb', line 38 def verbose=(val) logger.level = val ? Logger::INFO : Logger::WARN end |