@vv0rkz/js-template 1.0.0 → 1.0.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vv0rkz/js-template",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Reusable setup for JS projects with husky, changelog, gh tools",
5
5
  "type": "module",
6
6
  "bin": {
@@ -8,9 +8,9 @@
8
8
  "js-template": "./bin/cli.js"
9
9
  },
10
10
  "files": [
11
- "bin",
12
- "templates",
13
- "tools-gh"
11
+ "bin/",
12
+ "templates/",
13
+ "tools-gh/"
14
14
  ],
15
15
  "scripts": {
16
16
  "test": "echo 'Tests not implemented yet' && exit 0"
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env sh
2
+
3
+ COMMIT_MSG=$(cat "$1")
4
+
5
+ # Функция показа подсказки
6
+ show_help() {
7
+ echo ""
8
+ echo "🎯 РАЗРЕШЕННЫЕ ФОРМАТЫ КОММИТОВ:"
9
+ echo "────────────────────────────────────"
10
+ echo "✨ НОВЫЕ ФИЧИ: feat: #номер описание"
11
+ echo "🐛 ИСПРАВЛЕНИЯ: fix: #номер описание"
12
+ echo "🔧 РЕФАКТОРИНГ: refactor: описание"
13
+ echo "🏗️ ИНФРАСТРУКТУРА: build: описание"
14
+ echo "🛠️ ТЕХ. ЗАДАЧИ: chore: описание"
15
+ echo "📚 ДОКУМЕНТАЦИЯ: docs: описание"
16
+ echo "🚀 АВТО-РЕЛИЗЫ: chore(release): vX.X.X"
17
+ echo ""
18
+ echo "📝 ПРИМЕРЫ:"
19
+ echo " feat: #9 добавить нормализацию чисел"
20
+ echo " fix: #10 исправить валидацию операторов"
21
+ echo " refactor: оптимизировать алгоритм"
22
+ echo " chore: обновить зависимости"
23
+ echo " docs: обновить README"
24
+ echo " chore(release): v2.3.0"
25
+ echo "────────────────────────────────────"
26
+ exit 1
27
+ }
28
+
29
+ # ИСКЛЮЧЕНИЕ: разрешаем авто-релизные коммиты от changelogen
30
+ if echo "$COMMIT_MSG" | grep -q "^chore(release): v[0-9]\+\.[0-9]\+\.[0-9]\+$"; then
31
+ echo "✅ Авто-релизный коммит: $COMMIT_MSG"
32
+ exit 0
33
+ fi
34
+
35
+ # СТРОГАЯ ПРОВЕРКА для обычных коммитов
36
+ if ! echo "$COMMIT_MSG" | grep -q -E "^(feat: #[0-9]+ .+|fix: #[0-9]+ .+|refactor: .+|build: .+|chore: .+|docs: .+)"; then
37
+ echo "❌ Неправильный формат коммита: '$COMMIT_MSG'"
38
+ show_help
39
+ fi
40
+
41
+ # Дополнительная проверка: feat/fix должны иметь #номер
42
+ if echo "$COMMIT_MSG" | grep -q "^\(feat\|fix\):"; then
43
+ if ! echo "$COMMIT_MSG" | grep -q "^\(feat\|fix\): #[0-9]"; then
44
+ echo "❌ Ошибка: feat и fix коммиты должны содержать номер задачи"
45
+ echo "💡 Твой коммит: $COMMIT_MSG"
46
+ echo "✅ Пример: feat: #9 добавить нормализацию чисел"
47
+ exit 1
48
+ fi
49
+ fi
50
+
51
+ # Закрытие issues при fix: #номер
52
+ if echo "$COMMIT_MSG" | grep -q "^fix: #[0-9]"; then
53
+ ISSUE_NUMBER=$(echo "$COMMIT_MSG" | grep -o '#[0-9]*' | sed 's/#//')
54
+ echo "🔧 Закрываю issue #$ISSUE_NUMBER..."
55
+
56
+ COMMIT_HASH=$(git rev-parse --short HEAD)
57
+ REPO_URL=$(git remote get-url origin | sed 's/\.git$//')
58
+ COMMIT_URL="$REPO_URL/commit/$COMMIT_HASH"
59
+
60
+ gh issue close "$ISSUE_NUMBER" --comment "Исправлено в коммите: [$COMMIT_HASH]($COMMIT_URL) - $COMMIT_MSG"
61
+ fi
62
+
63
+ # Запускаем commitlint
64
+ npx --no -- commitlint --edit "$1"
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env sh
2
+
3
+ COMMIT_MSG=$(git log -1 --pretty=%B)
4
+ COMMIT_HASH=$(git rev-parse --short HEAD)
5
+ REPO_URL=$(git remote get-url origin)
6
+
7
+ # Исправляем URL
8
+ if echo "$REPO_URL" | grep -q "git@github.com"; then
9
+ REPO_URL=$(echo "$REPO_URL" | sed 's/git@github.com:/https:\/\/github.com\//' | sed 's/\.git$//')
10
+ else
11
+ REPO_URL=$(echo "$REPO_URL" | sed 's/\.git$//')
12
+ fi
13
+
14
+ # Пуш коммита
15
+ git push origin HEAD
16
+
17
+ # Закрытие issues при feat: #номер И fix: #номер
18
+ if echo "$COMMIT_MSG" | grep -q "^\(feat\|fix\): #[0-9]"; then
19
+ ISSUE_NUMBER=$(echo "$COMMIT_MSG" | grep -o '#[0-9]*' | sed 's/#//')
20
+ echo "🔧 Закрываю issue #$ISSUE_NUMBER..."
21
+
22
+ COMMIT_LINK="$REPO_URL/commit/$COMMIT_HASH"
23
+
24
+ gh issue close "$ISSUE_NUMBER" --comment "✅ Завершено в коммите: [$COMMIT_HASH]($COMMIT_LINK) - $COMMIT_MSG"
25
+ fi
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env sh
2
+
3
+ CURRENT_BRANCH=$(git branch --show-current)
4
+ if [ "$CURRENT_BRANCH" = "main" ]; then
5
+ echo "✅ Разрешённая ветка: $CURRENT_BRANCH"
6
+ exit 0
7
+ fi
8
+
9
+ # Простая проверка: начинается с v и есть дефис
10
+ if ! echo "$CURRENT_BRANCH" | grep -q "^v.*-.*"; then
11
+ echo "❌ Неправильный формат ветки: $CURRENT_BRANCH"
12
+ echo "✅ Должен быть: vX.Y.Z-description"
13
+ echo "📝 Пример: v2.3.0-normalize-operators"
14
+ exit 1
15
+ fi
16
+
17
+ echo "✅ Формат ветки правильный: $CURRENT_BRANCH"
@@ -0,0 +1,9 @@
1
+ export default {
2
+ types: {
3
+ feat: { title: "✨ Фичи" },
4
+ fix: { title: "🐛 Исправленные баги" },
5
+ build: { title: "🏗️ Инфраструктура" },
6
+ refactor: { title: "🔧 Рефакторинг", hidden: true },
7
+ chore: { title: "🛠️ Технические задачи", hidden: true },
8
+ },
9
+ }
@@ -0,0 +1,6 @@
1
+ export default {
2
+ extends: ["@commitlint/config-conventional"],
3
+ rules: {
4
+ "type-enum": [2, "always", ["feat", "fix", "refactor", "build", "chore", "docs"]],
5
+ },
6
+ }