#!/usr/bin/env ruby require "rubygems" require 'gorgon' require 'gorgon/originator' require 'gorgon/listener' require 'gorgon/rsync_daemon' require 'gorgon/worker_manager' require 'gorgon/ping_service' require 'gorgon/gem_service' require 'gorgon/version' require 'gorgon/listener_installer' require 'gorgon/settings/initial_files_creator' WELCOME_MSG = "Welcome to Gorgon #{Gorgon::VERSION}" def start o = Originator.new exit o.originate end def listen l = Listener.new l.listen end def start_rsync_daemon puts "Starting rsync daemon..." exit 1 unless RsyncDaemon.start ARGV[1] puts "Rsync Daemon is running. Use 'gorgon stop_rsync' to kill it." end def stop_rsync_daemon puts "Stopping rsync daemon..." exit 1 unless RsyncDaemon.stop puts "Done" end def manage_workers config_path = ENV["GORGON_CONFIG_PATH"] manager = WorkerManager.build config_path manager.manage # For some reason I have to 'exit' here, otherwise WorkerManager process crashes exit end def ping_listeners PingService.new.ping_listeners end def run_gem command GemService.new.run command end def init framework Settings::InitialFilesCreator.run framework end def install_listener ListenerInstaller.install end def usage #print instructions on how to use gorgon puts "\tstart - remotely runs all tests specified in gorgon.json" puts "\tlisten - starts a listener process using the settings in gorgon_listener.json" puts "\tping - pings listeners and shows hosts and gorgon's version they are running" puts "\tinit [rails] - create initial files for current project" puts "\tinstall_listener - runs gorgon listener as a daemon process" puts "\tstart_rsync - start rsync daemon. Run this command in File Server" puts "\tstop_rsync - stop rsync daemon." puts "\tgem command [options...] - execute the gem command on every listener and shutdown listener. e.g. 'gorgon gem install --version 1.0.0'" end case ARGV[0] # special case for 'version', because we don't need the welcome message telling us the version when we're explicitly asking for it when "version", "--version" puts Gorgon::VERSION exit end puts WELCOME_MSG case ARGV[0] when nil start when "help", "--help" usage exit when "start" start when "listen" listen when "start_rsync" start_rsync_daemon when "stop_rsync" stop_rsync_daemon when "manage_workers" manage_workers when "ping" ping_listeners when "gem" ARGV.shift run_gem ARGV.join(' ') when "help" usage when "init" init ARGV[1] when "install_listener" install_listener else puts "Unknown command!" usage exit 1 end