aiur-cli 0.0.4 → 0.0.5-nightly.cd08c27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -54
- package/bin/aiur.js +2 -2
- package/libexec/aiur-engine.sh +1320 -109
- package/libexec/guard-pr-deletions.sh +70 -0
- package/package.json +8 -7
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
readonly deletion_threshold=50
|
|
5
|
+
base_branch="${1:-${AIUR_BASE_BRANCH:-}}"
|
|
6
|
+
|
|
7
|
+
if [[ -z "$base_branch" ]]; then
|
|
8
|
+
echo "guard-pr-deletions: base branch is required (argument or AIUR_BASE_BRANCH)" >&2
|
|
9
|
+
exit 2
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
if ! git diff --quiet || ! git diff --cached --quiet; then
|
|
13
|
+
echo "guard-pr-deletions: tracked changes must be committed before checking PR deletions" >&2
|
|
14
|
+
exit 2
|
|
15
|
+
fi
|
|
16
|
+
|
|
17
|
+
if ! git fetch --quiet --no-tags origin "refs/heads/$base_branch"; then
|
|
18
|
+
echo "guard-pr-deletions: could not fetch origin/$base_branch; refusing to use a stale base" >&2
|
|
19
|
+
exit 2
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
if ! base_sha="$(git rev-parse --verify 'FETCH_HEAD^{commit}')"; then
|
|
23
|
+
echo "guard-pr-deletions: fetched base commit is unavailable" >&2
|
|
24
|
+
exit 2
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
scratch_dir="$(mktemp -d)"
|
|
28
|
+
trap 'rm -rf "$scratch_dir"' EXIT
|
|
29
|
+
|
|
30
|
+
git diff --diff-filter=D --name-only "$base_sha"..HEAD | LC_ALL=C sort -u >"$scratch_dir/deleted"
|
|
31
|
+
deleted_count="$(wc -l <"$scratch_dir/deleted" | tr -d ' ')"
|
|
32
|
+
|
|
33
|
+
if ((deleted_count <= deletion_threshold)); then
|
|
34
|
+
echo "guard-pr-deletions: $deleted_count untouched file deletions (limit: $deletion_threshold)"
|
|
35
|
+
exit 0
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
branch_start="${AIUR_BRANCH_START_SHA:-}"
|
|
39
|
+
|
|
40
|
+
if [[ -z "$branch_start" ]] && git rev-parse --verify --quiet 'refs/aiur/branch-start^{commit}' >/dev/null; then
|
|
41
|
+
branch_start="$(git rev-parse --verify 'refs/aiur/branch-start^{commit}')"
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
if [[ -z "$branch_start" ]]; then
|
|
45
|
+
echo "guard-pr-deletions: refusing $deleted_count deletions because the workspace branch-start ref is unavailable" >&2
|
|
46
|
+
exit 1
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
if ! git merge-base --is-ancestor "$branch_start" HEAD; then
|
|
50
|
+
echo "guard-pr-deletions: workspace branch-start $branch_start is not an ancestor of HEAD" >&2
|
|
51
|
+
exit 2
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
git log --format= --name-only "$branch_start"..HEAD | sed '/^$/d' | LC_ALL=C sort -u >"$scratch_dir/touched"
|
|
55
|
+
# Both inputs are sorted with LC_ALL=C, so comm must compare with the same
|
|
56
|
+
# collation. Under a UTF-8 locale comm reads C-sorted input as unsorted (any
|
|
57
|
+
# mix of upper- and lower-case initial paths, e.g. README.md beside src/...)
|
|
58
|
+
# and its output on unsorted input is undefined -- it can drop rows, which
|
|
59
|
+
# would make this guard under-count untouched deletions and fail open.
|
|
60
|
+
LC_ALL=C comm -23 "$scratch_dir/deleted" "$scratch_dir/touched" >"$scratch_dir/untouched-deletions"
|
|
61
|
+
|
|
62
|
+
untouched_count="$(wc -l <"$scratch_dir/untouched-deletions" | tr -d ' ')"
|
|
63
|
+
|
|
64
|
+
if ((untouched_count > deletion_threshold)); then
|
|
65
|
+
echo "guard-pr-deletions: refusing PR with $untouched_count untouched file deletions (limit: $deletion_threshold)" >&2
|
|
66
|
+
sed -n '1,20p' "$scratch_dir/untouched-deletions" >&2
|
|
67
|
+
exit 1
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
echo "guard-pr-deletions: $untouched_count untouched file deletions (limit: $deletion_threshold)"
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aiur-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5-nightly.cd08c27",
|
|
4
4
|
"description": "AI Unit Runtime for Executors.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
|
-
"homepage": "https://github.com/
|
|
6
|
+
"homepage": "https://github.com/aiur-team/aiur",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/
|
|
9
|
+
"url": "git+https://github.com/aiur-team/aiur.git"
|
|
10
10
|
},
|
|
11
11
|
"bin": {
|
|
12
12
|
"aiur": "bin/aiur.js"
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"files": [
|
|
19
19
|
"bin/aiur.js",
|
|
20
20
|
"libexec/aiur-engine.sh",
|
|
21
|
+
"libexec/guard-pr-deletions.sh",
|
|
21
22
|
"scripts/postinstall.mjs",
|
|
22
23
|
"share/aiur.tmux.conf"
|
|
23
24
|
],
|
|
@@ -26,9 +27,9 @@
|
|
|
26
27
|
},
|
|
27
28
|
"opencodeVersion": "1.17.10",
|
|
28
29
|
"optionalDependencies": {
|
|
29
|
-
"aiur-cli-linux-x64": "0.0.
|
|
30
|
-
"aiur-cli-linux-arm64": "0.0.
|
|
31
|
-
"aiur-cli-darwin-x64": "0.0.
|
|
32
|
-
"aiur-cli-darwin-arm64": "0.0.
|
|
30
|
+
"aiur-cli-linux-x64": "0.0.5-nightly.cd08c27",
|
|
31
|
+
"aiur-cli-linux-arm64": "0.0.5-nightly.cd08c27",
|
|
32
|
+
"aiur-cli-darwin-x64": "0.0.5-nightly.cd08c27",
|
|
33
|
+
"aiur-cli-darwin-arm64": "0.0.5-nightly.cd08c27"
|
|
33
34
|
}
|
|
34
35
|
}
|