12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/usr/bin/env python3
- # -*- coding: UTF-8 -*-
- # Copyright (c) 2019 The ungoogled-chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- """Run sanity checking algorithms over downloads.ini files
- It checks the following:
- * downloads.ini has the correct format (i.e. conforms to its schema)
- Exit codes:
- * 0 if no problems detected
- * 1 if warnings or errors occur
- """
- import argparse
- import sys
- from pathlib import Path
- sys.path.insert(0, str(Path(__file__).resolve().parent.parent / 'utils'))
- from downloads import DownloadInfo, schema
- sys.path.pop(0)
- def check_downloads_ini(downloads_ini_iter):
- """
- Combines and checks if the the downloads.ini files provided are valid.
- downloads_ini_iter must be an iterable of strings to downloads.ini files.
- Returns True if errors occured, False otherwise.
- """
- try:
- DownloadInfo(downloads_ini_iter)
- except schema.SchemaError:
- return True
- return False
- def main():
- """CLI entrypoint"""
- root_dir = Path(__file__).resolve().parent.parent
- default_downloads_ini = [str(root_dir / 'downloads.ini')]
- parser = argparse.ArgumentParser(description=__doc__)
- parser.add_argument(
- '-d',
- '--downloads-ini',
- type=Path,
- nargs='*',
- default=default_downloads_ini,
- help='List of downloads.ini files to check. Default: %(default)s')
- args = parser.parse_args()
- if check_downloads_ini(args.downloads_ini):
- exit(1)
- exit(0)
- if __name__ == '__main__':
- main()
|