Class: RemoteJobScraper::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/remote_job_scraper/cli.rb

Constant Summary collapse

AVAILABLE_SITES =
%w(we_work_remotely remote_ok 42jobs_rails)

Instance Method Summary collapse

Instance Method Details

#collect_elixir_companiesObject



20
21
22
# File 'lib/remote_job_scraper/cli.rb', line 20

def collect_elixir_companies
  Sites::ElixirCompanies.new.collect_companies
end

#collect_jobs(limit = nil, delay = nil) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/remote_job_scraper/cli.rb', line 28

def collect_jobs(limit = nil, delay = nil)
  limit = limit.to_i
  limit = limit.zero? ? nil : limit

  begin
    unless delay.nil?
      arr =  delay.split('..').map{ |d| Float(d) }
      range = arr[0]..arr[1]
      RemoteJobScraper.configuration.delay_range = range
    end
  rescue
    raise "Passed: DELAY=#{range} DELAY need to be in format: 2.0..5.0 "
  end

  [
    Sites::WeWorkRemotely,
    Sites::RemoteOk,
    Sites::JobsRails42
  ].each do |klass|
    klass.new.collect_jobs(limit: limit)
  end
end

#collect_jobs_from(site, limit = nil) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/remote_job_scraper/cli.rb', line 55

def collect_jobs_from(site, limit=nil)
  limit = limit.to_i
  limit = limit.zero? ? nil : limit

  case site
  when 'we_work_remotely'
    then Sites::WeWorkRemotely.new.collect_jobs(limit: limit)
  when 'remote_ok'
    then Sites::RemoteOk.new.collect_jobs(limit: limit)
  when '42jobs_rails'
    then Sites::JobsRails42.new.collect_jobs(limit: limit)
  else
    raise "#{site} is not correct. Use: #{AVAILABLE_SITES.join(', ')}."
  end
end

#collect_remote_companiesObject



12
13
14
# File 'lib/remote_job_scraper/cli.rb', line 12

def collect_remote_companies
  Sites::GithubRemoteJobs.new.collect_companies
end

#generate_summaryObject



75
76
77
# File 'lib/remote_job_scraper/cli.rb', line 75

def generate_summary
  Support::SpreadsheetCreator.generate
end

#remove(dirname = 'data') ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/remote_job_scraper/cli.rb', line 80

def remove(dirname = 'data')
  puts "[Warning!]"
  puts "This command will remove #{Dir.pwd}/#{dirname} permanently"
  puts "Press Ctrl-C to abort."

  sleep 3

  FileUtils.rm_rf(dirname)
  puts "Removed data in #{Dir.pwd}/#{dirname}."
rescue Interrupt => e
  exit
end