ljdsalkjdaslkj
This commit is contained in:
162
justfile
162
justfile
@@ -127,11 +127,15 @@ __list_packages_attrpath_filtered +attrpaths:
|
||||
# printf >&1 "'%s'\n" "${attrpaths[@]}"
|
||||
just list-packages | grep "$(printf "%s\n" "${attrpaths[@]}")"
|
||||
|
||||
@list-maintainer-packages $github_handle=`just _a_maintainer`: _packages_json
|
||||
# TODO: maybe add github handles to packages tsv?
|
||||
[[ -n "$github_handle" ]] || ! echo >&2 "ERROR: No github handle"
|
||||
jq <packages.json --arg github_handle "$github_handle" 'to_entries[] | select((.value.meta.maintainers // [])[]|select(.github == $github_handle)) | .key' -r \
|
||||
| just _list_packages_attrpath_filtered
|
||||
list-packages-by-maintainer *github_handles: _packages_json
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
declare -a maintainers=("$@")
|
||||
[[ "${#maintainers[@]}" -gt 0 ]] || readarray -td $'\n' maintainers < <( just _some_maintainers )
|
||||
[[ "${#maintainers[@]}" -gt 0 ]]
|
||||
#grep </tmp/nixpkgs-maintainers.tsv -F "$(printf "%s\t\n" "${maintainers[@]}")"
|
||||
maintainers_json=$(printf "%s\n" "${maintainers[@]}" | jq -sR 'split("\n")|map(select(.==""|not))' -c)
|
||||
jq <packages.json --argjson maintainers "$maintainers_json" 'to_entries[] | select([.value.meta.maintainers // [] | .[] | .github as $maintainer | $maintainers[] | . == $maintainer] | any) | .key' -r \
|
||||
| tr '0123456789' '9876543210' | sort -u | tr '0123456789' '9876543210'
|
||||
|
||||
[no-cd]
|
||||
@list-ripgrepped-packages +$ripgrep_args:
|
||||
@@ -433,13 +437,15 @@ _build_package_sources $system +packages:
|
||||
|
||||
[no-cd]
|
||||
@commit-staged *$message:
|
||||
test -n "$(git diff HEAD --name-only --staged)" || ! echo >&2 "No files are staged!"
|
||||
test -n "$($GIT diff HEAD --name-only --staged)" || ! echo >&2 "No files are staged!" || false
|
||||
$GIT diff HEAD --name-only --staged | sort -u | xe nixfmt --check
|
||||
$GIT -c commit.template=<(git diff HEAD --name-only --staged | just _list_packages_fname_filtered | cut -f1 | just _attrpaths_2_aliases | xargs {{XARGS_NL}} printf "%s: ${*//%/%%}\n") commit && git show
|
||||
|
||||
[no-cd]
|
||||
commit-dirty-packages +$message=`gum input --placeholder="commit message, (attrpath: this message)"`:
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
[[ -n "$message" ]]
|
||||
$GIT ls-files --modified | sort -u | xe nixfmt --check || ! echo >&2 "Consider running 'just format-files-dirty'" || false
|
||||
just list-dirty-packages |
|
||||
while read attrpath position row; do
|
||||
[[ -f "$position" ]] || continue
|
||||
@@ -815,7 +821,7 @@ setup:
|
||||
fi
|
||||
)
|
||||
declare -a branches=()
|
||||
readarray -td $'\n' branches < <( just _upstream_release_branches "" "" )
|
||||
readarray -td $'\n' branches < <( just _list_upstream_release_branches "" "" )
|
||||
# TODO: clean old release branches
|
||||
for branch in "${branches[@]}"; do
|
||||
add_upstream "$branch"
|
||||
@@ -833,7 +839,7 @@ _mk_clean_list:
|
||||
(
|
||||
cd master
|
||||
# TODO: assert "upstream" present?
|
||||
just _upstream_release_branches "" | xargs {{XARGS_NL}} $GIT fetch upstream
|
||||
just _list_upstream_release_branches "" | xargs {{XARGS_NL}} $GIT fetch upstream
|
||||
)
|
||||
porcelain2jsonl() {
|
||||
uniq | (
|
||||
@@ -852,13 +858,13 @@ _mk_clean_list:
|
||||
#cat <<<"$worktrees"
|
||||
(
|
||||
cd master
|
||||
just _upstream_release_branches | xe -j0 $GIT branch --merged ||:
|
||||
just _list_upstream_release_branches | xe -j0 $GIT branch --merged ||:
|
||||
) | sort -u |
|
||||
while IFS= read line; do
|
||||
branch="$(cut <<<"$line" -c3-)"
|
||||
if [[ "$branch" = "master" ]] \
|
||||
|| grep <<<"$branch" "$(just _upstream_release_branches '^' '$')" --quiet \
|
||||
|| grep <<<"$branch" "$(just _upstream_release_branches '^upstream-' '$')" --quiet; then
|
||||
|| grep <<<"$branch" "$(just _list_upstream_release_branches '^' '$')" --quiet \
|
||||
|| grep <<<"$branch" "$(just _list_upstream_release_branches '^upstream-' '$')" --quiet; then
|
||||
continue
|
||||
fi
|
||||
#jq <<<"$worktrees" '.branch'
|
||||
@@ -895,11 +901,22 @@ _mk_clean_list:
|
||||
|
||||
# === get/is/test ===
|
||||
|
||||
#get-maintainers-for-packages *attrpaths: _maintainers_tsv
|
||||
get-maintainers-for-packages *attrpaths: _packages_json
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
declare -a attrpaths=("$@")
|
||||
[[ "${#attrpaths[@]}" -gt 0 ]] || readarray -td $'\n' attrpaths < <( just _some_packages )
|
||||
[[ "${#attrpaths[@]}" -gt 0 ]]
|
||||
#grep </tmp/nixpkgs-maintainers.tsv -F "$(printf "%s\t\n" "${attrpaths[@]}")"
|
||||
attrpath_json=$(printf "%s\n" "${attrpaths[@]}" | jq -sR 'split("\n")|map(select(.==""|not))' -c)
|
||||
jq <packages.json --argjson attrs "$attrpath_json" '. as $pkgs | $attrs[] | $pkgs[.].meta.maintainers // [] | .[] | .github' -r
|
||||
|
||||
|
||||
get-versions $attrpath=`just _a_package` *paths: setup
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
declare -a paths=("${@:2}")
|
||||
if [[ "${#paths[@]}" -eq 0 ]]; then
|
||||
readarray -td $'\n' paths < <( just _upstream_release_branches "upstream/" "" )
|
||||
readarray -td $'\n' paths < <( just _list_upstream_release_branches "upstream/" "" )
|
||||
paths=(master "${paths[@]}")
|
||||
fi
|
||||
just _get_version "$attrpath" "${paths[@]}" | column --table --separator ":" --output-separator " : " | bat -l conf --style=plain --paging=never
|
||||
@@ -924,7 +941,7 @@ test-merge $rev=`cd "$invokedir"; just _a_commit` *branches:
|
||||
declare -a branches=("${@:2}")
|
||||
[[ "${#branches[@]}" -gt 0 ]] || {
|
||||
just setup # update
|
||||
# readarray -td $'\n' branches < <( just _upstream_release_branches "upstream/" "" )
|
||||
# readarray -td $'\n' branches < <( just _list_upstream_release_branches "upstream/" "" )
|
||||
readarray -td $'\n' branches < <( prefix=upstream/ just _some_upstream_release_branches "Select targets" )
|
||||
}
|
||||
[[ "${#branches[@]}" -gt 0 ]] || ! echo >&2 "ERROR: no target branches chosen" || false
|
||||
@@ -962,9 +979,9 @@ open-package-urls $package=`just _a_package`:
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
fpkg="$(jq -rn --arg x "$package" '$x | @uri')"
|
||||
bpkg="$(jq -rn --arg x "$(rev <<<"$package" | cut -d. -f1 | rev)" '$x | @uri')"
|
||||
# homepage="$(nix eval {{NIX_EVAL_OPTS}} --file master/default.nix "$package".meta.homepage --raw ||:)"
|
||||
srcpage="$(nix eval {{NIX_EVAL_OPTS}} --file master/default.nix "$package".src.meta.homepage --raw ||:)"
|
||||
position="$({ nix eval {{NIX_EVAL_OPTS}} --file master/default.nix "$package".meta.position --raw ||: ; } | rev | cut -d: -f2- | rev | sd -F "$PWD/master/" "")"
|
||||
# homepage="$(nix eval {{NIX_EVAL_OPTS}} --file upstream/master/default.nix "$package".meta.homepage --raw ||:)"
|
||||
srcpage="$(nix eval {{NIX_EVAL_OPTS}} --file upstream/master/default.nix "$package".src.meta.homepage --raw ||:)"
|
||||
position="$({ nix eval {{NIX_EVAL_OPTS}} --file upstream/master/default.nix "$package".meta.position --raw ||: ; } | rev | cut -d: -f2- | rev | sd -F "$PWD/master/" "")"
|
||||
declare -a urls=()
|
||||
urls+=("https://hydra.nixos.org/job/nixos/trunk-combined/nixpkgs.${fpkg}.x86_64-linux")
|
||||
urls+=("https://github.com/NixOS/nixpkgs/pulls?q=is%3Apr+in%3Atitle+${bpkg}")
|
||||
@@ -1036,6 +1053,23 @@ enqueue-nixpkgs-review *$prs:
|
||||
(set -x; "${cmd[@]}" )
|
||||
done
|
||||
|
||||
|
||||
# === format helpers ===
|
||||
|
||||
[no-cd]
|
||||
format-files-dirty:
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
git ls-files --modified | sort -u | grep . | xe nixfmt
|
||||
|
||||
[no-cd]
|
||||
format-files-touched-by-commit *commits:
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
declare -a commits=("$@")
|
||||
[[ "${#commits[@]}" -gt 0 ]] || readarray -td $'\n' commits < <( just _some_commits )
|
||||
[[ "${#commits[@]}" -gt 0 ]]
|
||||
printf "%s\n" "${commits[@]}" | xe -s 'git log --pretty=format: --name-only "$1"^.."$1"' | sort -u | grep . | xe nixfmt
|
||||
|
||||
|
||||
# === internal helpers ===
|
||||
|
||||
[no-cd]
|
||||
@@ -1083,14 +1117,22 @@ _packages_json:
|
||||
@_this_commit:
|
||||
cd "$invokedir"; $GIT log -n1 --pretty='format:%H'
|
||||
|
||||
@_a_commit *extra_revs:
|
||||
# CONCEPT:
|
||||
# These getters generally have a environ JUST_{{foo}} variable which they will just print instead of doing their interactive prompt
|
||||
# This allows top-level recipes to ask once and have all recursive just calls re-use the response
|
||||
|
||||
_a_commit *extra_revs:
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
[[ -n "${JUST_COMMIT:-}" ]] && { head -n1 <<<"$JUST_COMMIT"; exit 0; } ||:
|
||||
# TODO: check if in a nixpkgs git repo
|
||||
{ \
|
||||
[[ $# -eq 0 ]] || printf "%s\n" "$@"; \
|
||||
cd "$invokedir"; $GIT log --oneline -n800; \
|
||||
{
|
||||
[[ $# -eq 0 ]] || printf "%s\n" "$@";
|
||||
cd "$invokedir"; $GIT log --oneline -n800;
|
||||
} | gum filter --placeholder "Pick commit..." --height 10 | cut -d' ' -f1 | grep .
|
||||
|
||||
@_some_commits:
|
||||
_some_commits:
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
[[ -n "${JUST_COMMIT:-}" ]] && { cat <<<"$JUST_COMMIT"; exit 0; } ||:
|
||||
# TODO: check if in a git repo
|
||||
#cd "$invokedir"; $GIT log --oneline -n800 | gum filter --placeholder "Pick commit..." --height 10 --no-limit | cut -d' ' -f1
|
||||
cd "$invokedir"; $GIT log --oneline -n800 | fzf --layout=reverse --multi | cut -d' ' -f1
|
||||
@@ -1098,13 +1140,16 @@ _packages_json:
|
||||
@_a_commit_title:
|
||||
cd "$invokedir"; rev="$(just _a_commit)" || exit $?; [[ -n "$rev" ]] && git log --format="%s" -n1 "$rev" | grep .
|
||||
|
||||
@_a_package: _packages_json
|
||||
_a_package: _packages_json
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
[[ -n "${JUST_PACKAGE:-}" ]] && { head -n1 <<<"$JUST_PACKAGE"; exit 0; } ||:
|
||||
#gum spin --show-output just list-packages | cut -f1 | fzf --sync --layout=reverse | grep .
|
||||
just list-packages >/dev/null
|
||||
just list-packages >/dev/null # HACK
|
||||
just list-packages | cut -f1 | fzf --sync --layout=reverse | grep .
|
||||
|
||||
_some_packages: _packages_json
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
[[ -n "${JUST_PACKAGE:-}" ]] && { cat <<<"$JUST_PACKAGE" ; exit 0; } ||:
|
||||
#gum spin --show-output just list-packages | cut -f1 | fzf --sync --layout=reverse --multi | grep .
|
||||
just list-packages >/dev/null
|
||||
if [[ -n "${JUST_USE_ALIASES:-}" ]]; then
|
||||
@@ -1122,12 +1167,9 @@ _some_packages: _packages_json
|
||||
|
||||
_a_system:
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
if [[ -n "${JUST_SYSTEM:-}" ]]; then
|
||||
head <<<"$JUST_SYSTEM" -n1
|
||||
exit 0
|
||||
fi
|
||||
# nix eval --file master/default.nix lib.systems.flakeExposed --json | jq .[] -r | xargs {{XARGS_NL}} gum choose --selected "$(just _this_system)"
|
||||
systems="$(nix eval {{NIX_EVAL_OPTS}} --file master/default.nix lib.systems.flakeExposed --json)"
|
||||
[[ -n "${JUST_SYSTEM:-}" ]] && { head -n1 <<<"$JUST_SYSTEM"; exit 0; } ||:
|
||||
# nix eval --file upstream/master/default.nix lib.systems.flakeExposed --json | jq .[] -r | xargs {{XARGS_NL}} gum choose --selected "$(just _this_system)"
|
||||
systems="$(nix eval {{NIX_EVAL_OPTS}} --file upstream/master/default.nix lib.systems.flakeExposed --json)"
|
||||
system="$(just _this_system)"
|
||||
# system="aarch64-darwin"
|
||||
jq <<<"$systems" .[] -r | fzf --sync --layout=reverse $(
|
||||
@@ -1137,12 +1179,9 @@ _a_system:
|
||||
|
||||
_some_systems:
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
if [[ -n "${JUST_SYSTEM:-}" ]]; then
|
||||
cat <<<"$JUST_SYSTEM"
|
||||
exit 0
|
||||
fi
|
||||
# nix eval {{NIX_EVAL_OPTS}} --file master/default.nix lib.systems.flakeExposed --json | jq .[] -r | xargs {{XARGS_NL}} gum choose --no-limit --selected "$(just _this_system)"
|
||||
systems="$(nix eval {{NIX_EVAL_OPTS}} --file master/default.nix lib.systems.flakeExposed --json)"
|
||||
[[ -n "${JUST_SYSTEM:-}" ]] && { cat -n1 <<<"$JUST_SYSTEM"; exit 0; } ||:
|
||||
# nix eval {{NIX_EVAL_OPTS}} --file upstream/master/default.nix lib.systems.flakeExposed --json | jq .[] -r | xargs {{XARGS_NL}} gum choose --no-limit --selected "$(just _this_system)"
|
||||
systems="$(nix eval {{NIX_EVAL_OPTS}} --file upstream/master/default.nix lib.systems.flakeExposed --json)"
|
||||
system="$(just _this_system)"
|
||||
# system="aarch64-darwin"
|
||||
jq <<<"$systems" .[] -r | fzf --sync --layout=reverse --multi $(
|
||||
@@ -1151,24 +1190,38 @@ _some_systems:
|
||||
)
|
||||
|
||||
_a_maintainer:
|
||||
nix eval {{NIX_EVAL_OPTS}} --file master/maintainers/maintainer-list.nix \
|
||||
--apply 'x: builtins.attrValues (builtins.mapAttrs (k: v: v.github or k) x)' --json \
|
||||
| jq .[] -r \
|
||||
| fzf --sync --layout=reverse
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
[[ -n "${JUST_MAINTAINER:-}" ]] && { head -n1 <<<"$JUST_MAINTAINER"; exit 0; } ||:
|
||||
nix eval {{NIX_EVAL_OPTS}} --file upstream/master/maintainers/maintainer-list.nix \
|
||||
--apply 'x: builtins.attrValues (builtins.mapAttrs (k: v: let user = v.github or k; name = v.name or null; in [user (if name != user then name else null) (v.email or null)]) x)' --json \
|
||||
| jq '.[]|@tsv' -r \
|
||||
| column -t -s$'\t' \
|
||||
| fzf --sync --layout=reverse \
|
||||
| cut -d' ' -f1
|
||||
|
||||
_some_maintainers:
|
||||
nix eval {{NIX_EVAL_OPTS}} --file master/maintainers/maintainer-list.nix \
|
||||
--apply 'x: builtins.attrValues (builtins.mapAttrs (k: v: v.github or k) x)' --json \
|
||||
| jq .[] -r \
|
||||
| fzf --sync --layout=reverse --multi
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
[[ -n "${JUST_MAINTAINER:-}" ]] && { cat <<<"$JUST_MAINTAINER"; exit 0; } ||:
|
||||
nix eval {{NIX_EVAL_OPTS}} --file upstream/master/maintainers/maintainer-list.nix \
|
||||
--apply 'x: builtins.attrValues (builtins.mapAttrs (k: v: let user = v.github or k; name = v.name or null; in [user (if name != user then name else null) (v.email or null)]) x)' --json \
|
||||
| jq '.[]|@tsv' -r \
|
||||
| column -t -s$'\t' \
|
||||
| fzf --sync --layout=reverse --multi \
|
||||
| cut -d' ' -f1
|
||||
|
||||
@_a_pr:
|
||||
cd master; gh pr list --limit 1000 --json 'number,title' --state open | jq '.[]|"\(.number) - \(.title)"' -r | gum filter --placeholder "Pick PR..." --height 15 | cut -d' ' -f1
|
||||
_a_pr:
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
[[ -n "${JUST_PR:-}" ]] && { head -n1 <<<"$JUST_PR"; exit 0; } ||:
|
||||
cd upstream/master
|
||||
gh pr list --limit 1000 --json 'number,title' --state open | jq '.[]|"\(.number) - \(.title)"' -r | gum filter --placeholder "Pick PR..." --height 15 | cut -d' ' -f1
|
||||
|
||||
@_some_prs:
|
||||
cd master; gh pr list --limit 1000 --json 'number,title' --state open | jq '.[]|"\(.number) - \(.title)"' -r | gum filter --placeholder "Pick PR..." --height 15 --no-limit | cut -d' ' -f1
|
||||
_some_prs:
|
||||
#!/usr/bin/env -S bash -euo pipefail
|
||||
[[ -n "${JUST_PR:-}" ]] && { cat <<<"$JUST_PR"; exit 0; } ||:
|
||||
cd upstream/master
|
||||
gh pr list --limit 1000 --json 'number,title' --state open | jq '.[]|"\(.number) - \(.title)"' -r | gum filter --placeholder "Pick PR..." --height 15 --no-limit | cut -d' ' -f1
|
||||
|
||||
@_upstream_release_branches $prefix="upstream/" $suffix="":
|
||||
@_list_upstream_release_branches $prefix="upstream/" $suffix="":
|
||||
printf "${prefix//%/%%}%s${suffix//%/%%}\n" \
|
||||
master \
|
||||
staging \
|
||||
@@ -1176,17 +1229,14 @@ _some_maintainers:
|
||||
python-updates \
|
||||
release-25.05 \
|
||||
staging-25.05 \
|
||||
staging-next-25.05 \
|
||||
release-24.11 \
|
||||
staging-24.11 \
|
||||
staging-next-24.11
|
||||
staging-next-25.05
|
||||
|
||||
@_a_upstream_release_branch $header *extra_branches:
|
||||
shift; gum filter --header="$header" "$@" $(just _upstream_release_branches "${prefix:-upstream/}" "${suffix:-}")
|
||||
gum filter --header="$header" "${@:2}" $(just _list_upstream_release_branches "${prefix:-upstream/}" "${suffix:-}")
|
||||
# --ordered
|
||||
|
||||
@_some_upstream_release_branches $header *extra_branches:
|
||||
shift; gum filter --header="$header" "$@" $(just _upstream_release_branches "${prefix:-upstream/}" "${suffix:-}") --no-limit
|
||||
gum filter --header="$header" "${@:2}" $(just _list_upstream_release_branches "${prefix:-upstream/}" "${suffix:-}") --no-limit
|
||||
# --ordered
|
||||
|
||||
@_sanitize_pr_url $number:
|
||||
@@ -1196,6 +1246,8 @@ _some_maintainers:
|
||||
cd master; $GIT fetch "$remote"
|
||||
cd master; $GIT for-each-ref --sort=committerdate refs/remotes --format='%(committerdate:short) %(refname:short)' | sort -r | grep " $remote/" | gum filter --height=15 --no-sort | cut -d' ' -f2-
|
||||
|
||||
@_fmt:
|
||||
# maintenance
|
||||
|
||||
@_fmt_justfile:
|
||||
just --unstable --fmt
|
||||
#sd "\n+(@_[a-zA-Z_-]+:)" "\n" justfile
|
||||
|
||||
Reference in New Issue
Block a user