itube-specs 0.0.1021 → 0.0.1023

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/SITE_UPDATES.md CHANGED
@@ -11,6 +11,21 @@
11
11
  коммиты до бампа); `npm run patch` сам проставит ей номер версии. Формат пункта: что сделать и где,
12
12
  кому именно (всем / сайтам с N), что будет, если не сделать.
13
13
 
14
+ ## 0.0.1023 — 2026-10-08
15
+
16
+ - **Всем сайтам:** в `package.json` заменить скрипт `spec` на `"spec": "sh node_modules/itube-specs/scripts/spec.sh"`
17
+ (вся логика теперь в слое: ждёт свежую версию в реестре, пишет `SITE_TODO.md`, обновляет каталог). Делать
18
+ после установки этой версии — в старых `spec.sh` нет. Не заменить — дальнейшие правки `spec` в слое до сайта
19
+ не дойдут, а старый `spec` сразу после публикации может поставить прошлую версию.
20
+
21
+ ## 0.0.1022 — 2026-10-08
22
+
23
+ - **Всем сайтам со скриптом `spec`:** заменить его в `package.json` на версию из `NEW_SITE_CHECKLIST.md`
24
+ (запоминает версию слоя до установки, передаёт её в `site-updates.mjs`, ставит с `--prefer-online`). Образец —
25
+ коммит gay-cool-new с этим изменением. Не заменить — повторный `npm run spec` до коммита снова пишет в
26
+ `SITE_TODO.md` уже сделанные пункты, а `spec` сразу после публикации может поставить прошлую версию из кэша
27
+ npm. hd-sex-new: там `spec` — голый `npm install itube-specs@latest`, заменить целиком.
28
+
14
29
  ## 0.0.1021 — 2026-10-08
15
30
 
16
31
  - **Сайтам со своей темой** (`assets/scss/vars/_theme.scss` в сайте, как у hdsex-remaster): завести токены
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "itube-specs",
3
3
  "type": "module",
4
- "version": "0.0.1021",
4
+ "version": "0.0.1023",
5
5
  "main": "./nuxt.config.ts",
6
6
  "types": "./types/index.d.ts",
7
7
  "scripts": {
@@ -83,6 +83,7 @@
83
83
  "scripts/i18n-sheet.mjs",
84
84
  "scripts/site-updates.mjs",
85
85
  "scripts/link-layer.sh",
86
+ "scripts/spec.sh",
86
87
  "SITE_UPDATES.md",
87
88
  "nuxt.config.ts",
88
89
  "DOCS/"
@@ -1,7 +1,7 @@
1
- // Для сайта, после `npm run spec`: печатает записи SITE_UPDATES.md слоя, вышедшие после версии,
2
- // которая стояла в закоммиченном package.json сайта, и дописывает их в SITE_TODO.md сайта.
3
- // Запуск из корня сайта.
4
- // Явно: `node node_modules/itube-specs/scripts/site-updates.mjs <старая-версия>`.
1
+ // Для сайта, после `npm run spec`: печатает записи SITE_UPDATES.md слоя, вышедшие после старой версии,
2
+ // и дописывает их в SITE_TODO.md сайта. Запуск из корня сайта.
3
+ // Старая версия — аргументом (`spec` передаёт ту, что стояла в package.json до установки); без аргумента —
4
+ // из закоммиченного package.json.
5
5
 
6
6
  import { execSync } from 'node:child_process';
7
7
  import { existsSync, readFileSync, writeFileSync } from 'node:fs';
@@ -0,0 +1,38 @@
1
+ #!/bin/sh
2
+ # spec сайта: поставить последнюю опубликованную версию слоя, дописать её новые пункты SITE_UPDATES.md в
3
+ # SITE_TODO.md сайта, обновить каталог (если у сайта есть `npm run catalog`). Запуск из корня сайта.
4
+ # Версия берётся из реестра в обход кэша npm: сразу после публикации `@latest` из кэша давал прошлую.
5
+ # Отсчёт пунктов — от версии в package.json до установки, не от закоммиченной: повторный spec до коммита
6
+ # не возвращает сделанное.
7
+
8
+ set -e
9
+
10
+ prev=$(node -p "require('./package.json').dependencies['itube-specs'] || ''")
11
+
12
+ is_newer() {
13
+ node -e "
14
+ const p = v => v.replace(/^[^\\d]*/, '').split('.').map(Number);
15
+ const a = p(process.argv[1]), b = p(process.argv[2] || '0.0.0');
16
+ const i = a.findIndex((n, k) => n !== b[k]);
17
+ process.exit(i !== -1 && a[i] > b[i] ? 0 : 1);
18
+ " "$1" "$2"
19
+ }
20
+
21
+ for attempt in 1 2 3; do
22
+ latest=$(npm view itube-specs version --prefer-online 2>/dev/null) || { echo "spec: реестр npm недоступен"; exit 1; }
23
+ is_newer "$latest" "$prev" && break
24
+ if [ "$attempt" = 3 ]; then
25
+ echo "spec: в реестре $latest, новее $prev нет. Только что опубликовал — подожди минуту и повтори."
26
+ exit 0
27
+ fi
28
+ echo "spec: в реестре пока $latest, жду новую версию…"
29
+ sleep 10
30
+ done
31
+
32
+ npm install "itube-specs@$latest" --prefer-online
33
+
34
+ node node_modules/itube-specs/scripts/site-updates.mjs "$prev"
35
+
36
+ if node -e "process.exit(require('./package.json').scripts?.catalog ? 0 : 1)"; then
37
+ (npx nuxi prepare >/dev/null 2>&1 && npm run catalog --silent) || echo "spec: каталог не обновлён — запусти \`npx nuxi prepare && npm run catalog\` на Node 22"
38
+ fi