Sha256: 295f8a04905f377559c7331d1b18efdc0eb2d32263d6d36d08400b173627fd6a

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

require 'remote_job_scraper/version'

require 'sites/we_work_remotely'
require 'sites/remote_ok'
require 'sites/jobs_rails42'

require 'support/offer_parser'
require 'support/user_agent'
require 'support/spreadsheet_creator'

require 'nokogiri'
require 'open-uri'
require 'csv'
require "thor"

module RemoteJobScraper

  AVAILABLE_SERVICES = %w(we_work_remotely remote_ok 42jobs_rails)

  class CLI < Thor

    desc 'collect_jobs', 'Retrieves data from all sites'
    def collect_jobs
      [Sites::WeWorkRemotely, Sites::RemoteOk].each do |klass|
        klass.new.collect_jobs
      end
    end

    desc 'collect_jobs_from', 'Retrieves data from specified service'
    def collect_jobs_from(service_name)
      case service_name
      when 'we_work_remotely'
        then Sites::WeWorkRemotely.new.collect_jobs
      when 'remote_ok'
        then Sites::RemoteOk.new.collect_jobs
      when '42jobs_rails'
        then Sites::JobsRails42.new.collect_jobs
      else
        raise "#{service_name} is not correct. Use: #{AVAILABLE_SERVICES.join(', ')}."
      end
    end

    desc 'generate_summary', 'Collect all data and export to XLS file'
    def generate_summary
      Support::SpreadsheetCreator.generate
    end

    desc 'clean_up', 'Removes all stored data'
    def clean_up
      puts "This command will remote all stored data."
      puts "Press Ctrl-C to abort."

      sleep 2

      FileUtils.rm_rf('data')
      puts "Removed data."
    end

  end

  def self.root
    File.dirname __dir__
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
remote_job_scraper-0.1.0 lib/remote_job_scraper.rb