dandelion 0.4.0.beta2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0db6d6a95dd6dd735cef40b26ee73e674c17060a
4
- data.tar.gz: a78f497fa3447eaa7e2049aa45ebbaec0238095b
3
+ metadata.gz: f59aa5e5acccd85dd1817152e3ccc785c47eee57
4
+ data.tar.gz: 9df39ffc76d631968539f2bf32f608ff5df90ac2
5
5
  SHA512:
6
- metadata.gz: ef112d609e8e09b892039db536142f4d5ee270ec78aa90b29cfa3ecd15f2250a8e2919a081b757b97fce41b66b17579b08644ee433801710fb26fe9b2e0c0bc4
7
- data.tar.gz: b16bfa52c5b20874e17454175b076ec3d3ae905e99b6853ae239a59e8810d507a5ef4c375a042c33ec45728e07507cf1801dda1d62473a7ba62ff899ae59524b
6
+ metadata.gz: be0340dee738190692e082c98a1bd4e95d5d3dfa9d15ad3243af6387c8ff3997d02e2c6f89c07d3d635c2e6d41744e5f400397b368b812e5482783541d0b5d70
7
+ data.tar.gz: 43c8d4fae12b32497eecf8c89b289be5a9746fab0a297249adc0a1e1d6ba1958b1713df81bbfe7201e198d3f54b93d8aa0da629b4873506d567f7b51f2df9dc6
data/README.md CHANGED
@@ -93,6 +93,10 @@ Required:
93
93
  * `secret_access_key`
94
94
  * `bucket_name`
95
95
 
96
+ Optional:
97
+
98
+ * `host` (defaults to s3.amazonaws.com)
99
+
96
100
  Usage
97
101
  -----
98
102
 
@@ -44,6 +44,18 @@ module Dandelion
44
44
  opts.on('--config=[CONFIG]', 'Use the given config file') do |config|
45
45
  options[:config] = config
46
46
  end
47
+
48
+ opts.on('--log=[level]', 'Use the given log level (fatal, error, warn, info, debug)') do |level|
49
+ levels = {
50
+ fatal: Logger::FATAL,
51
+ error: Logger::ERROR,
52
+ warn: Logger::WARN,
53
+ info: Logger::INFO,
54
+ debug: Logger::DEBUG
55
+ }
56
+
57
+ Dandelion.logger.level = levels[level.to_sym]
58
+ end
47
59
  end
48
60
  end
49
61
  end
@@ -23,13 +23,25 @@ module Dandelion
23
23
  local_path, remote_path = path.first
24
24
  end
25
25
 
26
- log.debug("Writing file: #{local_path} -> #{remote_path}")
27
- @adapter.write(remote_path, IO.read(local_path))
26
+ if File.directory?(local_path)
27
+ paths = expand_paths(local_path, remote_path)
28
+ else
29
+ paths = [[local_path, remote_path]]
30
+ end
31
+
32
+ paths.each do |local_path, remote_path|
33
+ deploy_file!(local_path, remote_path)
34
+ end
28
35
  end
29
36
  end
30
37
 
31
38
  private
32
39
 
40
+ def deploy_file!(local_path, remote_path)
41
+ log.debug("Writing file: #{local_path} -> #{remote_path}")
42
+ @adapter.write(remote_path, IO.read(local_path))
43
+ end
44
+
33
45
  def deploy_change!(change)
34
46
  case change.type
35
47
  when :write
@@ -46,6 +58,21 @@ module Dandelion
46
58
  excluded.map { |e| path.start_with?(e) }.any?
47
59
  end
48
60
 
61
+ def expand_paths(dir, remote_path)
62
+ paths = Dir.glob(File.join(dir, '**/*')).map do |path|
63
+ trimmed = trim_path(dir, path)
64
+ [path, File.join(remote_path, trimmed)]
65
+ end
66
+
67
+ paths.reject do |local_path, remote_path|
68
+ File.directory?(local_path)
69
+ end
70
+ end
71
+
72
+ def trim_path(dir, path)
73
+ path[dir.length..-1]
74
+ end
75
+
49
76
  def log
50
77
  Dandelion.logger
51
78
  end
@@ -1,3 +1,3 @@
1
1
  module Dandelion
2
- VERSION = '0.4.0.beta2'
3
- end
2
+ VERSION = '0.4.0'
3
+ end
@@ -66,5 +66,10 @@ describe Dandelion::Command::Base do
66
66
  parser.order!(['--config=foo'])
67
67
  expect(options[:config]).to eq 'foo'
68
68
  end
69
+
70
+ it 'parses log level' do
71
+ parser.order!(['--log=warn'])
72
+ expect(Dandelion.logger.level).to eq Logger::WARN
73
+ end
69
74
  end
70
75
  end
@@ -35,6 +35,8 @@ describe Dandelion::Deployer do
35
35
  before(:each) do
36
36
  IO.stub(:read).with('a.txt').and_return('A')
37
37
  IO.stub(:read).with('b.txt').and_return('B')
38
+ IO.stub(:read).with('c/a.txt').and_return('cA')
39
+ IO.stub(:read).with('c/b.txt').and_return('cB')
38
40
  end
39
41
 
40
42
  context 'local paths' do
@@ -61,5 +63,25 @@ describe Dandelion::Deployer do
61
63
  deployer.deploy_files!(files)
62
64
  end
63
65
  end
66
+
67
+ context 'directory' do
68
+ let(:files) {[
69
+ { 'c/' => 'C/' }
70
+ ]}
71
+
72
+ before(:each) do
73
+ File.stub(:directory?).with('c/').and_return(true)
74
+ File.stub(:directory?).with('c/a.txt').and_return(false)
75
+ File.stub(:directory?).with('c/b.txt').and_return(false)
76
+ Dir.stub(:glob).with('c/**/*').and_return(['c/a.txt', 'c/b.txt'])
77
+ end
78
+
79
+ it 'performs writes on adapter' do
80
+ adapter.should_receive(:write).with('C/a.txt', 'cA')
81
+ adapter.should_receive(:write).with('C/b.txt', 'cB')
82
+
83
+ deployer.deploy_files!(files)
84
+ end
85
+ end
64
86
  end
65
87
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dandelion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0.beta2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Nelson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-01 00:00:00.000000000 Z
11
+ date: 2014-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rugged
@@ -122,9 +122,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
122
122
  version: '0'
123
123
  required_rubygems_version: !ruby/object:Gem::Requirement
124
124
  requirements:
125
- - - '>'
125
+ - - '>='
126
126
  - !ruby/object:Gem::Version
127
- version: 1.3.1
127
+ version: '0'
128
128
  requirements: []
129
129
  rubyforge_project:
130
130
  rubygems_version: 2.0.14