added support scripts

Change-Id: I875972813927dd4ace2c7f710b73085ba16ba45c
This commit is contained in:
Lars Kellogg-Stedman 2015-03-13 00:33:50 -04:00
parent f13a0dce47
commit 2017ef5a76
3 changed files with 75 additions and 0 deletions

28
tools/pre-commit-hook Executable file
View File

@ -0,0 +1,28 @@
#!/bin/sh
TOPLEVEL=$(git rev-parse --show-toplevel)
RES=0
cd $TOPLEVEL
if [ "$1" = "--install" ]; then
ln -sf ../../tools/pre-commit-hook .git/hooks/pre-commit
exit
fi
tmpdir=$(mktemp -d precommit.XXXXXX) || exit 1
trap "rm -rf $TOPLEVEL/$tmpdir" 0
git diff --cached --name-only --diff-filter=ACMR |
xargs git checkout-index --prefix=$tmpdir/ --
cd $tmpdir
echo "=== yaml checks ==="
(
find . -name '*.yaml' -print0
[ -d fragments ] &&
find fragments -type f | xargs grep -l '^#cloud-config'
) | xargs -0 python ${TOPLEVEL}/tools/validate-yaml.py -v || exit 1

9
tools/validate-all-yaml.sh Executable file
View File

@ -0,0 +1,9 @@
#!/bin/sh
TOPLEVEL=$(git rev-parse --show-toplevel)
cd $TOPLEVEL
git ls-files |
grep '\.yaml' |
xargs python ${TOPLEVEL}/tools/validate-yaml.py -v || exit 1

38
tools/validate-yaml.py Executable file
View File

@ -0,0 +1,38 @@
#!/usr/bin/python
import sys
import argparse
import yaml
import logging
def parse_args():
p = argparse.ArgumentParser()
p.add_argument('--verbose', '-v',
action='store_const',
const='INFO',
dest='loglevel')
p.add_argument('input', nargs='*')
p.set_defaults(loglevel='WARN')
return p.parse_args()
def main():
args = parse_args()
logging.basicConfig(level=args.loglevel)
res = 0
for filename in args.input:
with open(filename) as fd:
try:
yaml.load(fd)
logging.info('%s: passed', filename)
except yaml.error.YAMLError as error:
res = 1
logging.error('%s: failed: %s',
filename, error)
return res
if __name__ == '__main__':
sys.exit(main())