guard-knife 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 CHANGED
@@ -1,3 +1,7 @@
1
+ 0.1.1
2
+ - only upload each cookbook once, even if multiple files change
3
+ - better title for notifications
4
+
1
5
  0.1.0
2
6
  - introduce notifications, from Alan Harper
3
7
 
@@ -5,8 +5,8 @@ Gem::Specification.new do |s|
5
5
  s.rubygems_version = '1.3.5'
6
6
 
7
7
  s.name = 'guard-knife'
8
- s.version = '0.1.0'
9
- s.date = '2012-03-16'
8
+ s.version = '0.1.1'
9
+ s.date = '2012-03-18'
10
10
  s.rubyforge_project = ''
11
11
 
12
12
  s.summary = "Guard for Chef using knife"
@@ -3,7 +3,7 @@ require 'guard/guard'
3
3
 
4
4
  module Guard
5
5
  class Knife < Guard
6
- VERSION = '0.1.0'
6
+ VERSION = '0.1.1'
7
7
 
8
8
  # Initialize a Guard.
9
9
  # @param [Array<Guard::Watcher>] watchers the Guard file watchers
@@ -39,9 +39,8 @@ module Guard
39
39
  # @param [Array<String>] paths the changes files or paths
40
40
  # @raise [:task_has_failed] when run_on_change has failed
41
41
  def run_on_change(paths)
42
+ paths = normalize(paths)
42
43
  paths.each do |path|
43
- next if path.match(/\.swp$/) # vim swap file
44
-
45
44
  upload(path)
46
45
  end
47
46
  end
@@ -52,10 +51,20 @@ module Guard
52
51
  def run_on_deletion(paths)
53
52
  end
54
53
 
54
+ def normalize(paths)
55
+ paths.map! do |path|
56
+ next if path.match(/\.swp$/) # vim swap file
57
+
58
+ # only upload cookbook once in case many files change
59
+ path.gsub(/^(cookbooks\/[^\/]*)\/.*$/, '\1')
60
+ end
61
+ paths.compact.uniq
62
+ end
63
+
55
64
  def upload(path)
56
- if path.match(/^cookbooks\/([^\/]*)\//)
65
+ if path.match(/^cookbooks\/([^\/]*)/)
57
66
  upload_cookbook($1)
58
- elsif path.match(/^data_bags\/(.*)\/(.*)$/)
67
+ elsif path.match(/^data_bags\/(.*)\/(.*).json$/)
59
68
  data_bag = $1
60
69
  item = $2
61
70
  upload_databag(data_bag, item)
@@ -80,33 +89,33 @@ module Guard
80
89
 
81
90
  def upload_cookbook(cookbook)
82
91
  if system("knife cookbook upload #{cookbook} #{knife_options}")
83
- ::Guard::Notifier.notify("Cookbook #{cookbook} uploaded")
92
+ ::Guard::Notifier.notify("Cookbook #{cookbook} uploaded", :title => 'Knife')
84
93
  else
85
- ::Guard::Notifier.notify("Cookbook #{cookbook} failed to upload", :image => :failed)
94
+ ::Guard::Notifier.notify("Cookbook #{cookbook} failed to upload", :title => 'Knife', :image => :failed)
86
95
  end
87
96
  end
88
97
 
89
98
  def upload_databag(data_bag, item)
90
99
  if system("knife data bag from file #{data_bag} #{item} #{knife_options}")
91
- ::Guard::Notifier.notify("Data bag #{data_bag} upload")
100
+ ::Guard::Notifier.notify("Data bag #{data_bag} upload", :title => 'Knife')
92
101
  else
93
- ::Guard::Notifier.notify("Data bag #{data_bag} failed to upload", :image => :failed)
102
+ ::Guard::Notifier.notify("Data bag #{data_bag} failed to upload", :title => 'Knife', :image => :failed)
94
103
  end
95
104
  end
96
105
 
97
106
  def upload_environment(environment)
98
107
  if system("knife environment from file #{environment} #{knife_options}")
99
- ::Guard::Notifier.notify("Environment #{environment} uploaded")
108
+ ::Guard::Notifier.notify("Environment #{environment} uploaded", :title => 'Knife')
100
109
  else
101
- ::Guard::Notifier.notify("Environment #{environment} failed to upload", :image => :failed)
110
+ ::Guard::Notifier.notify("Environment #{environment} failed to upload", :title => 'Knife', :image => :failed)
102
111
  end
103
112
  end
104
113
 
105
114
  def upload_role(role)
106
115
  if system("knife role from file #{role} #{knife_options}")
107
- ::Guard::Notifier.notify("Role #{role} uploaded")
116
+ ::Guard::Notifier.notify("Role #{role} uploaded", :title => 'Knife')
108
117
  else
109
- ::Guard::Notifier.notify("Role #{role} upload failed", :image => :failed)
118
+ ::Guard::Notifier.notify("Role #{role} upload failed", :title => 'Knife', :image => :failed)
110
119
  end
111
120
  end
112
121
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-knife
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,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-16 00:00:00.000000000 Z
12
+ date: 2012-03-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: guard
16
- requirement: &8503000 !ruby/object:Gem::Requirement
16
+ requirement: &14436540 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *8503000
24
+ version_requirements: *14436540
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: chef
27
- requirement: &8502140 !ruby/object:Gem::Requirement
27
+ requirement: &14435980 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0.10'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *8502140
35
+ version_requirements: *14435980
36
36
  description: Guard for Chef using knife to upload files
37
37
  email: github@erisiandiscord.de
38
38
  executables: []
@@ -69,8 +69,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
69
  version: '0'
70
70
  requirements: []
71
71
  rubyforge_project: ''
72
- rubygems_version: 1.8.10
72
+ rubygems_version: 1.8.17
73
73
  signing_key:
74
74
  specification_version: 2
75
75
  summary: Guard for Chef using knife
76
76
  test_files: []
77
+ has_rdoc: