diff options
Diffstat (limited to '')
| -rwxr-xr-x | pkgs/by-name/gi/git-cgit/git-cgit.sh | 131 | ||||
| -rw-r--r-- | pkgs/by-name/gi/git-cgit/package.nix (renamed from pkgs/by-name/i3/i3status-rust-patched/package.nix) | 26 |
2 files changed, 147 insertions, 10 deletions
diff --git a/pkgs/by-name/gi/git-cgit/git-cgit.sh b/pkgs/by-name/gi/git-cgit/git-cgit.sh new file mode 100755 index 00000000..d24fda15 --- /dev/null +++ b/pkgs/by-name/gi/git-cgit/git-cgit.sh @@ -0,0 +1,131 @@ +#!/usr/bin/env sh + +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. + +NAME="git-cgit" + +not_empty() { + arg="$1" + name="$2" + + if [ "$arg" = "" ]; then + echo 1>&2 "flag '$name' is empty" + exit 2 + fi +} + +help() { + cat <<EOF +Create a cgit repo to push the current repo to. + +USAGE: + $NAME [OPTIONS] --git URL.. + +OPTIONS: + --help | -h + Display this help and exit. + --git URL + git upstream URL. + Should be in the form: + 'ssh://git@<url>/path/to/repo' + --desc DESC + Optional description (will be read from './.git/description' otherwise). + --defbranch + Optional default branch + --cgit-owner + Optional cgit owner +EOF +} + +git_url="" +ssh_url="" +url_path="" +desc="$(cat "$(git rev-parse --show-toplevel)/.git/description")" + +cgit_owner="$(id --name -u)" +defbranch="$(git branch --show-current)" + +while [ "$#" -ne 0 ]; do + case "$1" in + "--help" | "-h") + help + exit 0 + ;; + "--git") + shift 1 + git_url="$1" + ;; + "--desc") + shift 1 + desc="$1" + ;; + "--defbranch") + shift 1 + defbranch="$1" + ;; + "--cgit-owner") + shift 1 + cgit_owner="$1" + ;; + esac + shift 1 +done + +# In the form git@<url> +ssh_url="${git_url#ssh://}" +while [ "$(dirname "$ssh_url")" != "." ]; do + ssh_url="$(dirname "$ssh_url")" +done +url_path="${git_url#ssh://"$ssh_url"}" +url_path="${url_path#/}" + +not_empty "$git_url" "--git" +not_empty "$ssh_url" "--git <indirectly>" +not_empty "$url_path" "--git <indirectly>" + +not_empty "$desc" "--desc" +not_empty "$defbranch" "--defbranch" +not_empty "$cgit_owner" "--cgit-owner" + +cat <<EOF +Initializing repo with following values: + --git -> '$git_url' + <ssh_url> -> '$ssh_url' + <url_path> -> '$url_path' + + --desc -> '$desc' + --defbranch -> '$defbranch' + --cgit-owner -> '$cgit_owner' + +EOF + +printf "Continue [y/N]? " +read -r continue +if [ "$continue" != "y" ]; then + echo 1>&2 "Not continuing.." + exit 1 +fi + +set -x + +git remote remove origin +git remote add origin "$git_url" + +git push --set-upstream origin "$defbranch" + +ssh "$ssh_url" -- perms "$url_path" + READERS @all +ssh "$ssh_url" -- desc "$url_path" "$desc" + +ssh "$ssh_url" -- config "$url_path" --add cgit.defbranch "$defbranch" +ssh "$ssh_url" -- config "$url_path" --add cgit.owner "$cgit_owner" + +ssh "$ssh_url" -- info +# vim: ft=sh diff --git a/pkgs/by-name/i3/i3status-rust-patched/package.nix b/pkgs/by-name/gi/git-cgit/package.nix index a103e275..b64c5e84 100644 --- a/pkgs/by-name/i3/i3status-rust-patched/package.nix +++ b/pkgs/by-name/gi/git-cgit/package.nix @@ -8,15 +8,21 @@ # You should have received a copy of the License along with this program. # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. { - i3status-rust, + writeShellApplication, + # Dependencies + coreutils, + git, + openssh, }: -i3status-rust.overrideAttrs (final: prev: { - pname = "${prev.pname}-patched"; +writeShellApplication { + name = "git-cgit"; + text = builtins.readFile ./git-cgit.sh; - patches = - (prev.patches or []) - ++ [ - # Btrfs support for disk_space block. - ./patches/0001-disk_space-Support-btrfs-backend.patch - ]; -}) + inheritPath = false; + + runtimeInputs = [ + coreutils + git + openssh + ]; +} |
