Class: Kimurai::CLI
- Inherits:
-
Thor
- Object
- Thor
- Kimurai::CLI
- Defined in:
- lib/kimurai/cli.rb,
lib/kimurai/cli/generator.rb
Defined Under Namespace
Classes: Generator
Instance Method Summary collapse
- #__print_version ⇒ Object
- #console(spider_name = nil) ⇒ Object
- #crawl(spider_name) ⇒ Object
- #dashboard ⇒ Object
- #generate(generator_type, *args) ⇒ Object
- #list ⇒ Object
- #new(project_name) ⇒ Object
- #parse(spider_name, method_name) ⇒ Object
- #runner ⇒ Object
Instance Method Details
#__print_version ⇒ Object
120 121 122 |
# File 'lib/kimurai/cli.rb', line 120 def __print_version puts VERSION end |
#console(spider_name = nil) ⇒ Object
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/kimurai/cli.rb', line 68 def console(spider_name = nil) require 'pry' require './config/boot' if inside_project? if spider_name raise "Can't find Kimurai project" unless inside_project? unless (klass = Kimurai.find_by_name(spider_name)) raise "Can't find spider with name `#{spider_name}` in the project. " \ 'To list all available spiders, run: `$ bundle exec kimurai list`' end else klass = inside_project? ? ApplicationSpider : ::Kimurai::Base end engine = ['engine']&.delete(':')&.to_sym if ['url'] klass.new(engine).request_to(:console, url: ['url']) else klass.new(engine).public_send(:console) end end |
#crawl(spider_name) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/kimurai/cli.rb', line 32 def crawl(spider_name) raise "Can't find Kimurai project" unless inside_project? require './config/boot' unless (klass = Kimurai.find_by_name(spider_name)) raise "Can't find spider with name `#{spider_name}` in the project. " \ 'To list all available spiders, run: `$ bundle exec kimurai list`' end # Set time_zone if exists if (time_zone = Kimurai.configuration.time_zone) Kimurai.time_zone = time_zone end klass.crawl! end |
#dashboard ⇒ Object
125 126 127 128 129 130 131 132 133 |
# File 'lib/kimurai/cli.rb', line 125 def dashboard raise "Can't find Kimurai project" unless inside_project? require './config/boot' raise 'Kimurai::Dashboard is not defined' unless Object.const_defined?('Kimurai::Dashboard') require 'kimurai/dashboard/app' Kimurai::Dashboard::App.run! end |
#generate(generator_type, *args) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/kimurai/cli.rb', line 15 def generate(generator_type, *args) case generator_type when 'spider' spider_name = args.shift raise 'Provide spider name to generate a spider' unless spider_name.present? Generator.new.generate_spider(spider_name, in_project: inside_project?) when 'schedule' Generator.new.generate_schedule else raise "Don't know this generator type: #{generator_type}" end end |
#list ⇒ Object
92 93 94 95 96 97 98 |
# File 'lib/kimurai/cli.rb', line 92 def list raise "Can't find Kimurai project" unless inside_project? require './config/boot' Kimurai.list.keys.sort.each { |name| puts name } end |
#new(project_name) ⇒ Object
8 9 10 11 12 |
# File 'lib/kimurai/cli.rb', line 8 def new(project_name) raise 'Provide project name to generate a new project' unless project_name.present? Generator.new.generate_project(project_name) end |
#parse(spider_name, method_name) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/kimurai/cli.rb', line 52 def parse(spider_name, method_name) raise "Can't find Kimurai project" unless inside_project? require './config/boot' unless (klass = Kimurai.find_by_name(spider_name)) raise "Can't find spider with name `#{spider_name}` in the project. " \ 'To list all available spiders, run: `$ bundle exec kimurai list`' end klass.parse!(method_name, url: ['url']) end |
#runner ⇒ Object
104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/kimurai/cli.rb', line 104 def runner raise "Can't find Kimurai project" unless inside_project? jobs = ['jobs'] raise "Jobs count can't be 0" if jobs.zero? require './config/boot' require 'kimurai/runner' spiders = ['include'].presence || Kimurai.list.keys spiders -= ['exclude'] Runner.new(spiders, jobs).run! end |