production-sync 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Readme ADDED
@@ -0,0 +1,2 @@
1
+ Main Readme
2
+
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'production-sync'
5
+
6
+ app = ProductionSync.new
7
+ app.sync_files
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'optparse'
4
+ require 'ostruct'
5
+ require 'yaml'
6
+ require 'date'
7
+ require 'rdoc/usage'
8
+
9
+ class ProductionSync
10
+
11
+ attr_reader :options
12
+
13
+ def initialize
14
+ @options = OpenStruct.new
15
+ @options.rsync = "/usr/bin/rsync" #Our Default
16
+ @options.debug = false
17
+ @options.file = false
18
+ @options.site_name = ARGV.shift
19
+ parse_cli_options
20
+ parse_file
21
+ end
22
+
23
+ def sync_files
24
+ #Build Command
25
+ command = "%s -avz --delete --exclude '.git' --exclude '.gitignore' --exclude-from %s %s %s@%s:%s" % [
26
+ @options.rsync,
27
+ @options.source + ".gitignore",
28
+ @options.source,
29
+ @options.user,
30
+ @options.server,
31
+ @options.destination
32
+ ]
33
+ #puts command
34
+ if not @options.debug
35
+ exec command
36
+ else
37
+ puts "Command to run - " + command
38
+ end
39
+ end
40
+
41
+ def usage
42
+ RDoc::usage()
43
+ end
44
+
45
+ protected
46
+
47
+ def parse_cli_options
48
+ begin
49
+ opts = OptionParser.new do |opts|
50
+ opts.on("-f","--file CONFIG_FILE","Config File to use") { |file| @options.file = file }
51
+ opts.on_tail("-h","--help","Show this message") { |help| puts opts; exit}
52
+ end.parse!(ARGV)
53
+ rescue OptionParser::ParseError => e
54
+ puts e
55
+ puts opts
56
+ exit
57
+ end
58
+ true #Return true if the parser was successful
59
+ end
60
+
61
+ def parse_file
62
+
63
+ #Default configuration file
64
+ @options.file = "~/.production-sync.yml" unless @options.file
65
+
66
+ config_file = YAML::load(File.open(File.expand_path(@options.file)))
67
+ #Check global settings
68
+ if config_file['global']
69
+ @options.rsync = config_file['global']['rsync'] if config_file['global']['rsync']
70
+ end
71
+
72
+ if not config_file[@options.site_name]
73
+ puts "Can't find site description in configuration file for - '#{@options.site_name}'"
74
+ exit
75
+ end
76
+ @options.debug = true if config_file[@options.site_name]['debug']
77
+ @options.destination = config_file[@options.site_name]['destination'][-1,1] == "/" ? config_file[@options.site_name]['destination'] : config_file[@options.site_name]['destination'] + "/"
78
+ @options.source = config_file[@options.site_name]['source'][-1,1] == "/" ? config_file[@options.site_name]['source'] : config_file[@options.site_name]['source'] + "/"
79
+ @options.user = config_file[@options.site_name]['username']
80
+ @options.server = config_file[@options.site_name]['server']
81
+ rescue
82
+ puts "Can't read configuration file - #{File.expand_path @options.file}"
83
+ exit
84
+ end
85
+
86
+ end
87
+
88
+
89
+ #Basic rsync script that will update the site
90
+ # rsync -avz --delete --exclude '.git' --exclude '.gitignore' --exclude-from '/Users/bshelton/copyexperts/.gitignore' /Users/bshelton/copyexperts/ /Users/bshelton/cclone/
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: production-sync
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Bryan Shelton
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-30 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Production-Sync
17
+ email: bryan@sheltonopensolutions.com
18
+ executables:
19
+ - production-sync
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - bin/production-sync
26
+ - lib/production-sync.rb
27
+ - Readme
28
+ has_rdoc: true
29
+ homepage: http://github.com/bshelton229/production-sync
30
+ licenses: []
31
+
32
+ post_install_message:
33
+ rdoc_options: []
34
+
35
+ require_paths:
36
+ - lib
37
+ required_ruby_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: "0"
42
+ version:
43
+ required_rubygems_version: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: "0"
48
+ version:
49
+ requirements: []
50
+
51
+ rubyforge_project:
52
+ rubygems_version: 1.3.5
53
+ signing_key:
54
+ specification_version: 3
55
+ summary: Git Sync
56
+ test_files: []
57
+