closync 0.1.0 → 0.1.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.
data/Changelog.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.1.1 (2012-10-23)
2
+
3
+ * enhancement: documented programmatic usage
4
+
1
5
  ## 0.1.0 (2012-10-23)
2
6
 
3
7
  * new feature: files that do not appear in the origin bucket are now automatically deleted from the destination bucket
data/Gemfile CHANGED
@@ -27,4 +27,9 @@ group :development, :test do
27
27
  end
28
28
 
29
29
  end
30
- end
30
+ end
31
+
32
+ group :development do
33
+ gem 'yard'
34
+ gem 'redcarpet'
35
+ end
data/Guardfile CHANGED
@@ -1,7 +1,7 @@
1
1
  # A sample Guardfile
2
2
  # More info at https://github.com/guard/guard#readme
3
3
 
4
- guard 'rspec', :version => 2 do
4
+ guard 'rspec' do
5
5
  watch(%r{^spec/.+_spec\.rb$})
6
6
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
7
  watch('spec/spec_helper.rb') { "spec" }
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Build Status](https://secure.travis-ci.org/wenzowski/closync.png)](http://travis-ci.org/wenzowski/closync)
2
+
1
3
  # Closync
2
4
 
3
5
  Synchronizes local and cloud storage.
data/closync.gemspec CHANGED
@@ -6,9 +6,9 @@ Gem::Specification.new do |gem|
6
6
  gem.email = ["alexander@wenzowski.com"]
7
7
  gem.summary = 'A tool for synchronizing cloud storage buckets.'
8
8
  gem.description = <<-EOF
9
- Closync is a cloud storage interaction tool designed to simplify
10
- synchronization between multiple filesystems. It uses the fog gem
11
- to interact with both local and remote storage.
9
+ A tool for deploying complete HTML Apps to S3-compatible object
10
+ storage. Cache-Control max-age headers are set based on file type.
11
+ Closync uses the fog gem to interact with both local and remote storage.
12
12
  EOF
13
13
  gem.homepage = "http://github.com/wenzowski/closync"
14
14
 
@@ -1,6 +1,8 @@
1
1
  module Closync
2
2
  class Config
3
3
 
4
+ attr_accessor :working_dir
5
+
4
6
  # Fog config
5
7
  attr_accessor :credentials
6
8
  attr_accessor :storage
@@ -9,14 +11,14 @@ module Closync
9
11
  # Git
10
12
  attr_accessor :branch
11
13
 
12
-
13
14
  def initialize(opts={})
14
- self.credentials = {}
15
- self.storage = {}
16
- self.cache_control = {}
17
- self.branch = []
15
+ self.credentials = ( opts[:credentials] || {} )
16
+ self.storage = ( opts[:storage] || {} )
17
+ self.cache_control = ( opts[:cache_control] || {} )
18
+ self.branch = ( opts[:branch] || [] )
19
+ self.working_dir = ( opts[:working_dir] || Dir.pwd)
18
20
 
19
- @yml_path = ( opts[:yml_path] || "#{Dir.pwd}/.closync.yml" )
21
+ @yml_path = ( opts[:yml_path] || "#{self.working_dir}/.closync.yml" )
20
22
 
21
23
  if self.yml_exists?
22
24
  load_yml!
@@ -4,15 +4,17 @@ module Closync
4
4
  class Storage
5
5
  attr_accessor :directory
6
6
 
7
+ ##
7
8
  # * config (<~object) Closync::Config
8
- # * opts (<~dict) Options to initialize fog connection.
9
+ # * bucket_config (<~hash) Options to initialize fog connection.
9
10
  # * :provider (<~string): Options are ['Local', 'AWS', 'Google', 'Rackspace']
10
11
  # * :directory (<~string) Bucket or local directory.
11
- def initialize(config, opts={})
12
+ def initialize(config, bucket_config={})
13
+ opts = bucket_config.clone
12
14
  dir = opts.delete(:directory)
13
15
  case opts[:provider]
14
16
  when 'Local'
15
- opts[:local_root] = Dir.pwd
17
+ opts[:local_root] = config.working_dir
16
18
  @storage = Fog::Storage.new(opts)
17
19
  when 'AWS'
18
20
  opts[:aws_access_key_id] =
@@ -1,3 +1,3 @@
1
1
  module Closync
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
data/lib/closync.rb CHANGED
@@ -3,6 +3,43 @@ require 'closync/config'
3
3
  require 'closync/storage'
4
4
  require 'closync/sync'
5
5
 
6
+ ##
7
+ # The three supported object storage providers are
8
+ # Amazon S3, Google Coloud Storage, and Rackspace Cloudfiles.
9
+ #
10
+ # In addition to loading configuration via yml file (see README.md), Closync
11
+ # can also be used programmatically:
12
+ #
13
+ # require 'closync'
14
+ #
15
+ # config = Closync::Config.new({
16
+ # credentials: {
17
+ # # aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
18
+ # # aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
19
+ # # google_storage_access_key_id: ENV['GOOGLE_STORAGE_ACCESS_KEY_ID'],
20
+ # # google_storage_secret_access_key: ENV['GOOGLE_STORAGE_SECRET_ACCESS_KEY'],
21
+ # rackspace_username: ENV['RACKSPACE_USERNAME'],
22
+ # rackspace_api_key: ENV['RACKSPACE_API_KEY']
23
+ # },
24
+ # working_dir: '/path/from/root', # defaults to Dir.pwd
25
+ # storage: {
26
+ # local: {
27
+ # provider: 'Local',
28
+ # directory: 'relative/path' # relative to working_dir
29
+ # },
30
+ # remote: {
31
+ # provider: 'Rackspace', # || 'AWS' || 'Google'
32
+ # directory: 'bucket_name'
33
+ # }
34
+ # },
35
+ # cache_control: {
36
+ # 'default' => (60*60*24*365),
37
+ # '.html' => (60*5),
38
+ # '.htm' => (60*5)
39
+ # }
40
+ # })
41
+ #
42
+ # Closync::Sync.new(config).push!
6
43
  module Closync
7
44
  class << self
8
45
  def config=(data)
@@ -2,5 +2,5 @@ require 'spec_helper'
2
2
  require 'closync/version'
3
3
 
4
4
  describe Closync do
5
- it { Closync::VERSION.should eq('0.1.0'), "Please don't bump the version." }
5
+ it { Closync::VERSION.should eq('0.1.1'), "Please don't bump the version." }
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: closync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-24 00:00:00.000000000 Z
12
+ date: 2012-10-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog
@@ -27,9 +27,9 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
- description: ! " Closync is a cloud storage interaction tool designed to simplify\n
31
- \ synchronization between multiple filesystems. It uses the fog gem\n to interact
32
- with both local and remote storage.\n"
30
+ description: ! " A tool for deploying complete HTML Apps to S3-compatible object\n
31
+ \ storage. Cache-Control max-age headers are set based on file type.\n Closync
32
+ uses the fog gem to interact with both local and remote storage.\n"
33
33
  email:
34
34
  - alexander@wenzowski.com
35
35
  executables: []
@@ -72,7 +72,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
72
72
  version: '0'
73
73
  segments:
74
74
  - 0
75
- hash: 12197200572235269
75
+ hash: 1824680898520444066
76
76
  required_rubygems_version: !ruby/object:Gem::Requirement
77
77
  none: false
78
78
  requirements:
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  version: '0'
82
82
  segments:
83
83
  - 0
84
- hash: 12197200572235269
84
+ hash: 1824680898520444066
85
85
  requirements: []
86
86
  rubyforge_project:
87
87
  rubygems_version: 1.8.24
@@ -96,3 +96,4 @@ test_files:
96
96
  - spec/lib/closync_spec.rb
97
97
  - spec/spec_helper.rb
98
98
  - spec/support/closync.yml
99
+ has_rdoc: