2018-12-19 11:19:07 +01:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
2019-03-28 16:54:45 +01:00
|
|
|
import argparse
|
|
|
|
import json
|
2018-12-19 11:19:07 +01:00
|
|
|
import logging
|
|
|
|
import os
|
|
|
|
import sys
|
2019-03-28 01:20:43 +01:00
|
|
|
|
2019-03-28 16:54:45 +01:00
|
|
|
from ansiblelater import __version__, settings, logger
|
|
|
|
from ansiblelater.utils import get_property
|
2019-03-28 01:20:43 +01:00
|
|
|
|
2019-03-28 16:54:45 +01:00
|
|
|
# from .settings import Settings
|
2018-12-19 11:19:07 +01:00
|
|
|
|
|
|
|
|
|
|
|
def main():
|
2019-03-28 16:54:45 +01:00
|
|
|
parser = argparse.ArgumentParser(
|
|
|
|
description="Validate ansible files against best pratice guideline")
|
|
|
|
parser.add_argument('-c', dest='config_file',
|
|
|
|
help="Location of configuration file: [%s]" % settings.config_file)
|
|
|
|
parser.add_argument('-d', dest='rules.standards',
|
|
|
|
help="Location of standards rules")
|
|
|
|
parser.add_argument('-q', dest='logging.level', action="store_const",
|
|
|
|
const=logging.ERROR, help="Only output errors")
|
|
|
|
parser.add_argument('-s', dest='rules.filter', action='append',
|
|
|
|
help="limit standards to specific names")
|
|
|
|
parser.add_argument('-v', '--verbose', dest='logging.level', action="count",
|
2019-03-28 01:20:43 +01:00
|
|
|
help="Show more verbose output")
|
2019-03-28 16:54:45 +01:00
|
|
|
parser.add_argument('--version', action='version', version='%(prog)s {}'.format(__version__))
|
|
|
|
|
|
|
|
args = parser.parse_args().__dict__
|
2018-12-19 11:19:07 +01:00
|
|
|
|
2019-03-28 16:54:45 +01:00
|
|
|
# Override correct log level from argparse
|
|
|
|
levels = [logging.WARNING, logging.INFO, logging.DEBUG]
|
|
|
|
if args.get("logging.level"):
|
|
|
|
args["logging.level"] = levels[min(len(levels) - 1, args["logging.level"] - 1)]
|
2018-12-19 11:19:07 +01:00
|
|
|
|
2019-03-28 16:54:45 +01:00
|
|
|
settings.set_args(args)
|
2019-03-28 01:20:43 +01:00
|
|
|
|
2019-03-28 16:54:45 +01:00
|
|
|
# print(json.dumps(settings.config, indent=4, sort_keys=True))
|
|
|
|
# print(settings.config["logging"]["level"])
|
2018-12-19 11:19:07 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
2019-03-27 17:00:38 +01:00
|
|
|
# if len(args) == 0:
|
|
|
|
# candidates = []
|
|
|
|
# for root, dirs, files in os.walk("."):
|
|
|
|
# for filename in files:
|
|
|
|
# candidates.append(os.path.join(root, filename))
|
|
|
|
# else:
|
|
|
|
# candidates = args
|
|
|
|
|
|
|
|
# errors = 0
|
|
|
|
# for filename in candidates:
|
|
|
|
# if ":" in filename:
|
|
|
|
# (filename, lines) = filename.split(":")
|
|
|
|
# else:
|
|
|
|
# lines = None
|
|
|
|
# candidate = classify(filename)
|
|
|
|
# if candidate:
|
|
|
|
# if candidate.binary:
|
|
|
|
# info("Not reviewing binary file %s" % filename, settings)
|
|
|
|
# continue
|
|
|
|
# if candidate.vault:
|
|
|
|
# info("Not reviewing vault file %s" % filename, settings)
|
|
|
|
# continue
|
|
|
|
# if lines:
|
|
|
|
# info("Reviewing %s lines %s" % (candidate, lines), settings)
|
|
|
|
# else:
|
|
|
|
# info("Reviewing all of %s" % candidate, settings)
|
|
|
|
# errors = errors + candidate.review(settings, lines)
|
|
|
|
# else:
|
|
|
|
# info("Couldn't classify file %s" % filename, settings)
|
|
|
|
# return errors
|
2018-12-19 11:19:07 +01:00
|
|
|
|
|
|
|
|
2019-01-08 16:22:19 +01:00
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|