fork: полный набор швов + свои записи о версии (FORK-CHANGELOG.md)
This commit is contained in:
@@ -0,0 +1,18 @@
|
|||||||
|
# Что нового в сборке форка
|
||||||
|
|
||||||
|
Здесь записи о наших версиях. Файл автора (`CHANGELOG.md`) мы не трогаем — так обновления
|
||||||
|
автора не конфликтуют с нашими записями.
|
||||||
|
|
||||||
|
## v1.2.1: сборка форка поверх 3X-UI KIT 1.2
|
||||||
|
|
||||||
|
* Источник файлов и обновлений — свой репозиторий Gitea: установка и `kit update` берут релиз
|
||||||
|
оттуда, а подпись релиза проверяется ключом форка. Авторский ночной апдейт приходит в наш
|
||||||
|
канал, поэтому наши доработки не стираются ночью.
|
||||||
|
* Дополнения форка живут отдельным файлом `/usr/local/lib/kit/kit-local.sh` и подключаются одной
|
||||||
|
строкой: `kit local help | version | channel | seams | masking`.
|
||||||
|
* Наш файл едет в том же подписанном релизе, что и код автора: он входит в `SHA256SUMS`,
|
||||||
|
проверяется по подписи и обновляется вместе с `kit`.
|
||||||
|
* Швы в коде автора описаны в `tools/fork_apply.py` (источник правды), синхронизация с автором и
|
||||||
|
проверки — `tools/fork-sync.sh`.
|
||||||
|
|
||||||
|
Основа — 3X-UI KIT 1.2 (панель 3X-UI v3.9.0, ядро Xray v26.6.27). Что нового у автора — в `CHANGELOG.md`.
|
||||||
+1
-1
@@ -505,7 +505,7 @@ cmd_version() {
|
|||||||
|
|
||||||
# Что нового в версии $1 – из CHANGELOG.md, без разметки.
|
# Что нового в версии $1 – из CHANGELOG.md, без разметки.
|
||||||
changelog_of() {
|
changelog_of() {
|
||||||
curl -fsS -m 5 "$KIT_RAW/CHANGELOG.md" 2>/dev/null | awk -v v="## v$1" '
|
{ curl -fsS -m 5 "$KIT_RAW/CHANGELOG.md" 2>/dev/null; curl -fsS -m 5 "$KIT_RAW/FORK-CHANGELOG.md" 2>/dev/null; } | awk -v v="## v$1" '
|
||||||
index($0, v) == 1 { on = 1; t = substr($0, length(v) + 1); sub(/^[: ]+/, "", t); if (t != "") print t; next } on && /^## / { exit } on' | sed -E 's/ ?Спасибо .*$//; s/\[([^]]*)\]\([^)]*\)/\1/g; s/\*\*//g; s/`//g' | grep -v '^[[:space:]]*$' | head -40 || true
|
index($0, v) == 1 { on = 1; t = substr($0, length(v) + 1); sub(/^[: ]+/, "", t); if (t != "") print t; next } on && /^## / { exit } on' | sed -E 's/ ?Спасибо .*$//; s/\[([^]]*)\]\([^)]*\)/\1/g; s/\*\*//g; s/`//g' | grep -v '^[[:space:]]*$' | head -40 || true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+34
-4
@@ -172,6 +172,29 @@ def main():
|
|||||||
"FILES=(scripts/3x-ui.sh scripts/hysteria2.sh scripts/kit.sh scripts/kit-sub.py scripts/kit-local.sh VERSION)",
|
"FILES=(scripts/3x-ui.sh scripts/hysteria2.sh scripts/kit.sh scripts/kit-sub.py scripts/kit-local.sh VERSION)",
|
||||||
"наш файл в подписанном списке релиза",
|
"наш файл в подписанном списке релиза",
|
||||||
),
|
),
|
||||||
|
# --- свои записи о версии (наш файл, авторский CHANGELOG не трогаем) ----
|
||||||
|
(
|
||||||
|
"tools/release.sh",
|
||||||
|
'grep -q "^## v$v" CHANGELOG.md || die "В CHANGELOG.md нет раздела ## v$v"',
|
||||||
|
False,
|
||||||
|
'(grep -q "^## v$v" CHANGELOG.md || grep -q "^## v$v" FORK-CHANGELOG.md)'
|
||||||
|
' || die "Нет раздела ## v$v ни в CHANGELOG.md, ни в FORK-CHANGELOG.md (форк ведёт свои записи в FORK-CHANGELOG.md)"',
|
||||||
|
"раздел версии форка — в нашем файле",
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"tools/release.sh",
|
||||||
|
'[[ -z $(git status --porcelain -- "${FILES[@]}" CHANGELOG.md) ]]',
|
||||||
|
False,
|
||||||
|
'[[ -z $(git status --porcelain -- "${FILES[@]}" CHANGELOG.md FORK-CHANGELOG.md) ]]',
|
||||||
|
"наш файл записей тоже должен быть закоммичен",
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"scripts/kit.sh",
|
||||||
|
' curl -fsS -m 5 "$KIT_RAW/CHANGELOG.md" 2>/dev/null | awk -v v="## v$1" \'',
|
||||||
|
False,
|
||||||
|
' { curl -fsS -m 5 "$KIT_RAW/CHANGELOG.md" 2>/dev/null; curl -fsS -m 5 "$KIT_RAW/FORK-CHANGELOG.md" 2>/dev/null; } | awk -v v="## v$1" \'',
|
||||||
|
"«что нового» ищет и в наших записях",
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
bad = 0
|
bad = 0
|
||||||
@@ -182,11 +205,18 @@ def main():
|
|||||||
bad += 1
|
bad += 1
|
||||||
continue
|
continue
|
||||||
text = p.read_text(encoding="utf-8", newline="")
|
text = p.read_text(encoding="utf-8", newline="")
|
||||||
n = count(text, anchor, is_re)
|
if check:
|
||||||
label = anchor if not is_re else anchor
|
# --check смотрит на готовое дерево dev: наш шов обязан быть на месте и ровно один раз
|
||||||
short = label if len(label) <= 54 else label[:51] + "…"
|
n = text.count(new)
|
||||||
|
what, shown = "наш шов", new
|
||||||
|
else:
|
||||||
|
# применение — только на чистое дерево автора: якорь обязан найтись ровно один раз
|
||||||
|
n = count(text, anchor, is_re)
|
||||||
|
what, shown = "якорь автора", anchor
|
||||||
|
short = shown if len(shown) <= 54 else shown[:51] + "…"
|
||||||
|
short = short.replace("\n", "⏎")
|
||||||
if n != 1:
|
if n != 1:
|
||||||
print("✗ %-20s %-56s найдено %d раз (%s)" % (path, short, n, why))
|
print("✗ %-20s %-56s %s найден %d раз (%s)" % (path, short, what, n, why))
|
||||||
bad += 1
|
bad += 1
|
||||||
continue
|
continue
|
||||||
if check:
|
if check:
|
||||||
|
|||||||
+2
-2
@@ -26,10 +26,10 @@ v=$(tr -d '[:space:]' <VERSION)
|
|||||||
for f in scripts/3x-ui.sh scripts/hysteria2.sh scripts/kit.sh; do
|
for f in scripts/3x-ui.sh scripts/hysteria2.sh scripts/kit.sh; do
|
||||||
grep -qx "KIT_VERSION=\"$v\"" "$f" || die "$f: KIT_VERSION не $v"
|
grep -qx "KIT_VERSION=\"$v\"" "$f" || die "$f: KIT_VERSION не $v"
|
||||||
done
|
done
|
||||||
grep -q "^## v$v" CHANGELOG.md || die "В CHANGELOG.md нет раздела ## v$v"
|
(grep -q "^## v$v" CHANGELOG.md || grep -q "^## v$v" FORK-CHANGELOG.md) || die "Нет раздела ## v$v ни в CHANGELOG.md, ни в FORK-CHANGELOG.md (форк ведёт свои записи в FORK-CHANGELOG.md)"
|
||||||
ok "Версия $v во всех скриптах и в CHANGELOG"
|
ok "Версия $v во всех скриптах и в CHANGELOG"
|
||||||
|
|
||||||
[[ -z $(git status --porcelain -- "${FILES[@]}" CHANGELOG.md) ]] || die "Есть незакоммиченные изменения в файлах релиза – сначала коммит."
|
[[ -z $(git status --porcelain -- "${FILES[@]}" CHANGELOG.md FORK-CHANGELOG.md) ]] || die "Есть незакоммиченные изменения в файлах релиза – сначала коммит."
|
||||||
|
|
||||||
# Установщик 3X-UI: хеш в скрипте должен совпадать с тем, что сейчас лежит на GitHub.
|
# Установщик 3X-UI: хеш в скрипте должен совпадать с тем, что сейчас лежит на GitHub.
|
||||||
xv=$(sed -n 's/^XUI_VERSION="\(.*\)"/\1/p' scripts/3x-ui.sh)
|
xv=$(sed -n 's/^XUI_VERSION="\(.*\)"/\1/p' scripts/3x-ui.sh)
|
||||||
|
|||||||
Reference in New Issue
Block a user