diff --git a/flake.nix b/flake.nix index 9b9e1c4..5e0dc12 100644 --- a/flake.nix +++ b/flake.nix @@ -114,6 +114,7 @@ clerie-sops-config clerie-sops-edit chromium-incognito + git-checkout-github-pr iot-data nix-remove-result-links nixfiles-auto-install diff --git a/pkgs/git-checkout-github-pr/default.nix b/pkgs/git-checkout-github-pr/default.nix new file mode 100644 index 0000000..9be9a40 --- /dev/null +++ b/pkgs/git-checkout-github-pr/default.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +pkgs.writeShellApplication { + name = "git-checkout-github-pr"; + text = builtins.readFile ./git-checkout-github-pr.sh; + runtimeInputs = with pkgs; [ + git + ]; +} diff --git a/pkgs/git-checkout-github-pr/git-checkout-github-pr.sh b/pkgs/git-checkout-github-pr/git-checkout-github-pr.sh new file mode 100755 index 0000000..b182ab7 --- /dev/null +++ b/pkgs/git-checkout-github-pr/git-checkout-github-pr.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +set -euo pipefail + +ID="" +REMOTE="origin" +LOCAL_BRANCH="" + +while [[ $# -gt 0 ]]; do + case $1 in + --remote) + REMOTE="$2" + shift + shift + ;; + --local-branch) + LOCAL_BRANCH="$2" + shift + shift + ;; + *) + if [[ -z "${ID}" ]]; then + ID="$1" + shift + else + echo "Unknown option $1" + exit 1 + fi + ;; + esac +done + +if [[ -z "${ID}" ]]; then + echo "Specify GitHub PR number" + exit 1 +fi + +if [[ -z "${LOCAL_BRANCH}" ]]; then + LOCAL_BRANCH="pr/${ID}" +fi + +git fetch "${REMOTE}" "pull/${ID}/head:${LOCAL_BRANCH}" + +git switch "${LOCAL_BRANCH}" diff --git a/pkgs/overlay.nix b/pkgs/overlay.nix index 97c7fdf..1ccd9c7 100644 --- a/pkgs/overlay.nix +++ b/pkgs/overlay.nix @@ -7,6 +7,7 @@ final: prev: { clerie-sops-edit = final.callPackage ./clerie-sops/clerie-sops-edit.nix {}; clerie-update-nixfiles = final.callPackage ./clerie-update-nixfiles/clerie-update-nixfiles.nix {}; chromium-incognito = final.callPackage ./chromium-incognito {}; + git-checkout-github-pr = final.callPackage ./git-checkout-github-pr {}; iot-data = final.python3.pkgs.callPackage ./iot-data {}; nix-remove-result-links = final.callPackage ./nix-remove-result-links {}; nixfiles-auto-install = final.callPackage ./nixfiles/nixfiles-auto-install.nix {};