diff --git a/pkgs/merge-after-ci/default.nix b/pkgs/merge-after-ci/default.nix index efe53267..28195dd8 100644 --- a/pkgs/merge-after-ci/default.nix +++ b/pkgs/merge-after-ci/default.nix @@ -1,26 +1,33 @@ -{ writeShellApplication +{ bash +, callPackage , coreutils -, bash , git -, tea +, lib +, nix , openssh +, tea , tea-create-pr , ... }: -writeShellApplication { - name = "merge-after-ci"; - runtimeInputs = [ - bash - coreutils - git - tea - openssh - tea-create-pr +let + writers = callPackage ../builders/script-writers.nix { }; +in +writers.writePython3Bin "merge-after-ci" +{ + makeWrapperArgs = [ + "--prefix" + "PATH" + ":" + (lib.makeBinPath [ + bash + coreutils + git + nix + openssh + tea + tea-create-pr + ]) ]; - text = '' - remoteName="''${1:-origin}" - targetBranch="''${2:-main}" - shift && shift - tea-create-pr "$remoteName" "$targetBranch" --assignees clan-bot "$@" - ''; } + ./merge-after-ci.py + diff --git a/pkgs/merge-after-ci/merge-after-ci.py b/pkgs/merge-after-ci/merge-after-ci.py new file mode 100644 index 00000000..759cca5a --- /dev/null +++ b/pkgs/merge-after-ci/merge-after-ci.py @@ -0,0 +1,24 @@ +import argparse +import subprocess + +parser = argparse.ArgumentParser() +parser.add_argument("--reviewers", nargs="*") +parser.add_argument("--no-review", action="store_true") +parser.add_argument("args", nargs="*") +args = parser.parse_args() + +# complain if neither --reviewers nor --no-review is given +if not args.reviewers and not args.no_review: + parser.error("either --reviewers or --no-review must be given") + +subprocess.run( + [ + "tea-create-pr", + "origin", + "main", + "--assignees", + "clan-bot", + *([*args.reviewers] if args.reviewers else []), + *args.args, + ] +)