Sha256: 892e06da12574263a73a8c089f9741a73340cf88a3c5ae501e3f6f639266cf93

Contents?: true

Size: 1.91 KB

Versions: 2

Compression:

Stored size: 1.91 KB

Contents

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

options = {}
OptionParser.new do |opts|
  opts.banner = %Q(Entangler v#{Entangler::VERSION}

Usage:
   entangler master <base_dir> <remote_user>@<remote_host>:<remote_base_dir> [options]
   entangler slave <base_dir> [options])

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

  opts.on("-i", "--ignore '/.git'", "Ignore folder when syncing, string is regex if surrounded by '/'",
          "All folders should be relative to the base sync directory, but should start with a '/'.") do |ignore|
    options[:ignore] ||= []
    options[:ignore] << ignore
  end

  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

if options[:ignore]
  opts[:ignore] = options[:ignore].map do |opt|
    opt.to_regexp(detect: true)
  end
end

Entangler.run(base_dir, opts)

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
entangler-0.3.1 exe/entangler
entangler-0.3.0 exe/entangler