capistrano-syncback 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7bb7002f200979e325ae9c958daa4b7052aece67
4
+ data.tar.gz: 466bc753384533c28d4cfa95d72a78036a2d1eae
5
+ SHA512:
6
+ metadata.gz: 86092d91bae050f13a8f50bce8b1da3e579f922098dfa7b8d4fb5e3bdd76e520064bc55a934f5a1006c3fc469af625e5cd1bb0428cf9eb7f8b2a5da54b0fc670
7
+ data.tar.gz: 12030960a0de2157f64daf72cb20bf1a15ebb7d63bc22366977699c3d2c1259b6e74376eda26902a6172654bd67a9cd2d56b27c2a183e6112850d4fc0b5bf423
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in capistrano-syncback.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Maximilian Goisser
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # Capistrano::Syncback
2
+
3
+ Capistrano v3 tasks that can do the following:
4
+ - download/backup files from the server that are not checked into SCM
5
+ - check if files in SCM have changed on the server and download them
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ gem 'capistrano-syncback'
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install capistrano-syncback
20
+
21
+ ## Usage
22
+
23
+ Require tasks in Capfile:
24
+ ```ruby
25
+ #Capfile
26
+ require 'capistrano/syncback'
27
+ ```
28
+ The existing tasks are:
29
+ ```ruby
30
+ cap syncback:files # Check sync_files for changes
31
+ cap syncback:download # Download the files
32
+ cap syncback:check_and_download # Check files and download
33
+ ```
34
+
35
+ The following capistrano variables exist:
36
+ ```ruby
37
+ set :sync_files, %w{ file1 tmp/file2 } #The files that should be checked
38
+ ```
39
+
40
+ ## Status
41
+
42
+ At the moment the sync only works for files and only with git.
43
+
44
+ **Things planned for the future:**
45
+ - (recursive) syncing of dirs
46
+ - more configuration options
47
+ - support for hg
48
+
49
+ ## Contributing
50
+
51
+ **Contributions are highly appreciated**
52
+
53
+ 1. Fork it
54
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
55
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
56
+ 4. Push to the branch (`git push origin my-new-feature`)
57
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'capistrano/syncback/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "capistrano-syncback"
8
+ spec.version = Capistrano::Syncback::VERSION
9
+ spec.authors = ["Maximilian Goisser"]
10
+ spec.email = ["goisser94@gmail.com"]
11
+ spec.description = %q{Capistrano Taks to sync files that changed on the server back to local}
12
+ spec.summary = %q{Capistrano Taks to sync files that changed on the server back to local}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "capistrano", "~> 3.1"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "rake"
25
+ end
@@ -0,0 +1 @@
1
+ load File.expand_path('../tasks/syncback.rake', __FILE__)
@@ -0,0 +1,5 @@
1
+ module Capistrano
2
+ module Syncback
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,50 @@
1
+ namespace :syncback do
2
+ desc 'Check files and download'
3
+ task :check_and_download do
4
+ invoke 'syncback:files'
5
+ #invoke 'syncback:dirs'
6
+ invoke 'syncback:download'
7
+ end
8
+
9
+ desc 'Check sync_files for changes'
10
+ task :files do
11
+ next unless any? :sync_files
12
+ on release_roles :app do
13
+ set(:sync_counter, 0) unless any?(:sync_counter)
14
+ set(:sync_files_found, []) unless any?(:sync_files_found)
15
+ fetch(:sync_files).each do |file|
16
+ target = release_path.join(file)
17
+ if test "[ -f #{target} ]"
18
+ unless test "diff <(cat #{target}) <(cd #{repo_path}; git show #{fetch(:branch)}:#{file})"
19
+ set :sync_files_found, fetch(:sync_files_found).push(file)
20
+ set :sync_counter, fetch(:sync_counter) + 1
21
+ end
22
+ else
23
+ fail "File #{file} not found"
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ desc 'Download the files'
30
+ task :download do
31
+ on release_roles :app do
32
+ if fetch(:sync_counter) != 0
33
+ info 'Changes were found in the following files:'
34
+ fetch(:sync_files_found).each do |file|
35
+ info file
36
+ end
37
+
38
+ ask(:sync_changes, "Do you want to abort the deployment and download the changes? (y/n)")
39
+ if fetch(:sync_changes) == 'y'
40
+ fetch(:sync_files_found).each do |file|
41
+ server_file = release_path.join(file)
42
+ local_file = File.join(Dir.pwd, file)
43
+ download! server_file, local_file
44
+ end
45
+ fail "Abort for sync"
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: capistrano-syncback
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Maximilian Goisser
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-02-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: capistrano
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '3.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '3.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Capistrano Taks to sync files that changed on the server back to local
56
+ email:
57
+ - goisser94@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - .gitignore
63
+ - Gemfile
64
+ - LICENSE.txt
65
+ - README.md
66
+ - Rakefile
67
+ - capistrano-syncback.gemspec
68
+ - lib/capistrano/syncback.rb
69
+ - lib/capistrano/syncback/version.rb
70
+ - lib/capistrano/tasks/syncback.rake
71
+ homepage: ''
72
+ licenses:
73
+ - MIT
74
+ metadata: {}
75
+ post_install_message:
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ required_rubygems_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ requirements: []
90
+ rubyforge_project:
91
+ rubygems_version: 2.2.2
92
+ signing_key:
93
+ specification_version: 4
94
+ summary: Capistrano Taks to sync files that changed on the server back to local
95
+ test_files: []