Class: Tanakai::CLI::Generator

Inherits:
Thor::Group
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/tanakai/cli/generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.source_rootObject



6
7
8
# File 'lib/tanakai/cli/generator.rb', line 6

def self.source_root
  File.dirname(File.expand_path('..', __FILE__))
end

Instance Method Details

#generate_project(project_name) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/tanakai/cli/generator.rb', line 10

def generate_project(project_name)
  directory "template", project_name
  inside(project_name) do
    run "bundle install"
    run "git init"
  end
end

#generate_scheduleObject



43
44
45
# File 'lib/tanakai/cli/generator.rb', line 43

def generate_schedule
  copy_file "template/config/schedule.rb", "./schedule.rb"
end

#generate_spider(spider_name, in_project:) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/tanakai/cli/generator.rb', line 18

def generate_spider(spider_name, in_project:)
  spider_path = in_project ? "spiders/#{spider_name}.rb" : "./#{spider_name}.rb"
  raise "Spider #{spider_path} already exist?" if File.exist? spider_path

  spider_class = to_spider_class(spider_name)
  create_file spider_path do
    "      class \#{spider_class} < \#{in_project ? 'ApplicationSpider' : 'Tanakai::Base'}\n        @name = \"\#{spider_name}\"\n        @start_urls = []\n        @config = {}\n\n        def parse(response, url:, data: {})\n        end\n      end\n    RUBY\n  end\n\n  unless in_project\n    insert_into_file spider_path, \"  @engine = :mechanize\\n\", after: \"@name = \\\"\#{spider_name}\\\"\\n\"\n    prepend_to_file spider_path, \"require 'tanakai'\\n\\n\"\n    append_to_file spider_path, \"\\n\#{spider_class}.crawl!\"\n  end\nend\n"