Sha256: 7840f4035906322fa95e71d5385fb742ce336f750f1d42309c87e63d392945b3

Contents?: true

Size: 1.58 KB

Versions: 1

Compression:

Stored size: 1.58 KB

Contents

require 'dandelion/deployment'
require 'dandelion/service'
require 'yaml'

module Dandelion
  class << self
    def run
      unless File.exists? '.git'
        puts 'Not a git repository: .git'
        exit
      end
      
      if ARGV[0]
        config_file = ARGV[0].strip
      else
        config_file = 'dandelion.yml'
      end

      unless File.exists? config_file
        puts "Could not find file: #{config_file}"
        exit
      end

      config = YAML.load_file config_file

      if config['scheme'] == 'sftp'
        service = Service::SFTP.new(config['host'], config['username'], config['password'], config['path'])
      else
        puts "Unsupported scheme: #{config['scheme']}"
        exit
      end

      puts "Connecting to:    #{service.uri}"

      begin
        begin
          # Deploy changes since remote revision
          deployment = Deployment::DiffDeployment.new('.', service, config['exclude'])

          puts "Remote revision:  #{deployment.remote_revision}"
          puts "Local revision:   #{deployment.local_revision}"

          deployment.deploy
        rescue Service::RemoteRevisionError
          # No remote revision, deploy everything
          deployment = Deployment::FullDeployment.new('.', service, config['exclude'])

          puts "Remote revision:  ---"
          puts "Local revision:   #{deployment.local_revision}"

          deployment.deploy
        end
        
        puts "Deployment complete"
      rescue Git::DiffError
        puts "Failed to deploy"
        puts "Try merging remote changes before deploying again"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dandelion-0.1.4 lib/dandelion.rb