File: jdg-tap-shellcheck

package info (click to toggle)
jenkins-debian-glue 0.23.6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 416 kB
  • sloc: sh: 2,636; ruby: 543; makefile: 30; python: 24
file content (37 lines) | stat: -rwxr-xr-x 806 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env ruby

if ARGV[0].nil?
  $stderr.puts "Usage: #{File.basename $0} <file>"
  exit 1
end

if not system "which shellcheck >/dev/null 2>&1"
  $stderr.puts "Error: program shellcheck does not exist."
  exit 1
end

file = ARGV[0]

if not File.exist? file
  $stderr.puts "Error: file #{file} could not be read."
  exit 1
end

# Make sure we're looking at sh code.
mimetype = `file -Pbytes=32 -b -i #{file}`.gsub(/\n/,"")
if not /.*x-shellscript/i.match(mimetype)
  $stderr.puts "File #{file} doesn't look like sh code [#{mimetype}]. Ignoring."
  exit 0
end

output = %x{shellcheck --format=gcc #{file} 2>&1}

num_lines = output.lines.count
counter = 1

# output result in TAP format
puts "1..#{num_lines}"
output.each_line do |critic|
  puts "not ok #{counter}        #{critic}"
  counter += 1
end