rsync-deploy 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MmRmZGVkYWUwMzkwNTE2YzA2Yjc4YTQ3NTQ0NWRjMDQ3OTY0MTgyMQ==
4
+ NDNjODI1ZjBkOWJhMWIwZThjMjVmNjEwOGQ3NjNjYjcxNTg1MGZjZg==
5
5
  data.tar.gz: !binary |-
6
- ZmRmMTBkOGNjNjQxZTAxYjE1ZGRhNTU4MTdmZTkzN2JjMWVkYjMyZg==
6
+ ODliZmE4MDNkOGMxMGI3ZmIwOGI3N2JlMWRjZDAzMTBlN2FmMjc0MA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NmU2MGE1MjQyOTA2ZGVjNjQ3Nzc5YWFhMmY3NmJiYzRhYTlhYzc1YjljMDFm
10
- NDA5NmQwMjUwMDRhODcxOGQzZmNjZDJmYmQ4OGUzZWJiZGIwN2ZiYzg2MTg5
11
- MGUxZWJmZWEyZmM0YTQ3YTM1YjAxMzU1NTA4NzI3MDkyMjg0ZjU=
9
+ NDFlMDZiMDIxYzg4NTc4YmZkYWY5OTczYTE2MDliYTJmZjFhMzU5Mzk0MWRj
10
+ NWM5YTU1ODQ4MTJlN2VkNWVmNzcyNDE4OTY0MzM4ZDVjYjI1MTg4YWQ3NTgx
11
+ MTc1NDgyNDY5NzI4MGM1N2RmZWQ1ZGNhYWM5Y2FkNDkzYmExYTA=
12
12
  data.tar.gz: !binary |-
13
- YjQxNTNkY2YzZDlhZDRjZTIwNTIyMzEwMGQzOTdlODc1MmEyNTZmNDYyZjhk
14
- YjZkMDBjODI0NGYzMTM5ZDJlZjM1MDRiYWMyZjMyMmVmNmY0Y2FjMGY1YTFh
15
- ZGEwMjNhNTUyMjAyMDc5NjU4Y2Q5OGE4NDdlN2M0NjIxNDU0ZDI=
13
+ NTRmMTBhNDY5NzI3MWJlZDQ3ZmUxYTdjZmQ4MjhjNjg3ZjgzMGJhMjkyOGM3
14
+ OGVjNzEzMjQ1NjEwMGJjYTMxM2NiMzNhZGYwODlhZmVlZDg4ODBkMmU2Njk4
15
+ NDEyZjI4ZWY4MGM5NjY4ZDVhOTIyMDFjZTc1ODgyNzdiZWUxYjc=
data/README.md CHANGED
@@ -95,12 +95,38 @@ Below is a list of all available configuration options.
95
95
 
96
96
  The server that the files should be deployed to.
97
97
 
98
+ ### port
99
+
100
+ - Type: `Number`
101
+ - Default: `22`
102
+ - Required: `Yes`
103
+
104
+ The port that the connection should happen over
105
+
98
106
  ### user
99
107
 
100
108
  - Type: `String`
101
109
  - Default: `none`
102
110
 
103
- The username to login to the server. If no username is set, your computer account username will be used. Passwords will need to be typed in manually, however, SSH keys will be used if available.
111
+ The username to login to the server. If no username is set, your computer account username will be used.
112
+
113
+ ### pass
114
+
115
+ - Type: `String`
116
+ - Default: `none`
117
+
118
+ The password to login to the server. If SSH keys aren't available, then the `pass` option will be used. If neither SSH keys nor `pass` are set, a prompt will be given.
119
+
120
+ ### privateKey
121
+
122
+ - Type: `String`
123
+ - Default: `none`
124
+
125
+ The path to an alternative SSH key. This only needs to be set if your key isn't one of the following:
126
+ ```
127
+ ~/.ssh/id_rsa
128
+ ~/.ssh/id_dsa
129
+ ```
104
130
 
105
131
  ### sync
106
132
 
data/bin/deploy CHANGED
@@ -3,6 +3,12 @@
3
3
  require 'deploy'
4
4
  require 'fileutils'
5
5
 
6
+ # TODO: Create `-r`, `--rev`, `--reverse`, `rev`, `reverse` command to download
7
+ # from the server instead of upload
8
+ # TODO: Allow pre/post-deploy tasks to be run on a per-environment basis for
9
+ # both local and remote servers. That could help some people, but not really
10
+ # needed for a while yet.
11
+
6
12
  def help
7
13
  %Q(
8
14
  Usage: deploy [COMMAND] [ENVIRONMENTS] [OPTIONS]
@@ -13,9 +19,10 @@ def help
13
19
  version Prints the siteleaf gem version
14
20
 
15
21
  Environments:
16
- <env> Deploys listed environments
22
+ <env> Deploys listed environments
17
23
 
18
- If no commands, environments, or options are given, the first environment in the config file will be deployed.
24
+ If no commands, environments, or options are given,
25
+ the first environment in the config file will be deployed.
19
26
 
20
27
  Options:
21
28
  -h, --help Prints this help document
@@ -48,7 +55,7 @@ def install
48
55
  File.open(Deploy::CONFIG_PATH, 'w+') do |file|
49
56
  file.puts 'server_name:',' host: ""',' user: ""',' pass: ""',' path:',' local: "/"',' remote: "/public_html/"'
50
57
  end
51
- puts "Configuration file created. Fill in `#{Deploy::CONFIG_PATH}` with server details before deploying."
58
+ puts "Configuration file `#{Deploy::CONFIG_PATH}` created."
52
59
  else
53
60
  puts "No congifuration file has been installed."
54
61
  end
@@ -58,7 +65,7 @@ def install
58
65
  File.open(Deploy::CONFIG_PATH, 'w+') do |file|
59
66
  file.puts 'server_name:',' host: ""',' user: ""',' pass: ""',' path:',' local: "/"',' remote: "/public_html/"'
60
67
  end
61
- puts "Deployment configuration file created. Fill in `#{Deploy::CONFIG_PATH}` with server details before deploying."
68
+ puts "Configuration file `#{Deploy::CONFIG_PATH}` created."
62
69
 
63
70
  end
64
71
 
@@ -79,6 +86,7 @@ if ARGV.size > 0
79
86
  end
80
87
  end
81
88
 
89
+
82
90
  if File.exist?(Deploy::CONFIG_PATH)
83
91
  deploy = Deploy::Deployment.new
84
92
  deploy.go ARGV
@@ -12,12 +12,15 @@ module Deploy
12
12
  def initialize(name, hash)
13
13
 
14
14
  @name = name
15
- @config = { :host => '', :user => '', :pass => '', :local => '', :remote => '' }
15
+ @config = { :host => '', :port => '', :user => '', :pass => '', :private_key => '', :local => '', :remote => '' }
16
16
  @options = { :verbose => false, :sync => true }
17
17
 
18
18
  @config[:host] = hash['host']
19
+ @config[:port] = hash['port'] || '22'
20
+
19
21
  @config[:user] = hash['user'] || ''
20
22
  @config[:pass] = hash['pass'] || ''
23
+ @config[:private_key] = hash['privateKey'] || ''
21
24
 
22
25
  @config[:local] = hash['path']['local'].gsub(/\s+/, "")
23
26
  @config[:remote] = hash['path']['remote'].gsub(/\s+/, "")
@@ -29,8 +32,9 @@ module Deploy
29
32
  @config[:remote].insert(0,'/') unless @config[:remote].start_with?('/')
30
33
 
31
34
 
32
- @config[:excludes] = hash['exclude'] if hash['exclude']
35
+ @config[:excludes] = hash['exclude'] || Array.new
33
36
 
37
+
34
38
  @options[:verbose] = hash['verbose'] unless hash['verbose'].nil?
35
39
  @options[:sync] = hash['sync'] unless hash['sync'].nil?
36
40
 
@@ -47,7 +51,7 @@ module Deploy
47
51
  def deploy
48
52
 
49
53
  # Create excludes file if needed
50
- if(@config[:excludes])
54
+ unless @config[:excludes].empty?
51
55
  tmp_exclude = Tempfile.new(['excludes','.txt'])
52
56
  @config[:excludes].each do |ex|
53
57
  tmp_exclude.puts ex
@@ -56,6 +60,12 @@ module Deploy
56
60
  tmp_exclude.puts Deploy::CONFIG_PATH
57
61
  tmp_exclude.close
58
62
  end
63
+
64
+ unless @config[:pass].empty?
65
+ tmp_pass = Tempfile.new(['pass','.txt'])
66
+ tmp_pass.puts @config[:pass]
67
+ tmp_pass.close
68
+ end
59
69
 
60
70
  rsync_cmd = 'rsync -a' # Always keep permissions
61
71
  rsync_cmd += 'v' if @options[:verbose] # Verbose if requested
@@ -64,7 +74,14 @@ module Deploy
64
74
  rsync_cmd += ' --progress' # Always show progress
65
75
  rsync_cmd += ' --force --delete' unless @options[:sync] == false # Sync unless explicitly requested
66
76
  rsync_cmd += " --exclude-from=#{tmp_exclude.path}" unless @config[:excludes].empty? # Include exclude file if it exists
67
- rsync_cmd += " -e \"ssh -p22\""
77
+ rsync_cmd += " --password-file=#{tmp_pass.path}" unless @config[:pass].empty? # Include password file if it exists
78
+ rsync_cmd += " -e \"ssh "
79
+
80
+ if(@config[:pass].empty? and @config[:private_key].empty?)
81
+ rsync_cmd += " -i #{@config[:private_key]} " # Include a custom private key if requested
82
+ end
83
+
84
+ rsync_cmd += "-p#{@config[:port]}\"" # Choose port if specified
68
85
 
69
86
  rsync_cmd += " " + `pwd`.gsub(/\s+/, "") + "#{@config[:local]}" # The local path from the current directory
70
87
 
@@ -77,8 +94,9 @@ module Deploy
77
94
  # puts rsync_cmd
78
95
  system(rsync_cmd)
79
96
 
80
- # Remove excludes file if needed
81
- tmp_exclude.unlink if @config[:excludes]
97
+ # Remove excludes/pass file if needed
98
+ tmp_exclude.unlink unless @config[:excludes].empty?
99
+ tmp_pass.unlink unless @config[:pass].empty?
82
100
 
83
101
  end
84
102
 
@@ -87,12 +105,12 @@ module Deploy
87
105
  def validate
88
106
 
89
107
  # Fail without hostname (user/password are optional)
90
- raise "Error: no hostname set for #{@name}" if @config[:host].empty?
108
+ (puts "Error: no hostname set for `#{@name}`"; exit;) if @config[:host].empty?
91
109
 
92
110
  # Fail if local/remote paths not set (because they should be in initialize
93
111
  # even if they're not set in the yml config file.
94
- raise "Error: no local path set for #{@name}" if @config[:local].empty?
95
- raise "Error: no remote path set for #{@name}" if @config[:remote].empty?
112
+ (puts "Error: no local path set for `#{@name}`"; exit;) if @config[:local].empty?
113
+ (puts "Error: no remote path set for `#{@name}`"; exit;) if @config[:remote].empty?
96
114
 
97
115
  end
98
116
 
@@ -1,5 +1,5 @@
1
1
  module Deploy
2
2
 
3
- VERSION = "0.0.11"
3
+ VERSION = "0.0.12"
4
4
 
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsync-deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ross Zurowski