3ae52624ff
Update the files which contain no license information with the 'Apache-2.0' SPDX license identifier. Many source files in the tree are missing licensing information, which makes it harder for compliance tools to determine the correct license. By default all files without license information are under the default license of Zephyr, which is Apache version 2. Signed-off-by: Anas Nashif <anas.nashif@intel.com>
81 lines
2.8 KiB
Python
81 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
import os
|
|
import argparse
|
|
|
|
def touch(trigger):
|
|
# If no trigger file is provided then do a return.
|
|
if trigger is None:
|
|
return
|
|
|
|
if os.path.exists(trigger):
|
|
os.utime(trigger, None)
|
|
else:
|
|
with open(trigger, 'w') as fp:
|
|
fp.write("")
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
description='This script will walk the specified directory and write the file specified \
|
|
with the list of all sub-directories found. If to the output file already \
|
|
exists, the file will only be updated in case sub-directories has been added \
|
|
or removed since previous invocation.')
|
|
|
|
parser.add_argument('-d', '--directory', required=True,
|
|
help='Directory to walk for sub-directory discovery')
|
|
parser.add_argument('-c', '--create-links', required=False,
|
|
help='Create links for each directory found in directory given')
|
|
parser.add_argument('-o', '--out-file', required=True,
|
|
help='File to write containing a list of all directories found')
|
|
parser.add_argument('-t', '--trigger-file', required=False,
|
|
help='Trigger file to be be touched to re-run CMake')
|
|
|
|
args = parser.parse_args()
|
|
|
|
dirlist = []
|
|
if args.create_links is not None:
|
|
if not os.path.exists(args.create_links):
|
|
os.makedirs(args.create_links)
|
|
directory = args.directory
|
|
symlink = args.create_links + os.path.sep + directory.replace(os.path.sep, '_')
|
|
if not os.path.exists(symlink):
|
|
os.symlink(directory, symlink)
|
|
dirlist.extend(symlink)
|
|
else:
|
|
dirlist.extend(args.directory)
|
|
dirlist.extend(os.linesep)
|
|
for root, dirs, _ in os.walk(args.directory, topdown=True):
|
|
dirs.sort()
|
|
for subdir in dirs:
|
|
if args.create_links is not None:
|
|
directory = os.path.join(root, subdir)
|
|
symlink = args.create_links + os.path.sep + directory.replace(os.path.sep, '_')
|
|
if not os.path.exists(symlink):
|
|
os.symlink(directory, symlink)
|
|
dirlist.extend(symlink)
|
|
else:
|
|
dirlist.extend(os.path.join(root, subdir))
|
|
dirlist.extend(os.linesep)
|
|
|
|
new = ''.join(dirlist)
|
|
existing = ''
|
|
|
|
if os.path.exists(args.out_file):
|
|
with open(args.out_file, 'r') as fp:
|
|
existing = fp.read()
|
|
|
|
if new != existing:
|
|
with open(args.out_file, 'w') as fp:
|
|
fp.write(new)
|
|
else:
|
|
with open(args.out_file, 'w') as fp:
|
|
fp.write(new)
|
|
|
|
# Always touch trigger file to ensure json files are updated
|
|
touch(args.trigger_file)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|