module Caravan

Constants

VERSION

Public Class Methods

create_listener(deployer, src_path) click to toggle source
# File lib/caravan.rb, line 63
def create_listener(deployer, src_path)
  Listen.to(src_path) do |modified, added, removed|
    # rubocop:disable Lint/NonLocalExitFromIterator
    return unless deployer.handle_change(modified, added, removed)
    return unless deployer.before_deploy
    deployer.run
    deployer.after_deploy
    # rubocop:enable Lint/NonLocalExitFromIterator
  end
end
deploy_once(deployer) click to toggle source
# File lib/caravan.rb, line 56
def deploy_once(deployer)
  deployer.before_deploy
  deployer.run
  deployer.after_deploy
  Caravan::Message.success("Deployed once.")
end
dump_default_conf() click to toggle source
# File lib/caravan.rb, line 91
def dump_default_conf
  user_config_path = File.join(
    File.expand_path("."),
    Caravan::Config.default_conf_name
  )
  default_conf = Caravan::Config.default_conf

  Caravan::Config.dump(user_config_path, default_conf)
end
process_conf(src_path, yaml_name = Caravan::Config.default_conf_name) click to toggle source
# File lib/caravan.rb, line 74
def process_conf(src_path, yaml_name = Caravan::Config.default_conf_name)
  Caravan::Message.success("Reading configuration...")
  src_path = '.' if src_path.nil?
  user_config_path = File.join(File.expand_path(src_path), yaml_name)
  conf = Caravan::Config.from(user_config_path)
  Caravan::Message.warn(
    "Caravan now support multiple specs in `caravan.yml`. " \
    "The default spec is `master`. " \
    "And we detect that you may need to migrate."
  ) if Caravan::ConfigMigration.need_migrate?(conf)
  conf
end
sleep_forever() click to toggle source
# File lib/caravan.rb, line 87
def sleep_forever
  loop { sleep 1000 }
end
start(merged_conf) click to toggle source
# File lib/caravan.rb, line 16
def start(merged_conf)
  src_path = merged_conf["src"]
  target_path = merged_conf["dst"]
  deploy_mode = merged_conf["deploy_mode"]
  ignores = merged_conf["exclude"]
  debug = merged_conf["debug"]

  Caravan::Config.pretty_puts(merged_conf)

  deployer = Caravan::Deploy.create_deployer(
    src_path,
    target_path,
    deploy_mode
  )
  deployer.debug = true if debug
  exit(-1) if deployer.nil?

  listener = create_listener(deployer, src_path)
  ignores.each do |item|
    listener.ignore(Regexp.compile(item))
  end

  Caravan::Message.success("Starting to watch #{src_path}...")
  deployer.after_create
  if merged_conf["once"]
    deploy_once(deployer)
    exit(0)
  end
  listener.start

  trap("INT") do
    listener.stop
    deployer.before_destroy
    Caravan::Message.success("\tHalting watching.")
    exit(0)
  end

  sleep_forever
end