#!/usr/bin/env python3
# SPDX-License-Identifier: Apache-2.0
# Copyright (c) 2020 Intel Corporation
# Check if full sanitycheck is needed.

import os
import sh
import argparse
import fnmatch


if "ZEPHYR_BASE" not in os.environ:
    exit("$ZEPHYR_BASE environment variable undefined.")

repository_path = os.environ['ZEPHYR_BASE']
sh_special_args = {
    '_tty_out': False,
    '_cwd': repository_path
}

def parse_args():
    parser = argparse.ArgumentParser(
                description="Check if change requires full sanitycheck")
    parser.add_argument('-c', '--commits', default=None,
            help="Commit range in the form: a..b")
    return parser.parse_args()

def main():
    args = parse_args()
    if not args.commits:
        exit(1)

    # pylint does not like the 'sh' library
    # pylint: disable=too-many-function-args,unexpected-keyword-arg
    commit = sh.git("diff", "--name-only", args.commits, **sh_special_args)
    files = commit.split("\n")

    with open("scripts/ci/sanitycheck_ignore.txt", "r") as sc_ignore:
        ignores = sc_ignore.read().splitlines()
        ignores = filter(lambda x: not x.startswith("#"), ignores)

    found = []
    files = list(filter(lambda x: x, files))

    for pattern in ignores:
        if pattern:
            found.extend(fnmatch.filter(files, pattern))

    if sorted(files) != sorted(found):
        print("full")


if __name__ == "__main__":
    main()

@@ -945,16 +945,39 @@
 files = 
+set()%0A    files.update(
 commit.s
@@ -986,16 +986,17 @@
 it(%22%5Cn%22)
+)
 %0A%0A    wi
@@ -1191,10 +1191,13 @@
 d = 
-%5B%5D
+set()
 %0A   
@@ -1309,14 +1309,14 @@
 und.
-extend
+update
 (fnm

fix whatchanged script matching