class Dato::Cli
Public Instance Methods
check()
click to toggle source
# File lib/dato/cli.rb, line 55 def check exit 0 if ENV["DATO_API_TOKEN"] say "Site token is not specified!" token = ask "Please paste your DatoCMS site read-only API token:\n>" if !token || token.empty? puts "Missing token" exit 1 end File.open(".env", "a") do |file| file.puts "DATO_API_TOKEN=#{token}" end say "Token added to .env file." exit 0 end
dump()
click to toggle source
# File lib/dato/cli.rb, line 18 def dump config_file = File.expand_path(options[:config]) watch_mode = options[:watch] preview_mode = options[:preview] client = Dato::Site::Client.new( options[:token], environment: options[:environment], extra_headers: { "X-Reason" => "dump", "X-SSG" => Dump::SsgDetector.new(Dir.pwd).detect, }, ) loader = Dato::Local::Loader.new(client, preview_mode) print "Fetching content from DatoCMS... " loader.load if watch_mode semaphore = Mutex.new thread_safe_dump(semaphore, config_file, client, preview_mode, loader) loader.watch do thread_safe_dump(semaphore, config_file, client, preview_mode, loader) end watch_config_file(config_file) do thread_safe_dump(semaphore, config_file, client, preview_mode, loader) end sleep else Dump::Runner.new(config_file, client, preview_mode, loader).run end end
thread_safe_dump(semaphore, config_file, client, preview_mode, loader)
click to toggle source
# File lib/dato/cli.rb, line 84 def thread_safe_dump(semaphore, config_file, client, preview_mode, loader) semaphore.synchronize do Dump::Runner.new(config_file, client, preview_mode, loader).run end end
watch_config_file(config_file, &block)
click to toggle source
# File lib/dato/cli.rb, line 76 def watch_config_file(config_file, &block) Listen.to( File.dirname(config_file), only: /#{Regexp.quote(File.basename(config_file))}/, &block ).start end