Skip to content

Commit cb8c409

Browse files
committed
Misc: Add --force option
1 parent c9680b9 commit cb8c409

File tree

1 file changed

+24
-21
lines changed

1 file changed

+24
-21
lines changed

misc/scripts/accept-expected-changes-from-ci.py

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
Code written to hack things together until they work, so don't expect much :D
1818
"""
1919

20-
20+
import argparse
2121
import sys
2222
import re
2323
import tempfile
@@ -221,7 +221,7 @@ def get_log_content(status: GithubStatus) -> str:
221221
return content
222222

223223

224-
def main(pr_number: Optional[int], sha_override: Optional[str] = None):
224+
def main(pr_number: Optional[int], sha_override: Optional[str] = None, force=False):
225225
if not pr_number and not sha_override:
226226
raise Exception("Must specify either a PR number or a SHA")
227227

@@ -237,7 +237,7 @@ def main(pr_number: Optional[int], sha_override: Optional[str] = None):
237237
["git", "rev-parse", "HEAD"]
238238
).decode("utf-8").strip()
239239

240-
if local_sha != github_sha:
240+
if local_sha != github_sha and not force:
241241
LOGGER.error(f"GitHub SHA ({github_sha}) different from your local SHA ({local_sha}), sync your changes first!")
242242
sys.exit(1)
243243
sha = github_sha
@@ -421,23 +421,6 @@ def ok_job_name(job_name: str) -> bool:
421421
print("Expected output in semmle-code changed!")
422422

423423

424-
def call_main():
425-
pr_number = None
426-
override_sha = None
427-
if len(sys.argv) < 2:
428-
pr_number_response = subprocess.check_output([
429-
"gh", "pr", "view", "--json", "number"
430-
]).decode("utf-8")
431-
432-
pr_number = json.loads(pr_number_response)["number"]
433-
else:
434-
if len(sys.argv[1]) > 10:
435-
override_sha = sys.argv[1]
436-
else:
437-
pr_number = int(sys.argv[1])
438-
main(pr_number, override_sha)
439-
440-
441424
if __name__ == "__main__":
442425

443426
level = logging.INFO
@@ -448,6 +431,10 @@ def call_main():
448431
except ImportError:
449432
logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
450433

434+
# parse command line arguments
435+
parser = argparse.ArgumentParser()
436+
parser.add_argument("--force", action="store_true", help="Apply patches even if the local SHA is different from the GitHub PR SHA")
437+
parser.add_argument("posarg", nargs="?", default=None)
451438

452439
if DEBUG_LOG_FILE:
453440
patches = make_patches_from_log_file(open(DEBUG_LOG_FILE, "r").readlines())
@@ -459,4 +446,20 @@ def call_main():
459446
sys.exit(1)
460447

461448
os.chdir(CODEQL_REPO_DIR)
462-
call_main()
449+
450+
pr_number = None
451+
override_sha = None
452+
args = parser.parse_args()
453+
454+
if args.posarg is None:
455+
pr_number_response = subprocess.check_output([
456+
"gh", "pr", "view", "--json", "number"
457+
]).decode("utf-8")
458+
pr_number = json.loads(pr_number_response)["number"]
459+
else:
460+
if len(args.posarg) > 10:
461+
override_sha = args.posarg
462+
else:
463+
pr_number = int(args.posarg)
464+
465+
main(pr_number, override_sha, force=args.force)

0 commit comments

Comments
 (0)