guard-puppet-lint 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -11,5 +11,6 @@ group :development do
11
11
  #gem "bundler", "> 1.0.0"
12
12
  gem "jeweler", "~> 1.8.3"
13
13
  gem "rcov", ">= 0"
14
+ gem 'libnotify'
14
15
  gem "guard", ">= 0"
15
16
  end
@@ -3,20 +3,21 @@ GEM
3
3
  specs:
4
4
  ffi (1.0.11)
5
5
  git (1.2.5)
6
- guard (1.0.1)
6
+ guard (1.0.3)
7
7
  ffi (>= 0.5.0)
8
- thor (~> 0.14.6)
8
+ thor (>= 0.14.6)
9
9
  jeweler (1.8.3)
10
10
  bundler (~> 1.0)
11
11
  git (>= 1.2.5)
12
12
  rake
13
13
  rdoc
14
- json (1.6.6)
14
+ json (1.7.3)
15
+ libnotify (0.7.2)
15
16
  rake (0.9.2.2)
16
17
  rcov (1.0.0)
17
18
  rdoc (3.12)
18
19
  json (~> 1.4)
19
- thor (0.14.6)
20
+ thor (0.15.2)
20
21
 
21
22
  PLATFORMS
22
23
  ruby
@@ -24,4 +25,5 @@ PLATFORMS
24
25
  DEPENDENCIES
25
26
  guard
26
27
  jeweler (~> 1.8.3)
28
+ libnotify
27
29
  rcov
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "guard-puppet-lint"
8
- s.version = "0.1.1"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Alister Bulman"]
12
- s.date = "2012-04-02"
12
+ s.date = "2012-05-20"
13
13
  s.description = "As Puppet manifest files change, run puppet-lint on them"
14
14
  s.email = "abulman@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -43,15 +43,18 @@ Gem::Specification.new do |s|
43
43
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
44
44
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.3"])
45
45
  s.add_development_dependency(%q<rcov>, [">= 0"])
46
+ s.add_development_dependency(%q<libnotify>, [">= 0"])
46
47
  s.add_development_dependency(%q<guard>, [">= 0"])
47
48
  else
48
49
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
49
50
  s.add_dependency(%q<rcov>, [">= 0"])
51
+ s.add_dependency(%q<libnotify>, [">= 0"])
50
52
  s.add_dependency(%q<guard>, [">= 0"])
51
53
  end
52
54
  else
53
55
  s.add_dependency(%q<jeweler>, ["~> 1.8.3"])
54
56
  s.add_dependency(%q<rcov>, [">= 0"])
57
+ s.add_dependency(%q<libnotify>, [">= 0"])
55
58
  s.add_dependency(%q<guard>, [">= 0"])
56
59
  end
57
60
  end
@@ -0,0 +1 @@
1
+ require 'guard/puppet-lint'
@@ -1,12 +1,32 @@
1
1
  require 'guard'
2
2
  require 'guard/guard'
3
3
  require 'guard/watcher'
4
+ require 'puppet-lint'
5
+
6
+ class PuppetLint
7
+
8
+ attr_reader :messages
9
+
10
+ def clear_messages
11
+ @messages = []
12
+ end
13
+
14
+ def format_message(message)
15
+ @messages << (log_format % message)
16
+ end
17
+ end
4
18
 
5
19
  module Guard
6
20
  class Puppetlint < Guard
7
21
 
8
22
  VERSION = '0.0.1'
9
23
 
24
+ def initialize(watchers = [], options = {})
25
+ options = { :syntax_check => true }.merge(options)
26
+ @linter = PuppetLint.new
27
+ super
28
+ end
29
+
10
30
  # Calls #run_all if the :all_on_start option is present.
11
31
  def start
12
32
  run_all if options[:all_on_start]
@@ -17,17 +37,41 @@ module Guard
17
37
  run_on_change(Watcher.match_files(self, Dir.glob('{,**/}*{,.*}').uniq))
18
38
  end
19
39
 
40
+ def prepend_filename(msg, file)
41
+ if msg
42
+ msg.map {|x| "#{file}: #{x}"}
43
+ else
44
+ []
45
+ end
46
+ end
47
+
20
48
  # Print the result of the command(s), if there are results to be printed.
21
49
  def run_on_change(res)
22
- puts res if res
23
- end
50
+ messages = []
51
+ res.each do |file|
52
+ file = File.join( options[:watchdir].to_s,file ) if options[:watchdir]
24
53
 
25
- end
54
+ if options[:syntax_check]
55
+ parser_messages = `puppet parser validate #{file} --color=false`.split("\n")
56
+ parser_messages.reject! { |s| s =~ /puppet help parser validate/ }
57
+ parser_messages.map! { |s| s.gsub 'err: Could not parse for environment production:', '' }
58
+
59
+ messages += prepend_filename(parser_messages, file)
60
+ end
26
61
 
27
- class Dsl
28
- # Easy method to display a notification
29
- def n(msg, title='', image=nil)
30
- Notifier.notify(msg, :title => title, :image => image)
62
+ @linter.file = file
63
+ @linter.clear_messages
64
+ @linter.run
65
+ linter_msg = @linter.messages.reject { |s| !options[:show_warnings] && s =~ /WARNING/ }
66
+ messages += prepend_filename(linter_msg, file)
67
+ end
68
+ if messages.empty?
69
+ messages = ["Files are ok:"] + res
70
+ image = :success
71
+ else
72
+ image = :failed
73
+ end
74
+ Notifier.notify( messages.join("\n"), :title => "Puppet lint", :image => image )
31
75
  end
32
76
  end
33
77
  end
@@ -1,7 +1,9 @@
1
1
  # Add files and commands to this file, like the example:
2
2
  # watch(%r{file/path}) { `command(s)` }
3
3
  #
4
- guard 'puppet-lint' do
5
- watch(/(.*).pp$/) {|m| `echo #{m[0]}; \
6
- puppet-lint #{m[0]} --no-80chars-check --with-filename` }
4
+ guard 'puppet-lint', :watchdir => Guard.options[:watchdir],
5
+ :show_warnings => false,
6
+ :syntax_check => true \
7
+ do
8
+ watch(/(.*).pp$/)
7
9
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-puppet-lint
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alister Bulman
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-04-02 00:00:00 Z
18
+ date: 2012-05-20 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  version_requirements: &id001 !ruby/object:Gem::Requirement
@@ -57,10 +57,24 @@ dependencies:
57
57
  segments:
58
58
  - 0
59
59
  version: "0"
60
- name: guard
60
+ name: libnotify
61
61
  prerelease: false
62
62
  type: :development
63
63
  requirement: *id003
64
+ - !ruby/object:Gem::Dependency
65
+ version_requirements: &id004 !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ hash: 3
71
+ segments:
72
+ - 0
73
+ version: "0"
74
+ name: guard
75
+ prerelease: false
76
+ type: :development
77
+ requirement: *id004
64
78
  description: As Puppet manifest files change, run puppet-lint on them
65
79
  email: abulman@gmail.com
66
80
  executables: []