Class: Kimurai::CLI
- Inherits:
-
Thor
show all
- Defined in:
- lib/kimurai/cli.rb,
lib/kimurai/cli/generator.rb,
lib/kimurai/cli/ansible_command_builder.rb
Defined Under Namespace
Classes: AnsibleCommandBuilder, Generator
Instance Method Summary
collapse
Instance Method Details
#__print_version ⇒ Object
154
155
156
|
# File 'lib/kimurai/cli.rb', line 154
def __print_version
puts VERSION
end
|
#console(spider_name = nil) ⇒ Object
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
# File 'lib/kimurai/cli.rb', line 103
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 = options["engine"]&.delete(":")&.to_sym
if url = options["url"]
klass.new(engine).request_to(:console, url: options["url"])
else
klass.new(engine).public_send(:console)
end
end
|
#crawl(spider_name) ⇒ Object
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/kimurai/cli.rb', line 69
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
if time_zone = Kimurai.configuration.time_zone
Kimurai.time_zone = time_zone
end
klass.crawl!
end
|
#dashboard ⇒ Object
159
160
161
162
163
164
165
166
167
168
169
|
# File 'lib/kimurai/cli.rb', line 159
def dashboard
raise "Can't find Kimurai project" unless inside_project?
require './config/boot'
if Object.const_defined?("Kimurai::Dashboard")
require 'kimurai/dashboard/app'
Kimurai::Dashboard::App.run!
else
raise "Kimurai::Dashboard is not defined"
end
end
|
#deploy(user_host) ⇒ Object
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/kimurai/cli.rb', line 46
def deploy(user_host)
if !`git status --short`.empty?
raise "Deploy: Please commit your changes first"
elsif `git remote`.empty?
raise "Deploy: Please add remote origin repository to your repo first"
elsif !`git rev-list master...origin/master`.empty?
raise "Deploy: Please push your commits to the remote origin repo first"
end
repo_url = options["repo-url"] ? options["repo-url"] : `git remote get-url origin`.strip
repo_name = repo_url[/\/([^\/]*)\.git/i, 1]
command = AnsibleCommandBuilder.new(user_host, options, playbook: "deploy",
vars: { repo_url: repo_url, repo_name: repo_name, repo_key_path: options["repo-key-path"] }
).get
pid = spawn *command
Process.wait pid
end
|
#generate(generator_type, *args) ⇒ Object
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/kimurai/cli.rb', line 8
def generate(generator_type, *args)
case generator_type
when "project"
project_name = args.shift
raise "Provide project name to generate a new project" unless project_name.present?
Generator.new.generate_project(project_name)
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
127
128
129
130
131
132
|
# File 'lib/kimurai/cli.rb', line 127
def list
raise "Can't find Kimurai project" unless inside_project?
require './config/boot'
Kimurai.list.keys.each { |name| puts name }
end
|
#parse(spider_name, method_name) ⇒ Object
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/kimurai/cli.rb', line 88
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: options["url"])
end
|
#runner ⇒ Object
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
# File 'lib/kimurai/cli.rb', line 138
def runner
raise "Can't find Kimurai project" unless inside_project?
jobs = options["jobs"]
raise "Jobs count can't be 0" if jobs == 0
require './config/boot'
require 'kimurai/runner'
spiders = options["include"].presence || Kimurai.list.keys
spiders -= options["exclude"]
Runner.new(spiders, jobs).run!
end
|
#setup(user_host) ⇒ Object
33
34
35
36
37
38
|
# File 'lib/kimurai/cli.rb', line 33
def setup(user_host)
command = AnsibleCommandBuilder.new(user_host, options, playbook: "setup").get
pid = spawn *command
Process.wait pid
end
|