ci-syntax-tool 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +18 -0
- data/lib/ci-syntax-tool/rake_task.rb +74 -0
- data/lib/ci-syntax-tool/version.rb +1 -1
- data/test/fixtures/rakefiles/Rakefile +16 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 48c6b5c42852bbebba0adf68bac910ef045c904a
|
4
|
+
data.tar.gz: 71fe5ab362375d55db9a71229e4d25c9d580a04a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b25922cd44c509c9df3104439b67b783a907a7cfcbbf3c50523f0de06c137576e91bf89fe8784e409b2fbfe32d7dfc21d43025cdf2efa1d37cd9e7d52f4c124d
|
7
|
+
data.tar.gz: f1a026f1c4fe68acc04c2663acb75d7581cf82a01dbf955fab681f494321f854d1eaf5de0f54da8725fa6ebeb0c21214bfeba08a1f9dfd80f93300e1d91ed399
|
data/README.md
CHANGED
@@ -64,6 +64,24 @@ This might be good enough for a commit hook.
|
|
64
64
|
|
65
65
|
If a file doesn't have an extension that would match the usual glob, you can specify one or more filenames, bypassing the globbing mechanism. Use --lang to keep it restricted to only the language you know you want. Again, the default Progress format sends a report to STDOUT.
|
66
66
|
|
67
|
+
## Rake Support
|
68
|
+
|
69
|
+
The gem includes a Rake Task, which you can use in your rakefiles.
|
70
|
+
|
71
|
+
require 'ci-syntax-tool/rake_task'
|
72
|
+
|
73
|
+
# Gives you a 'syntax' task, just like running CLI with defaults:
|
74
|
+
# all languages, Progress format to STDOUT
|
75
|
+
CI::Syntax::Tool::RakeTask.new()
|
76
|
+
|
77
|
+
# Bells and whistles - I like this for CI
|
78
|
+
CI::Syntax::Tool::RakeTask.new('myname') do |taskdef|
|
79
|
+
taskdef.formats = [ 'Progress', 'JUnit' ]
|
80
|
+
taskdef.outputs = [ '-', 'test/reports/syntax.xml' ]
|
81
|
+
taskdef.languages = [ 'YAML', 'Ruby' ] # Default all - only specify to restrict
|
82
|
+
taskdef.options = [ '--anything', '--else']
|
83
|
+
end
|
84
|
+
|
67
85
|
## Language Syntax Plugins
|
68
86
|
|
69
87
|
So far, we support:
|
@@ -0,0 +1,74 @@
|
|
1
|
+
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/tasklib'
|
4
|
+
|
5
|
+
module CI
|
6
|
+
module Syntax
|
7
|
+
module Tool
|
8
|
+
|
9
|
+
# Provides a custom rake task.
|
10
|
+
#
|
11
|
+
# require 'ci-syntax-tool/rake_task'
|
12
|
+
# CI::Syntax::Tool::RakeTask.new
|
13
|
+
class RakeTask < Rake::TaskLib
|
14
|
+
attr_accessor :name
|
15
|
+
attr_accessor :fail_on_error
|
16
|
+
attr_accessor :verbose
|
17
|
+
attr_accessor :languages
|
18
|
+
attr_accessor :outputs
|
19
|
+
attr_accessor :formats
|
20
|
+
attr_accessor :options
|
21
|
+
|
22
|
+
def initialize(*args, &task_block)
|
23
|
+
setup_ivars(args)
|
24
|
+
|
25
|
+
desc 'Run syntax checks' unless ::Rake.application.last_comment
|
26
|
+
|
27
|
+
task(name, *args) do |_, task_args|
|
28
|
+
RakeFileUtils.send(:verbose, verbose) do
|
29
|
+
if task_block
|
30
|
+
task_block.call(*[self, task_args].slice(0, task_block.arity))
|
31
|
+
end
|
32
|
+
run_main_task(verbose)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def run_main_task(verbose)
|
38
|
+
run_cli(verbose, full_options)
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def run_cli(verbose, options)
|
44
|
+
require 'ci-syntax-tool'
|
45
|
+
|
46
|
+
cli_opts = CommandLine.new(options)
|
47
|
+
puts 'Running ci-syntax-tool...' if verbose
|
48
|
+
result = Checker.new(cli_opts).run
|
49
|
+
abort('Syntax checks failed!') if result != 0 && fail_on_error
|
50
|
+
end
|
51
|
+
|
52
|
+
def full_options
|
53
|
+
[].tap do |result|
|
54
|
+
result.concat(formats.map { |f| ['--format', f] }.flatten)
|
55
|
+
result.concat(outputs.map { |o| ['--output', o] }.flatten)
|
56
|
+
result.concat(languages.map { |l| ['--output', l] }.flatten)
|
57
|
+
result.concat(options)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def setup_ivars(args)
|
62
|
+
@name = args.shift || :syntax
|
63
|
+
@verbose = true
|
64
|
+
@fail_on_error = true
|
65
|
+
@languages = []
|
66
|
+
@formats = []
|
67
|
+
@options = []
|
68
|
+
@outputs = []
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'ci-syntax-tool/rake_task'
|
2
|
+
|
3
|
+
# All defaults - should be 'syntax'
|
4
|
+
CI::Syntax::Tool::RakeTask.new
|
5
|
+
|
6
|
+
|
7
|
+
CI::Syntax::Tool::RakeTask.new('renamed')
|
8
|
+
|
9
|
+
desc 'Alt description'
|
10
|
+
CI::Syntax::Tool::RakeTask.new('altdesc')
|
11
|
+
|
12
|
+
CI::Syntax::Tool::RakeTask.new('prog-junit') do |t|
|
13
|
+
t.formats = [ 'Progress', 'JUnit' ]
|
14
|
+
t.outputs = [ '-', 'test/tmp/rake-out-1.out' ]
|
15
|
+
end
|
16
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ci-syntax-tool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Clinton Wolfe
|
@@ -105,6 +105,7 @@ files:
|
|
105
105
|
- lib/ci-syntax-tool/language/base.rb
|
106
106
|
- lib/ci-syntax-tool/language/yaml.rb
|
107
107
|
- lib/ci-syntax-tool/language_factory.rb
|
108
|
+
- lib/ci-syntax-tool/rake_task.rb
|
108
109
|
- lib/ci-syntax-tool/result.rb
|
109
110
|
- lib/ci-syntax-tool/version.rb
|
110
111
|
- rubocop.yml
|
@@ -130,6 +131,7 @@ files:
|
|
130
131
|
- test/fixtures/files/error/missing-array-element.yaml
|
131
132
|
- test/fixtures/files/error/unquoted-jinja-template.yaml
|
132
133
|
- test/fixtures/files/error/very-high-yaml-version.yaml
|
134
|
+
- test/fixtures/rakefiles/Rakefile
|
133
135
|
- test/fixtures/require/invalid.rb
|
134
136
|
- test/fixtures/require/mock_format.rb
|
135
137
|
- test/fixtures/require/second.rb
|
@@ -188,6 +190,7 @@ test_files:
|
|
188
190
|
- test/fixtures/files/error/missing-array-element.yaml
|
189
191
|
- test/fixtures/files/error/unquoted-jinja-template.yaml
|
190
192
|
- test/fixtures/files/error/very-high-yaml-version.yaml
|
193
|
+
- test/fixtures/rakefiles/Rakefile
|
191
194
|
- test/fixtures/require/invalid.rb
|
192
195
|
- test/fixtures/require/mock_format.rb
|
193
196
|
- test/fixtures/require/second.rb
|