capistrano-shared-file 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0e1eee643c665843a165fec2114bd677d8f0c024
4
- data.tar.gz: 01d534b9072cef9a0f6a653ae38a6c435c56e0a2
3
+ metadata.gz: 8ab5fabc8685d9f182a0389d306d19fdd6051b12
4
+ data.tar.gz: 65055df25ad30bf44ebdf7108f5ea22817eb768f
5
5
  SHA512:
6
- metadata.gz: 09696afa985ae72b31d5522eda84551f174da87d5fff8193e1a264d92e225c3519431ab9eeef5b9a9bc1825c22daeb79e955f79ffc694174bbb859e705a185bf
7
- data.tar.gz: 5839efabdc0a3605a6cf2d65cad54679a4edf00d4f74436b456d9dee00dd17664909fa512d4af23885cce07b03c3f584dabad9b5fe100ec56bc4eb1fef5df048
6
+ metadata.gz: c86880a68661a0f00cd365569a26cdf1336f4ed4bbeac903d6649655140a8bccfbb4287ffff5d4d77744a2cf6a8406e3a77b4614fe9032554a7088de0624af59
7
+ data.tar.gz: 577355b64ae96d712ca29a1cf79da548008f48a929436f242a65bd19043e184f9c70052c1c0b8b0d9632072aedf6ef3935f3d4b90bcf04690ca04d1d54d94233
data/README.md CHANGED
@@ -59,6 +59,14 @@ Enbales backups of your shared files when uploading and downloading shared files
59
59
 
60
60
  For more details on the implications of setting this variable to `true`, refer to the next **Upload** and **Download** sections.
61
61
 
62
+ ### shared_file_show_upload_diff
63
+
64
+ When set, you will be prompted with the diff of any files that are changing due to your shared_file:upload. By default:
65
+
66
+ set :shared_file_show_upload_diff, true
67
+
68
+ For more details on the implications of setting this variable to `true`, refer to the next **Upload** section.
69
+
62
70
  ## Tasks
63
71
 
64
72
  ### Upload
@@ -71,6 +79,10 @@ With backup (it creates a backup of the remote shared files on your machine befo
71
79
 
72
80
  bundle exec cap shared_file:upload -S shared_file_backup=true
73
81
 
82
+ With show upload diff (downloads the existing file and displays the diff, prompting you to accept the changes):
83
+
84
+ bundle exec cap shared_file:upload -S shared_file_show_upload_diff=true
85
+
74
86
  ### Download
75
87
 
76
88
  To download all the files defined in the `shared_files` capistrano variable from a remote server, you can execute:
@@ -6,9 +6,10 @@ end
6
6
 
7
7
  Capistrano::Configuration.instance.load do
8
8
 
9
- _cset :shared_files, %w(config/database.yml)
10
- _cset :shared_file_dir, 'files'
11
- _cset :shared_file_backup, false
9
+ _cset :shared_files, %w(config/database.yml)
10
+ _cset :shared_file_dir, 'files'
11
+ _cset :shared_file_backup, false
12
+ _cset :shared_file_show_upload_diff, true
12
13
 
13
14
  def remote_path_to(file)
14
15
  File.join(shared_path, shared_file_dir, file)
@@ -18,6 +19,17 @@ Capistrano::Configuration.instance.load do
18
19
  File.join(File.dirname(file), "#{Time.now.strftime('%Y%m%dT%H%M%S')}_#{File.basename(file)}")
19
20
  end
20
21
 
22
+ def confirm_upload_is_desired(backup_file, file)
23
+ diff_result = `git diff --no-index --color=always --ignore-space-at-eol #{backup_file} #{file}`
24
+ File.unlink(backup_file) unless shared_file_backup
25
+ unless $?.success?
26
+ puts "Showing diff for #{file}:"
27
+ puts diff_result
28
+ result = Capistrano::CLI.ui.ask("Are you sure that you want to upload your changes to #{file} (y/n)?", ['y','n'])
29
+ return (result == 'y')
30
+ end
31
+ end
32
+
21
33
  namespace :shared_file do
22
34
 
23
35
  desc 'Generate remote directories for shared files.'
@@ -32,10 +44,15 @@ Capistrano::Configuration.instance.load do
32
44
  desc 'Upload shared files to server'
33
45
  task :upload, :except => { :no_release => true } do
34
46
  shared_files.each do |file|
35
- if shared_file_backup
36
- top.download(remote_path_to(file), backup_path_to(file), :via => :scp)
47
+ if shared_file_backup || shared_file_show_upload_diff
48
+ backup_file = backup_path_to(file)
49
+ top.download(remote_path_to(file), backup_file, :via => :scp)
50
+ if shared_file_show_upload_diff
51
+ should_upload = confirm_upload_is_desired(backup_file, file)
52
+ puts "No changes made to #{file}!"
53
+ end
37
54
  end
38
- top.upload(file, remote_path_to(file), :via => :scp)
55
+ top.upload(file, remote_path_to(file), :via => :scp) if !shared_file_show_upload_diff || should_upload
39
56
  end
40
57
  end
41
58
 
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module SharedFile
3
- VERSION = '1.1.1'
3
+ VERSION = '1.2.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-shared-file
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Salmeron Amselem
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-06 00:00:00.000000000 Z
11
+ date: 2014-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -66,3 +66,4 @@ signing_key:
66
66
  specification_version: 4
67
67
  summary: Capistrano recipe to upload, download and symlink shared files.
68
68
  test_files: []
69
+ has_rdoc: