palisade 0.0.2 → 0.1.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: 6be72549c6a94a8a615a45b64ff95cd7903f8ed9
4
- data.tar.gz: a82ad1ca51611fdf1dabe77394ac4dd3757f0fed
3
+ metadata.gz: a529d4ac1d98c172b9e26bb10fa44604053d719e
4
+ data.tar.gz: 3f2529c58389b2d82025ecbe9a04c412cdbe9f9e
5
5
  SHA512:
6
- metadata.gz: 9355ba9498ccc78f80a3ee28cd409b75a2c2ccf226eeb6d1d389561e73290177384a18000a6bf0fa9068280e115e5ca12d0ed8e45e6ae097ad75933383e8e6ae
7
- data.tar.gz: 90d516bffa251b4aa31909f27cba7ba48644bdf9f449db717c49c0637a297d51e2456cea2d0b6c25863eaba9663025c0adfa6ef142796cc560e4b37dc7b744f9
6
+ metadata.gz: 4c72e5aa330f67aad252a439130103c6d2836c16a78774301b336c85b596b42f6c61e1e45d1b874d61b152fb2e275fcb1adad4b911bf151d21ae3e0c3b5adaee
7
+ data.tar.gz: 8c1e3a97f2115f90615610836afb1745434a9ce3d5029c21a5632aea7c209c8727770631a7b56064e22e4f3040bccac80a6c8b6ead5c1a1017a7c148c295d2fb
data/README.md CHANGED
@@ -1,26 +1,39 @@
1
1
  # Palisade
2
2
 
3
- This gem is in development. Please check back for updates.
3
+ **WARNING! Palisade is still under v1.0 development. However, pieces of what
4
+ I'd like to be v1.0 are working. This document reflects its current state. Feel
5
+ free to use, but use at your own risk.**
4
6
 
5
- ## Installation
7
+ ## Installation & Configuration
6
8
 
7
- Add this line to your application's Gemfile:
9
+ Palisade is a system gem. Install it globally to your system:
8
10
 
9
- ```ruby
10
- gem 'palisade'
11
+ ```text
12
+ $ gem install palisade
11
13
  ```
12
14
 
13
- And then execute:
15
+ If you're using `rbenv` or `rvm`, you may need to refresh your `$PATH`. Run
16
+ that command, or simply open a new command line session.
14
17
 
15
- $ bundle
18
+ We then need to generate a config file:
16
19
 
17
- Or install it yourself as:
20
+ ```text
21
+ $ palisade install
22
+ ```
18
23
 
19
- $ gem install palisade
24
+ This will generate a hidden directory -- `.palisade` -- inside your home
25
+ directory. The Palisade directory has only one file -- `config.yml`. This is
26
+ where you place your backup configuration.
20
27
 
21
28
  ## Usage
22
29
 
23
- TODO: Write usage instructions here
30
+ Once you are configured, you can run backups from the command line.
31
+
32
+ ```text
33
+ $ palisade backup
34
+ ```
35
+
36
+ More automated options coming soon.
24
37
 
25
38
  ## Contributing
26
39
 
@@ -24,17 +24,15 @@ module Palisade
24
24
  verify_db_dir(name)
25
25
  rsync(config['db'], db_dir(name))
26
26
  end
27
- if config['assets']
28
- method = config['assets']['method']
27
+ config['assets'].each do |asset_name, data|
28
+ method = data['method']
29
29
  method = 'rsync' if method.nil? || method == ''
30
30
  case method
31
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
32
+ rsync(data['route'], project_dir(name))
33
+ when 's3cmd'
34
+ verify_s3_dir(name, asset_name)
35
+ s3cmd(data['route'], s3_dir(name, asset_name), data['config'])
38
36
  end
39
37
  end
40
38
  end
@@ -44,6 +42,11 @@ module Palisade
44
42
  system("rsync #{rsync_options} #{src} #{dest}")
45
43
  end
46
44
 
45
+ def s3cmd(src, dest, config = nil)
46
+ config = "-c #{config}" unless config.nil?
47
+ system("s3cmd get -vr --skip-existing #{config} s3://#{src}/ #{dest}")
48
+ end
49
+
47
50
  # ------------------------------------------ Directory Management
48
51
 
49
52
  def project_dir(name)
@@ -54,9 +57,9 @@ module Palisade
54
57
  "#{project_dir(name)}/db"
55
58
  end
56
59
 
57
- # def asset_dir(project_name, asset_name)
58
- # "#{project_dir(project_name)}/#{asset_name}"
59
- # end
60
+ def s3_dir(name, asset_name)
61
+ "#{project_dir(name)}/#{asset_name}"
62
+ end
60
63
 
61
64
  def verify_project_dir(name)
62
65
  unless Dir.exists?(project_dir(name))
@@ -70,11 +73,11 @@ module Palisade
70
73
  end
71
74
  end
72
75
 
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
76
+ def verify_s3_dir(name, asset_name)
77
+ unless Dir.exists?(s3_dir(name, asset_name))
78
+ FileUtils.mkdir_p(s3_dir(name, asset_name))
79
+ end
80
+ end
78
81
 
79
82
  # ------------------------------------------ Configuration / Options
80
83
 
@@ -1,3 +1,3 @@
1
1
  module Palisade
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -36,19 +36,48 @@ projects:
36
36
  # `assets` should stay as it is and have NO VALUE
37
37
  # -------------------
38
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
39
  # -------------------
50
40
  # From here, you can add as many keys as you want, and
51
- # each can have their own remote ssh url.
41
+ # each can have their own remote ssh url. Each key
42
+ # creates a segmented backup within this project.
43
+ #
44
+ # Note: There should be no value for this key
52
45
  # -------------------
53
- files: deploy@192.168.1.1:~/apps/my_app/shared/files
54
- uploads: deploy@192.168.1.1:~/apps/my_app/shared/files
46
+ files:
47
+ # -------------------
48
+ # `method` is the method by which we're going to
49
+ # back up the assets.
50
+ #
51
+ # Options: rsync, s3cmd
52
+ #
53
+ # You should make sure the method you're using is
54
+ # installed on your machine.
55
+ # -------------------
56
+ method: rsync
57
+ # -------------------
58
+ # The route is the full path to the directory to
59
+ # backup. For rsync, you can use shorthand methods.
60
+ # -------------------
61
+ route: deploy@192.168.1.1:~/apps/my_app/shared/files
62
+ uploads:
63
+ # -------------------
64
+ # This is an example that uses s3cmd to backup an
65
+ # Amazon S3 bucket.
66
+ # -------------------
67
+ method: s3cmd
68
+ # -------------------
69
+ # When you use s3cmd, you can point to a custom
70
+ # configuration file. If you leave this key blank
71
+ # (or if it's missing), we assume the default
72
+ # location.
73
+ # -------------------
74
+ config: ~/.mys3cfg
75
+ # -------------------
76
+ # Although s3cmd routes look this this:
77
+ #
78
+ # s3://mybucket/path/to/my/files/
79
+ #
80
+ # You should omit the protocol, as we add that
81
+ # automatically.
82
+ # -------------------
83
+ route: mybucket/
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.2
4
+ version: 0.1.0
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-28 00:00:00.000000000 Z
11
+ date: 2015-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler