| #!/usr/bin/env python3 |
| # -*- coding: utf-8 -*-" |
| # |
| # Copyright 2020 The ChromiumOS Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Main interface for engineers to abandon/restore CL's viewed on Data Studio. |
| |
| Before running this script, make sure you have been added to chromeos-missing-patches GCP project. |
| |
| Prerequisites to execute this script locally (PERFORM ONCE): |
| >> ./scripts/local/local_setup.sh |
| |
| All abandon/restore findmissing commands must be run in this directory's |
| virtual env (source env/bin/activate) before running any commands |
| """ |
| |
| import argparse |
| import sys |
| |
| import main |
| |
| |
| def findmissing(): |
| """Parses command line args and calls correct function for findmissing. |
| |
| To execute abandon/restore commands i.e: |
| ./findmissing abandon stable_fixes <kernel_sha> <fixedby_upstream_sha> reason |
| """ |
| abandon_restore_function_map = { |
| "abandon": main.abandon_fix_cl, |
| "restore": main.restore_fix_cl, |
| "reopen": main.reopen_fix_cl, |
| "status": main.status_fix_cl, |
| } |
| parser = argparse.ArgumentParser( |
| description="Local functions to update database" |
| ) |
| parser.add_argument( |
| "command", |
| type=str, |
| choices=tuple(abandon_restore_function_map.keys()), |
| help="Function to either abandon/restore/reopen changes.", |
| ) |
| parser.add_argument( |
| "-t", |
| "--table", |
| type=str, |
| choices=("stable", "chrome"), |
| help="Table that contains primary key you want to update.", |
| ) |
| parser.add_argument( |
| "-f", |
| "--force", |
| action="store_true", |
| help="Force action if only one SHA provided and more than one database entry is affected.", |
| ) |
| parser.add_argument( |
| "-r", |
| "--reason", |
| required="status" not in sys.argv, |
| type=str, |
| help="Reason for performing action.", |
| ) |
| parser.add_argument( |
| "sha", |
| type=str, |
| nargs="+", |
| help="To-be-fixed and/or fixing SHA for row you want to update.", |
| ) |
| args = parser.parse_args() |
| |
| if args.command != "status" and len(args.sha) > 2: |
| parser.error("Must specify one or two SHAs.") |
| |
| fixes_table = args.table + "_fixes" if args.table else None |
| abandon_restore_function_map[args.command]( |
| fixes_table, args.sha, args.reason, args.force |
| ) |
| |
| |
| if __name__ == "__main__": |
| findmissing() |