palisade 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/bin/palisade +15 -0
- data/lib/messages/install.txt +10 -0
- data/lib/palisade/backup.rb +110 -0
- data/lib/palisade/install.rb +60 -0
- data/lib/palisade/message.rb +28 -0
- data/lib/palisade/version.rb +1 -1
- data/lib/palisade.rb +0 -1
- data/lib/templates/config.yml +54 -0
- data/palisade.gemspec +15 -0
- metadata +14 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6be72549c6a94a8a615a45b64ff95cd7903f8ed9
|
4
|
+
data.tar.gz: a82ad1ca51611fdf1dabe77394ac4dd3757f0fed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9355ba9498ccc78f80a3ee28cd409b75a2c2ccf226eeb6d1d389561e73290177384a18000a6bf0fa9068280e115e5ca12d0ed8e45e6ae097ad75933383e8e6ae
|
7
|
+
data.tar.gz: 90d516bffa251b4aa31909f27cba7ba48644bdf9f449db717c49c0637a297d51e2456cea2d0b6c25863eaba9663025c0adfa6ef142796cc560e4b37dc7b744f9
|
data/.gitignore
CHANGED
data/bin/palisade
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'palisade/install'
|
4
|
+
require 'palisade/backup'
|
5
|
+
|
6
|
+
action = ARGV[0]
|
7
|
+
|
8
|
+
case action
|
9
|
+
when 'install'
|
10
|
+
Palisade::Install.add_config
|
11
|
+
when 'backup'
|
12
|
+
Palisade::Backup.backup
|
13
|
+
else
|
14
|
+
puts "Usage: palisade [ACTION]"
|
15
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
module Palisade
|
5
|
+
class Backup
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.backup
|
11
|
+
Palisade::Backup.new.backup
|
12
|
+
end
|
13
|
+
|
14
|
+
def backup
|
15
|
+
do_the_backup
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def do_the_backup
|
21
|
+
projects.each do |name, config|
|
22
|
+
verify_project_dir(name)
|
23
|
+
if config['db']
|
24
|
+
verify_db_dir(name)
|
25
|
+
rsync(config['db'], db_dir(name))
|
26
|
+
end
|
27
|
+
if config['assets']
|
28
|
+
method = config['assets']['method']
|
29
|
+
method = 'rsync' if method.nil? || method == ''
|
30
|
+
case method
|
31
|
+
when 'rsync'
|
32
|
+
config['assets'].each do |asset_name, url|
|
33
|
+
unless asset_name == 'method'
|
34
|
+
# verify_asset_dir(name, asset_name)
|
35
|
+
rsync(url, project_dir(name))
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def rsync(src, dest)
|
44
|
+
system("rsync #{rsync_options} #{src} #{dest}")
|
45
|
+
end
|
46
|
+
|
47
|
+
# ------------------------------------------ Directory Management
|
48
|
+
|
49
|
+
def project_dir(name)
|
50
|
+
"#{dest_root}/#{name}"
|
51
|
+
end
|
52
|
+
|
53
|
+
def db_dir(name)
|
54
|
+
"#{project_dir(name)}/db"
|
55
|
+
end
|
56
|
+
|
57
|
+
# def asset_dir(project_name, asset_name)
|
58
|
+
# "#{project_dir(project_name)}/#{asset_name}"
|
59
|
+
# end
|
60
|
+
|
61
|
+
def verify_project_dir(name)
|
62
|
+
unless Dir.exists?(project_dir(name))
|
63
|
+
FileUtils.mkdir_p(project_dir(name))
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def verify_db_dir(name)
|
68
|
+
unless Dir.exists?(db_dir(name))
|
69
|
+
FileUtils.mkdir_p(db_dir(name))
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# def verify_asset_dir(project_name, asset_name)
|
74
|
+
# unless Dir.exists?(asset_dir(project_name, asset_name))
|
75
|
+
# FileUtils.mkdir_p(asset_dir(project_name, asset_name))
|
76
|
+
# end
|
77
|
+
# end
|
78
|
+
|
79
|
+
# ------------------------------------------ Configuration / Options
|
80
|
+
|
81
|
+
def config_file
|
82
|
+
@config_file ||= "#{`echo $HOME`.strip}/.palisade/config.yml"
|
83
|
+
end
|
84
|
+
|
85
|
+
def load_config
|
86
|
+
@load_config ||= YAML.load_file(config_file)
|
87
|
+
end
|
88
|
+
|
89
|
+
def config
|
90
|
+
@config ||= load_config['config']
|
91
|
+
end
|
92
|
+
|
93
|
+
def projects
|
94
|
+
@projects ||= load_config['projects']
|
95
|
+
end
|
96
|
+
|
97
|
+
def dest_root
|
98
|
+
@dest_root ||= config['root']
|
99
|
+
end
|
100
|
+
|
101
|
+
def rsync_options
|
102
|
+
@rsync_options ||= '-chavz --stats'
|
103
|
+
end
|
104
|
+
|
105
|
+
def daystamp
|
106
|
+
@daystamp ||= Time.now.strftime('%d')
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'palisade/message'
|
3
|
+
|
4
|
+
module Palisade
|
5
|
+
class Install
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.add_config
|
11
|
+
Palisade::Install.new.add_config
|
12
|
+
end
|
13
|
+
|
14
|
+
def add_config
|
15
|
+
mk_config_dir
|
16
|
+
copy_config_file
|
17
|
+
print_install_message
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def home_dir
|
23
|
+
`echo $HOME`.strip
|
24
|
+
end
|
25
|
+
|
26
|
+
def config_dir
|
27
|
+
"#{home_dir}/.palisade"
|
28
|
+
end
|
29
|
+
|
30
|
+
def config_file
|
31
|
+
"#{config_dir}/config.yml"
|
32
|
+
end
|
33
|
+
|
34
|
+
def config_template
|
35
|
+
File.expand_path('../../templates/config.yml', __FILE__)
|
36
|
+
end
|
37
|
+
|
38
|
+
def mk_config_dir
|
39
|
+
unless Dir.exists?(config_dir)
|
40
|
+
FileUtils.mkdir(config_dir)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def copy_config_file
|
45
|
+
unless File.exists?(config_file)
|
46
|
+
system("cp #{config_template} #{config_file}")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def print_install_message
|
51
|
+
Palisade::Message.print(
|
52
|
+
:install,
|
53
|
+
{
|
54
|
+
:config_file => config_file
|
55
|
+
}
|
56
|
+
)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Palisade
|
2
|
+
class Message
|
3
|
+
|
4
|
+
def initialize(name, vars = {})
|
5
|
+
@name = name
|
6
|
+
@vars = vars
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.print(name, vars = {})
|
10
|
+
Palisade::Message.new(name.to_s, vars).print
|
11
|
+
end
|
12
|
+
|
13
|
+
def print
|
14
|
+
puts template_contents
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def template_file
|
20
|
+
File.expand_path("../../messages/#{@name}.txt", __FILE__)
|
21
|
+
end
|
22
|
+
|
23
|
+
def template_contents
|
24
|
+
eval('"' + File.read(template_file) + '"')
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
data/lib/palisade/version.rb
CHANGED
data/lib/palisade.rb
CHANGED
@@ -0,0 +1,54 @@
|
|
1
|
+
# -------------------
|
2
|
+
# This is your main configuration file for Palisade. It
|
3
|
+
# drives the backups run by Palisade. Edit this to your
|
4
|
+
# liking and then start backing up!
|
5
|
+
# -------------------
|
6
|
+
config:
|
7
|
+
# -------------------
|
8
|
+
# This is the root path to where your backups should be
|
9
|
+
# stored.
|
10
|
+
#
|
11
|
+
# This path should be accessible whenever the computer is
|
12
|
+
# on. So, if it's an external drive, you'll need to make
|
13
|
+
# sure it's always connected.
|
14
|
+
# -------------------
|
15
|
+
root: /path/to/my/backups
|
16
|
+
# -------------------
|
17
|
+
# This is where you store your backup settings. Each backup
|
18
|
+
# is broken down as a project, which can have assets (files)
|
19
|
+
# and a database. See the example below.
|
20
|
+
# -------------------
|
21
|
+
projects:
|
22
|
+
# -------------------
|
23
|
+
# The key should be a unique identifier for the project.
|
24
|
+
# -------------------
|
25
|
+
my_first_project:
|
26
|
+
# -------------------
|
27
|
+
# `db` is the path to the database. If it is remote, use
|
28
|
+
# a full ssh url. You can use ssh config shorthand
|
29
|
+
# methods.
|
30
|
+
#
|
31
|
+
# Note: You'll need a nightly dump of this database for
|
32
|
+
# this to work.
|
33
|
+
# -------------------
|
34
|
+
db: myserver.com:~/backups/my_app_production.sql
|
35
|
+
# -------------------
|
36
|
+
# `assets` should stay as it is and have NO VALUE
|
37
|
+
# -------------------
|
38
|
+
assets:
|
39
|
+
# -------------------
|
40
|
+
# `method` is the method by which we're going to back
|
41
|
+
# up the assets.
|
42
|
+
#
|
43
|
+
# Options: rsync, s3cmd
|
44
|
+
#
|
45
|
+
# You should make sure the method you're using is
|
46
|
+
# installed on your machine.
|
47
|
+
# -------------------
|
48
|
+
method: rsync
|
49
|
+
# -------------------
|
50
|
+
# From here, you can add as many keys as you want, and
|
51
|
+
# each can have their own remote ssh url.
|
52
|
+
# -------------------
|
53
|
+
files: deploy@192.168.1.1:~/apps/my_app/shared/files
|
54
|
+
uploads: deploy@192.168.1.1:~/apps/my_app/shared/files
|
data/palisade.gemspec
CHANGED
@@ -18,6 +18,21 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.post_install_message = "
|
22
|
+
------------------------------
|
23
|
+
|
24
|
+
Thanks for installing Palisade!
|
25
|
+
|
26
|
+
Before you start building your wall, you need to install a
|
27
|
+
config file. Don't forget to run this command:
|
28
|
+
|
29
|
+
palisade install
|
30
|
+
|
31
|
+
And then edit the config file!
|
32
|
+
|
33
|
+
------------------------------
|
34
|
+
"
|
35
|
+
|
21
36
|
spec.add_development_dependency "bundler", "~> 1.7"
|
22
37
|
spec.add_development_dependency "rake", "~> 10.0"
|
23
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: palisade
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean C Davis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -41,7 +41,8 @@ dependencies:
|
|
41
41
|
description: Automate regular backups of remote data.
|
42
42
|
email:
|
43
43
|
- scdavis41@gmail.com
|
44
|
-
executables:
|
44
|
+
executables:
|
45
|
+
- palisade
|
45
46
|
extensions: []
|
46
47
|
extra_rdoc_files: []
|
47
48
|
files:
|
@@ -50,14 +51,23 @@ files:
|
|
50
51
|
- LICENSE.txt
|
51
52
|
- README.md
|
52
53
|
- Rakefile
|
54
|
+
- bin/palisade
|
55
|
+
- lib/messages/install.txt
|
53
56
|
- lib/palisade.rb
|
57
|
+
- lib/palisade/backup.rb
|
58
|
+
- lib/palisade/install.rb
|
59
|
+
- lib/palisade/message.rb
|
54
60
|
- lib/palisade/version.rb
|
61
|
+
- lib/templates/config.yml
|
55
62
|
- palisade.gemspec
|
56
63
|
homepage: ''
|
57
64
|
licenses:
|
58
65
|
- MIT
|
59
66
|
metadata: {}
|
60
|
-
post_install_message:
|
67
|
+
post_install_message: "\n ------------------------------\n\n Thanks for installing
|
68
|
+
Palisade! \n\n Before you start building your wall, you need to install a\n config
|
69
|
+
file. Don't forget to run this command:\n\n palisade install\n\n And then
|
70
|
+
edit the config file!\n\n ------------------------------\n "
|
61
71
|
rdoc_options: []
|
62
72
|
require_paths:
|
63
73
|
- lib
|