Sha256: e699f100ae5acd07386edf6d33ac011c2731e6e059654e087198d27aa2cb928e

Contents?: true

Size: 1.47 KB

Versions: 2

Compression:

Stored size: 1.47 KB

Contents

#!/usr/bin/env ruby
require 'entangler'
require 'optparse'

options = {}
OptionParser.new do |opts|
  opts.banner = "Usage:\n   entangler master <base_dir> <remote_user>@<remote_host>:<remote_base_dir> [options]\n   entangler slave <base_dir> [options]"

  opts.separator ""
  opts.separator "Options:"

  opts.on("-p", "--port PORT", "Overwrite the SSH port (usually 22)", "(doesn't do anything in slave mode)") do |port|
    options[:port] = port
  end

  opts.on_tail("-v", "--version", "Show version number") do |v|
    puts Entangler::VERSION
    exit
  end

  opts.on_tail("-h", "--help", "Show this message") do
    puts opts
    exit
  end
end.parse!

mode = ARGV.shift
unless mode && ['master', 'slave'].include?(mode)
  puts "Mode unknown, please read help:\nentangler -h"
  exit 1
end

base_dir = ARGV.shift
unless base_dir
  puts "Missing base directory"
  exit 1
end

if mode == 'master'
  remote_information = ARGV.shift

  unless remote_information
    raise 'Missing remote information'
    exit 1
  end

  user, rest = remote_information.split('@', 2)
  host, path = (rest || '').split(':', 2)

  error = nil
  error = 'Missing remote user' unless user
  error = 'Missing remote host' unless host
  error = 'Missing remote path' unless path
  unless error.nil?
    puts error
    exit 1
  end

  opts = {remote_base_dir: path, remote_user: user, remote_host: host}
  opts[:remote_port] = options[:port] if options[:port]
else
  opts = {mode: 'slave'}
end

Entangler.run(base_dir, opts)

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
entangler-0.2.1 exe/entangler
entangler-0.2.0 exe/entangler