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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/rake_deploy.rb +92 -0
  3. metadata +72 -0
@@ -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
@@ -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: []