rake_deploy 0.0.1
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 +7 -0
- data/lib/rake_deploy.rb +92 -0
- metadata +72 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d6a4b711479e302ba58ad515a47d0eb42ffb8690
|
4
|
+
data.tar.gz: 623acae9450b6ee393b390413cdafdb9da8e4f9c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 359e6611ee0acf0940dbeb23416057706027872061ff80bcaf682e40aa62e32605642a25a50f2a5472618be9fb580bc0e3f5568412238a2d657ef33d1ff395fa
|
7
|
+
data.tar.gz: c842b557d9d95e5cabec92c7778af142a4f778eeefee132a8cf6e451458d10df03236e9fc27f53b8d59de17dba65b4b5bd0357587232af99ab84015d9b623697
|
data/lib/rake_deploy.rb
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'yaml'
|
3
|
+
require 'open3'
|
4
|
+
|
5
|
+
module RakeDeploy
|
6
|
+
def self.load_file(file)
|
7
|
+
self.load_yaml(File.read(file))
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.load_yaml(string)
|
11
|
+
self.load(YAML.load(string))
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.load(config)
|
15
|
+
Tasks.new(config).install_tasks
|
16
|
+
end
|
17
|
+
|
18
|
+
class Tasks
|
19
|
+
include Rake::DSL if defined? Rake::DSL
|
20
|
+
def initialize(config)
|
21
|
+
@config = config
|
22
|
+
end
|
23
|
+
|
24
|
+
def install_tasks
|
25
|
+
namespace :deploy do
|
26
|
+
@config.each do |name, options|
|
27
|
+
desc "Deploy #{name}"
|
28
|
+
task name do |t, args|
|
29
|
+
Rsyncer.new(name, options).rsync
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class Error < ArgumentError; end
|
37
|
+
|
38
|
+
class Rsyncer
|
39
|
+
attr_reader :name
|
40
|
+
|
41
|
+
def initialize(name, options)
|
42
|
+
@name = name
|
43
|
+
@options = options
|
44
|
+
end
|
45
|
+
|
46
|
+
def indifferent_hash_access(name)
|
47
|
+
@options[name.to_s] || @options[name]
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.option_accessor(name)
|
51
|
+
define_method name do
|
52
|
+
indifferent_hash_access(name) || missing_option(name)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
option_accessor :source
|
56
|
+
option_accessor :user
|
57
|
+
option_accessor :domain
|
58
|
+
option_accessor :target_dir
|
59
|
+
|
60
|
+
def missing_option(name)
|
61
|
+
raise Error.new("Missing option #{name}")
|
62
|
+
end
|
63
|
+
|
64
|
+
def rsync_options
|
65
|
+
indifferent_hash_access(:rsync_options).to_a.join(' ')
|
66
|
+
end
|
67
|
+
|
68
|
+
def rsync
|
69
|
+
_stdin, @stdout, @stderr, @wait_thr = Open3.popen3(rsync_command)
|
70
|
+
write_output
|
71
|
+
end
|
72
|
+
|
73
|
+
def write_output
|
74
|
+
write_if_exists(@stdout)
|
75
|
+
write_if_exists(@stderr)
|
76
|
+
puts "Deploying #{name} #{exitstatus}."
|
77
|
+
end
|
78
|
+
|
79
|
+
def write_if_exists(io)
|
80
|
+
op = io.read
|
81
|
+
puts op unless op.empty?
|
82
|
+
end
|
83
|
+
|
84
|
+
def exitstatus
|
85
|
+
@wait_thr.value.exitstatus == 0 ? 'succeeded' : 'failed'
|
86
|
+
end
|
87
|
+
|
88
|
+
def rsync_command
|
89
|
+
"rsync -r #{rsync_options} #{source} #{user}@#{domain}:#{target_dir}"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rake_deploy
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Dan Corrigan
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-05-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: minitest
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Configurable rake tasks for deploying static content via rsync
|
42
|
+
email: df.corrigan@gmail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/rake_deploy.rb
|
48
|
+
homepage: https://github.com/dcorrigan/rake_deploy
|
49
|
+
licenses:
|
50
|
+
- MIT
|
51
|
+
metadata: {}
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
requirements: []
|
67
|
+
rubyforge_project:
|
68
|
+
rubygems_version: 2.5.2
|
69
|
+
signing_key:
|
70
|
+
specification_version: 4
|
71
|
+
summary: Rake tasks for static site deployment
|
72
|
+
test_files: []
|