Skip to content
This repository was archived by the owner on Mar 31, 2022. It is now read-only.

Commit 17b0934

Browse files
author
Pavel Sobolev
committed
Стартовый коммит.
0 parents  commit 17b0934

File tree

1 file changed

+202
-0
lines changed

1 file changed

+202
-0
lines changed

Makefile

Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
2+
## Это шаблон make-файла для публикации кода на GitHub.
3+
4+
## Репозиторий на GitHub: https://github.com/Paveloom/B1
5+
## Документация: https://www.notion.so/paveloom/B1-fefcaf42ddf541d4b11cfcab63c2f018
6+
7+
## Версия релиза: 2.2.1
8+
## Версия документации: 2.2.0
9+
10+
## Автор: Павел Соболев (http://paveloom.tk)
11+
12+
## Для корректного отображения содержимого
13+
## символ табуляции должен визуально иметь
14+
## ту же длину, что и пять пробелов.
15+
16+
# Настройки make-файла
17+
18+
## Имя координатора
19+
make := make
20+
21+
## Указание оболочки
22+
SHELL := /bin/bash
23+
24+
## Указание make-файлу выполнять все правила в одном вызове оболочки
25+
.ONESHELL :
26+
27+
## Заглушка на вывод информации указанным правилам
28+
.SILENT :
29+
30+
## Правила-псевдоцели
31+
.PHONY : git, git-am, new, del, final, git-new, git-clean, version, archive
32+
33+
## Правило, выполняющееся при вызове координатора без аргументов
34+
ALL : git
35+
36+
37+
38+
# Блок правил для разработки и публикации кода на GitHub
39+
40+
## Имя пользователя на GitHub
41+
username := Paveloom
42+
43+
## Сообщение стартового коммита
44+
start_message := "Стартовый коммит."
45+
46+
## Имя ветки изменений
47+
feature_branch := feature
48+
49+
## Правило для создания и публикации коммита
50+
git :
51+
52+
# Определение текущей ветки
53+
CURRENT_BRANCH=$$(git status | head -n 1 | cut -d " " -f 3)
54+
55+
# Проверка текущей ветки
56+
if [ "$$CURRENT_BRANCH" = "${feature_branch}" ]; then
57+
58+
# Определение последнего тега
59+
LAST_TAG=$$(git describe --tag)
60+
61+
# Проверка наличия тега у предыдущего коммита
62+
if echo $$LAST_TAG | grep -qv "-"; then
63+
64+
# Определение номера сгенерированного ранее тега
65+
CURRENT_NUMBER=$$(echo $$LAST_TAG | grep -o "_[0-9]\+" | sed 's/_//')
66+
67+
# Проверка наличия сгенерированного ранее тега
68+
if echo $$LAST_TAG | grep -q "_[0-9]\+"; then
69+
70+
# Прибавление к текущему номеру единицы
71+
NEXT_NUMBER=$$(( $$CURRENT_NUMBER + 1 ))
72+
73+
# Формирование нового тега
74+
NEXT_TAG=$$(echo $$LAST_TAG | sed "s/_$$CURRENT_NUMBER/_$$NEXT_NUMBER/")
75+
76+
git add -A
77+
git commit -e
78+
79+
# Проверка, был ли создан коммит
80+
if [ $$? -eq 0 ]; then
81+
82+
git tag -a $$NEXT_TAG -m "$$NEXT_TAG"
83+
git tag -d $$LAST_TAG
84+
git push origin :$$LAST_TAG
85+
git push --follow-tags
86+
87+
fi
88+
89+
else
90+
91+
# Формирование нового тега
92+
NEXT_TAG=$$(echo "$$LAST_TAG _${feature_branch}_1" | sed "s/\ //")
93+
94+
git add -A
95+
git commit -e
96+
97+
# Проверка, был ли создан коммит
98+
if [ $$? -eq 0 ]; then
99+
100+
git tag -a $$NEXT_TAG -m "$$NEXT_TAG"
101+
git push --follow-tags
102+
103+
fi
104+
105+
fi
106+
107+
else
108+
109+
git add -A
110+
git commit -e
111+
112+
# Проверка, был ли создан коммит
113+
if [ $$? -eq 0 ]; then
114+
git push
115+
fi
116+
117+
fi
118+
119+
else
120+
121+
git add -A
122+
git commit -e
123+
124+
# Проверка, был ли создан коммит
125+
if [ $$? -eq 0 ]; then
126+
git push
127+
fi
128+
129+
fi
130+
131+
## Правило для обновления последнего коммита до текущего состояния локального репозитория
132+
git-am :
133+
git add -A
134+
git commit --amend
135+
136+
# Проверка, был ли создан коммит
137+
if [ $$? -eq 0 ]; then
138+
139+
git push --follow-tags --force-with-lease
140+
141+
fi
142+
143+
## Правило для создания ветки изменений
144+
new :
145+
git checkout -q master
146+
git checkout -b $(feature_branch)
147+
git push -u origin $(feature_branch)
148+
149+
## Правило для удаления текущей ветки изменений локально
150+
del :
151+
git checkout -q master
152+
git branch -D $(feature_branch)
153+
154+
# Правило для удаления последнего тега
155+
# на ветке изменений локально и удаленно
156+
final :
157+
158+
# Определение текущей ветки
159+
CURRENT_BRANCH=$$(git status | head -n 1 | cut -d " " -f 3)
160+
161+
# Проверка текущей ветки
162+
if [ "$$CURRENT_BRANCH" = "${feature_branch}" ]; then
163+
164+
# Определение последнего тега
165+
LAST_TAG=$$(git describe --tag)
166+
167+
# Удаление последнего тега удаленно
168+
git push origin :$$LAST_TAG
169+
170+
# Удаление последнего тега локально
171+
git tag -d $$LAST_TAG
172+
173+
fi
174+
175+
## Правило для подключения удалённого репозитория и
176+
## загрузки в него стартового make-файла
177+
178+
ifeq (git-new, $(firstword $(MAKECMDGOALS)))
179+
new_rep := $(wordlist 2, 2, $(MAKECMDGOALS))
180+
$(eval $(new_rep):;@#)
181+
endif
182+
183+
git-new :
184+
$(make) git-clean
185+
git init
186+
git remote add origin [email protected]:$(username)/$(new_rep).git
187+
git add Makefile
188+
git commit -m $(start_message)
189+
git push -u origin master
190+
191+
## Правило для удаления репозитория в текущей директории
192+
git-clean :
193+
rm -rf .git
194+
195+
# Правило для изменения версий Make-файлов
196+
version :
197+
bash .github/scripts/VersionChange.sh
198+
$(make) archive
199+
200+
# Правило для создания архивов
201+
archive :
202+
find Make-файлы/ -path '*/.*' -prune -o -type f -print | zip Архивы/Make-файлы.zip -FS -q -@

0 commit comments

Comments
 (0)