#!/usr/bin/ruby require 'optparse' if ARGV.empty? STDERR.puts "usage: #{$0} domain" exit 1 end class DomainSync attr_accessor :users attr_accessor :sites attr_accessor :domain def initialize(domain) self.sites = [] self.users = [] self.domain = domain end end actions = [] opts = OptionParser.new do |o| o.on("--users x,y,z", Array, "Users to sync") do |users| actions.last.users += users end o.on("--sites x,y,z", Array, "Sites to sync") do |sites| actions.last.sites += sites end o.on("--dummy") do |dummy| end o.on("--domain DOMAIN", "-d", String, "Domain") do |domain| actions << DomainSync.new(domain) end end opts.parse!(ARGV) p actions actions.each do |action| system %{sudo mkdir -p "/home/domains/#{action.domain}/"} add = '' add << action.users.map {|e| %{-path "users/#{e}"} }.join(' ') add << action.sites.map {|e| %{-path "sites/#{e}"} }.join(' ') system %{sudo unison "ssh://sirius//home/domains/#{action.domain}/" "/home/domains/#{action.domain}/" #{add} } end