You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
907 B
24 lines
907 B
import os
|
|
import subprocess
|
|
from checkpackagelib.base import _Tool
|
|
|
|
|
|
class NotExecutable(_Tool):
|
|
def run(self):
|
|
if os.access(self.filename, os.X_OK):
|
|
return ["{}:0: This file does not need to be executable{}".format(self.filename, self.hint())]
|
|
|
|
|
|
class Shellcheck(_Tool):
|
|
def run(self):
|
|
cmd = ['shellcheck', self.filename]
|
|
try:
|
|
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
stdout = p.communicate()[0]
|
|
processed_output = [str(line.decode().rstrip()) for line in stdout.splitlines() if line]
|
|
if p.returncode == 0:
|
|
return
|
|
return ["{}:0: run 'shellcheck' and fix the warnings".format(self.filename),
|
|
'\n'.join(processed_output)]
|
|
except FileNotFoundError:
|
|
return ["{}:0: failed to call 'shellcheck'".format(self.filename)]
|
|
|