capistrano-syntax-checking 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/README.markdown +24 -1
- data/VERSION +1 -1
- data/lib/capistrano/ext/syntax_checking.rb +4 -3
- data/lib/capistrano/ext/syntax_checking/haml.rb +65 -0
- data/lib/capistrano/ext/syntax_checking/ruby.rb +32 -25
- data/lib/capistrano/recipes/syntax_checking.rb +29 -3
- metadata +4 -5
- data/README.rdoc +0 -1
data/README.markdown
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
-
This is a simple extension to Capistrano that adds a few
|
1
|
+
This is a simple extension to Capistrano that adds a few pre-deploy
|
2
|
+
syntax-checks for source files.
|
3
|
+
|
4
|
+
Currently supported syntaxes are Ruby, ERB, JavaScript (using the Google
|
5
|
+
Closure compiler) and HAML.
|
2
6
|
|
3
7
|
Installation
|
4
8
|
------------
|
@@ -40,6 +44,25 @@ Then build your own tasks by calling the syntax check API, perhaps like this:
|
|
40
44
|
Capistrano::SyntaxChecking.check_javascript('src', :verbose => false)
|
41
45
|
end
|
42
46
|
|
47
|
+
Configuration
|
48
|
+
-------------
|
49
|
+
|
50
|
+
You can override the paths that the checker will look in. For the Rails
|
51
|
+
recipe, the paths are the usual directoryes -- `app`, `lib` and `config` for
|
52
|
+
Ruby files, `app/views` for ERB, and so on. If your Rails layout is a little
|
53
|
+
different, then you may have to extend the path list.
|
54
|
+
|
55
|
+
To override the path list, set the `syntax_check_paths` variable in
|
56
|
+
Capistrano. For example:
|
57
|
+
|
58
|
+
set :syntax_check_paths, :ruby => %w(app lib bin config vendor)
|
59
|
+
|
60
|
+
The keys you may override are `:ruby`, `:erb`, `:javascript` and `:haml`.
|
61
|
+
|
62
|
+
You can also override the task output verbosity:
|
63
|
+
|
64
|
+
set :syntax_check_verbose, false
|
65
|
+
|
43
66
|
Licensing
|
44
67
|
---------
|
45
68
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
require 'capistrano'
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
4
|
+
require 'capistrano/ext/syntax_checking/erb'
|
5
|
+
require 'capistrano/ext/syntax_checking/javascript'
|
6
|
+
require 'capistrano/ext/syntax_checking/ruby'
|
7
|
+
require 'capistrano/ext/syntax_checking/haml'
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'haml'
|
5
|
+
rescue LoadError
|
6
|
+
# Ignore
|
7
|
+
end
|
8
|
+
|
9
|
+
module Capistrano
|
10
|
+
module SyntaxChecks
|
11
|
+
|
12
|
+
class << self
|
13
|
+
|
14
|
+
# Check syntax in HAML files. The +paths+ argument takes a single string
|
15
|
+
# or array of paths to check. Options may be:
|
16
|
+
#
|
17
|
+
# * +verbose+ - if true, enable verbose output to standard output. If false,
|
18
|
+
# only errors will be output.
|
19
|
+
#
|
20
|
+
def check_haml(paths, options = {})
|
21
|
+
if defined?(::Haml)
|
22
|
+
verbose = options[:verbose]
|
23
|
+
begin
|
24
|
+
errors = false
|
25
|
+
file_names = [paths].flatten.compact.map { |path|
|
26
|
+
Dir.glob(File.join(path, "**", "*.haml"))
|
27
|
+
}.flatten
|
28
|
+
file_names.delete_if { |d| File.directory?(d) }
|
29
|
+
if file_names.any?
|
30
|
+
file_names.each_with_index do |file_name, index|
|
31
|
+
begin
|
32
|
+
::Haml::Engine.new(File.read(file_name), :cache => false, :read_cache => false)
|
33
|
+
rescue => e
|
34
|
+
puts "\r#{file_name}:#{e.line}: #{e.message}"
|
35
|
+
errors = true
|
36
|
+
end
|
37
|
+
if verbose
|
38
|
+
$stdout.write("\r#{index + 1} files checked (ctrl-C to skip)")
|
39
|
+
$stdout.flush
|
40
|
+
end
|
41
|
+
end
|
42
|
+
if errors
|
43
|
+
print("\r")
|
44
|
+
abort("One or more syntax errors found. Fix and try again.")
|
45
|
+
else
|
46
|
+
puts ", no problems found."
|
47
|
+
end
|
48
|
+
else
|
49
|
+
if verbose
|
50
|
+
puts("No HAML files to check.")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
rescue Interrupt
|
54
|
+
puts
|
55
|
+
puts("Canceled, skipping.")
|
56
|
+
end
|
57
|
+
else
|
58
|
+
$stderr << "HAML syntax checks disabled as HAML is not installed.\n"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
end
|
@@ -14,39 +14,46 @@ module Capistrano
|
|
14
14
|
def check_ruby(paths, options = {})
|
15
15
|
verbose = options[:verbose]
|
16
16
|
begin
|
17
|
-
ignore_patterns = %w(
|
18
|
-
)
|
19
17
|
errors = false
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
lib
|
24
|
-
config
|
25
|
-
)
|
26
|
-
files = directories.map { |d| Dir.glob(File.join(d, "**", "*.rb")) }.flatten
|
18
|
+
files = [paths].flatten.compact.map { |path|
|
19
|
+
Dir.glob(File.join(path, "**", "*.rb"))
|
20
|
+
}.flatten
|
27
21
|
files.delete_if { |d| File.directory?(d) }
|
28
|
-
files.
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
errors = true
|
22
|
+
if files.any?
|
23
|
+
files.each_with_index do |file_name, index|
|
24
|
+
IO.popen("ruby -c '#{file_name}' 2>&1", "r") do |input|
|
25
|
+
input.each_line do |line|
|
26
|
+
unless line =~ /Syntax OK|\d: warning:/
|
27
|
+
print("\r")
|
28
|
+
puts(line)
|
29
|
+
errors = true
|
30
|
+
end
|
38
31
|
end
|
39
32
|
end
|
33
|
+
if verbose
|
34
|
+
$stdout.write("\r#{index + 1} files checked (ctrl-C to skip)")
|
35
|
+
$stdout.flush
|
36
|
+
end
|
37
|
+
end
|
38
|
+
if errors
|
39
|
+
if verbose
|
40
|
+
print("\r")
|
41
|
+
end
|
42
|
+
abort("One or more syntax errors found. Fix and try again.")
|
43
|
+
else
|
44
|
+
if verbose
|
45
|
+
puts ", no problems found."
|
46
|
+
end
|
40
47
|
end
|
41
|
-
end
|
42
|
-
if errors
|
43
|
-
print("\r")
|
44
|
-
abort("One or more syntax errors found. Fix and try again.")
|
45
48
|
else
|
46
|
-
|
49
|
+
if verbose
|
50
|
+
puts("No files to check.")
|
51
|
+
end
|
47
52
|
end
|
48
53
|
rescue Interrupt
|
49
|
-
|
54
|
+
if verbose
|
55
|
+
puts
|
56
|
+
end
|
50
57
|
puts("Canceled, skipping.")
|
51
58
|
end
|
52
59
|
end
|
@@ -4,6 +4,7 @@ require 'capistrano'
|
|
4
4
|
require 'capistrano/ext/syntax_checking/erb'
|
5
5
|
require 'capistrano/ext/syntax_checking/javascript'
|
6
6
|
require 'capistrano/ext/syntax_checking/ruby'
|
7
|
+
require 'capistrano/ext/syntax_checking/haml'
|
7
8
|
|
8
9
|
unless Capistrano::Configuration.respond_to?(:instance)
|
9
10
|
abort "Capistrano syntax checks extensions requires Capistrano 2"
|
@@ -17,21 +18,46 @@ Capistrano::Configuration.instance.load do
|
|
17
18
|
ruby
|
18
19
|
erb
|
19
20
|
javascript
|
21
|
+
haml
|
20
22
|
end
|
21
23
|
|
22
24
|
desc "Test syntax of all JavaScript files"
|
23
25
|
task :javascript do
|
24
|
-
|
26
|
+
paths = fetch(:syntax_check_paths, {})[:javascript]
|
27
|
+
paths ||= %w(
|
28
|
+
public/javascripts
|
29
|
+
)
|
30
|
+
Capistrano::SyntaxChecks.check_javascript(paths, :verbose => fetch(:syntax_check_verbose, true))
|
25
31
|
end
|
26
32
|
|
27
33
|
desc "Test syntax of all Ruby files"
|
28
34
|
task :ruby do
|
29
|
-
|
35
|
+
paths = fetch(:syntax_check_paths, {})[:ruby]
|
36
|
+
paths ||= %w(
|
37
|
+
app
|
38
|
+
lib
|
39
|
+
config
|
40
|
+
scripts
|
41
|
+
)
|
42
|
+
Capistrano::SyntaxChecks.check_ruby(paths, :verbose => fetch(:syntax_check_verbose, true))
|
30
43
|
end
|
31
44
|
|
32
45
|
desc "Test syntax of all ERB files"
|
33
46
|
task :erb do
|
34
|
-
|
47
|
+
paths = fetch(:syntax_check_paths, {})[:erb]
|
48
|
+
paths ||= %w(
|
49
|
+
app
|
50
|
+
)
|
51
|
+
Capistrano::SyntaxChecks.check_erb(paths, :verbose => fetch(:syntax_check_verbose, true))
|
52
|
+
end
|
53
|
+
|
54
|
+
desc "Test syntax of all HAML files"
|
55
|
+
task :haml do
|
56
|
+
paths = fetch(:syntax_check_paths, {})[:haml]
|
57
|
+
paths ||= %w(
|
58
|
+
app
|
59
|
+
)
|
60
|
+
Capistrano::SyntaxChecks.check_haml(paths, :verbose => fetch(:syntax_check_verbose, true))
|
35
61
|
end
|
36
62
|
|
37
63
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-syntax-checking
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alexander Staubo
|
@@ -43,7 +43,6 @@ extra_rdoc_files:
|
|
43
43
|
- LICENSE
|
44
44
|
- LICENSE.closure
|
45
45
|
- README.markdown
|
46
|
-
- README.rdoc
|
47
46
|
files:
|
48
47
|
- LICENSE
|
49
48
|
- LICENSE.closure
|
@@ -51,11 +50,11 @@ files:
|
|
51
50
|
- VERSION
|
52
51
|
- lib/capistrano/ext/syntax_checking.rb
|
53
52
|
- lib/capistrano/ext/syntax_checking/erb.rb
|
53
|
+
- lib/capistrano/ext/syntax_checking/haml.rb
|
54
54
|
- lib/capistrano/ext/syntax_checking/javascript.rb
|
55
55
|
- lib/capistrano/ext/syntax_checking/ruby.rb
|
56
56
|
- lib/capistrano/recipes/syntax_checking.rb
|
57
57
|
- lib/closure/compiler.jar
|
58
|
-
- README.rdoc
|
59
58
|
has_rdoc: true
|
60
59
|
homepage: http://github.com/alexstaubo/capistrano-syntax-checking
|
61
60
|
licenses: []
|
data/README.rdoc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
This is a simple extension to Capistrano that adds a few tasks to syntax-check source files.
|