Создание проекта
This commit is contained in:
commit
3c27697905
|
@ -0,0 +1,397 @@
|
||||||
|
#!/usr/bin/fish
|
||||||
|
|
||||||
|
if test (string match -ri "ru" "$LANG")
|
||||||
|
function help -d "Вывод мануала по работе с программой"
|
||||||
|
echo
|
||||||
|
set_color yellow; echo -n " Шаблон: "; set_color white; echo -n " gitler "; set_color brmagenta; echo "[репозиторий] [флаги]"
|
||||||
|
echo
|
||||||
|
set_color green; echo -n " -c --create "; set_color brcyan; echo -n ": "; set_color white; echo "Создать репозиторий"
|
||||||
|
set_color green; echo -n " -d --delete "; set_color brcyan; echo -n ": "; set_color white; echo "Удалить репозиторий"
|
||||||
|
set_color green; echo -n " -f --force "; set_color brcyan; echo -n ": "; set_color white; echo "Перезаписывать или игнорировать, если потребуется"
|
||||||
|
set_color green; echo -n " -p --path "; set_color brmagenta; echo -n "[путь] "; set_color brcyan; echo -n ": "; set_color white; echo "Путь до родительского каталога репозитория"
|
||||||
|
set_color green; echo -n " -i --import "; set_color brmagenta; echo -n "[путь] "; set_color brcyan; echo -n ": "; set_color white; echo "Путь до каталога для импорта"
|
||||||
|
echo
|
||||||
|
set_color green; echo -n " -h --help "; set_color brcyan; echo -n ": "; set_color white; echo "Общая информация (этот текст)"
|
||||||
|
set_color green; echo -n " -r --rules "; set_color brcyan; echo -n ": "; set_color white; echo "Правила обработки параметров"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
function rules -d "Вывод правил обработки параметров"
|
||||||
|
echo
|
||||||
|
set_color brmagenta; echo -n " [репозиторий] "; set_color brcyan; echo -n ": "; set_color yellow; echo "/^[A-z_1-9]+\$/"
|
||||||
|
set_color brmagenta; echo -n " [флаги] "; set_color brcyan; echo -n ": "; set_color yellow; echo "/^-[a-z1-9]?\s*[A-z_1-9]*\$/"
|
||||||
|
set_color brmagenta; echo -n " [путь] "; set_color brcyan; echo -n ": "; set_color yellow; echo "/^[\/?[A-z_1-9]+]*\$/"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
function print -a CATEGORY TYPE PARAM1 PARAM2 -d "Вывод сообщений по категориям"
|
||||||
|
switch $CATEGORY
|
||||||
|
case REQUEST
|
||||||
|
switch $TYPE
|
||||||
|
case IMPORT_REQUEST_INFO
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color blue; echo -n "[ЗАДАЧА] "; set_color white; echo -n "Импортировать файл: "; set_color cyan; echo -n "$PARAM1 "; set_color white; echo "?"
|
||||||
|
case IMPORT_REQUEST
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brcyan; echo -n "[РЕШИТЬ] "; set_color white; echo -n "YES (!y) : NO (n) : SKIP (s) : ALL (a) "; set_color white; echo "> "
|
||||||
|
case DELETE_REQUEST_INFO
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color blue; echo -n "[ЗАДАЧА] "; set_color white; echo -n "Удалить файл: "; set_color cyan; echo -n "$PARAM1 "; set_color white; echo "?"
|
||||||
|
case DELETE_REQUEST
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brcyan; echo -n "[РЕШИТЬ] "; set_color white; echo -n "YES (!y) : NO (n) : SKIP (s) : ALL (a) "; set_color white; echo "> "
|
||||||
|
end
|
||||||
|
case INFO
|
||||||
|
switch $TYPE
|
||||||
|
case CREATE
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[РАБОТА] "; set_color white; echo -n "Создан репозиторий: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case DELETE_FILE
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[РАБОТА] "; set_color white; echo -n "Удалён файл: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case DELETE_CATALOG
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[РАБОТА] "; set_color white; echo -n "Удалён пустой каталог: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case DELETE_NOT_EMPTY
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[РАБОТА] "; set_color white; echo -n "Не удалён каталог содержащий файлы: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case DELETE_FORCE
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[РАБОТА] "; set_color white; echo -n "Удалён репозиторий: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case WORKPATH
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[РАБОТА] "; set_color white; echo -n "Установлен каталог для выполнения: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case IMPORT
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[РАБОТА] "; set_color white; echo -n "Файл импортирован: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case IMPORT_FORCE
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[РАБОТА] "; set_color white; echo -n "Грубо импортирован файл (-f --force): "; set_color cyan; echo "$PARAM1"
|
||||||
|
case IMPORT_END
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[РАБОТА] "; set_color white; echo "Импортирование завершено"
|
||||||
|
case OPTION_SET
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[РАБОТА] "; set_color white; echo -n "Установлена опция "; set_color cyan; echo -n "$PARAM1 "; echo -n "в репозитории "; set_color cyan; echo "$PARAM2"
|
||||||
|
end
|
||||||
|
case ERROR
|
||||||
|
switch $TYPE
|
||||||
|
case REPO_EXIST
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color red; echo -n "[ОШИБКА] "; set_color white; echo -n "Репозиторий уже существует: "; set_color cyan; echo "$PARAM1"
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brmagenta; echo -n "[ПОМОЩЬ] "; set_color white; echo "Удалите репозиторий (-d --delete) или используйте (-f --force)"
|
||||||
|
case WRONG_NAME
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color red; echo -n "[ОШИБКА] "; set_color white; echo -n "Неправильное название репозитория: "; set_color cyan; echo "$PARAM1"
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brmagenta; echo -n "[ПОМОЩЬ] "; set_color white; echo "Шаблон обработки: /^[A-z_1-9]+\$/"
|
||||||
|
case REPO_NOT_FOUND
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color red; echo -n "[ОШИБКА] "; set_color white; echo -n "Не найден репозиторий: "; set_color cyan; echo "$PARAM1"
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brmagenta; echo -n "[ПОМОЩЬ] "; set_color white; echo "Проверьте существование, права доступа и введённые данные"
|
||||||
|
case IMPORT_NOT_SET
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color red; echo -n "[ОШИБКА] "; set_color white; echo "Не задан каталог для импорта файлов"
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brmagenta; echo -n "[ПОМОЩЬ] "; set_color white; echo "Пример: gitler my_repo -i ~/examples"
|
||||||
|
case IMPORT_NOT_FOUND
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color red; echo -n "[ОШИБКА] "; set_color white; echo -n "Не найден каталог для импорта файлов: "; set_color cyan; echo "$PARAM1"
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brmagenta; echo -n "[ПОМОЩЬ] "; set_color white; echo "Проверьте существование, права доступа и введённые данные"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
function help -d "Show the manual for working with the program"
|
||||||
|
echo
|
||||||
|
set_color yellow; echo -n " Template: "; set_color white; echo -n " gitler "; set_color brmagenta; echo "[repository] [flags]"
|
||||||
|
echo
|
||||||
|
set_color green; echo -n " -c --create "; set_color brcyan; echo -n ": "; set_color white; echo "Create repository"
|
||||||
|
set_color green; echo -n " -d --delete "; set_color brcyan; echo -n ": "; set_color white; echo "Delete repository"
|
||||||
|
set_color green; echo -n " -f --force "; set_color brcyan; echo -n ": "; set_color white; echo "Overwrite or ignore as needed"
|
||||||
|
set_color green; echo -n " -p --path "; set_color brmagenta; echo -n "[path] "; set_color brcyan; echo -n ": "; set_color white; echo "Path to the parent directory of the repository"
|
||||||
|
set_color green; echo -n " -i --import "; set_color brmagenta; echo -n "[path] "; set_color brcyan; echo -n ": "; set_color white; echo "Directory path for import"
|
||||||
|
echo
|
||||||
|
set_color green; echo -n " -h --help "; set_color brcyan; echo -n ": "; set_color white; echo "General information (this text)"
|
||||||
|
set_color green; echo -n " -r --rules "; set_color brcyan; echo -n ": "; set_color white; echo "Parameter processing rules"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
function rules -d "Displaying rules for processing parameters"
|
||||||
|
echo
|
||||||
|
set_color brmagenta; echo -n " [repository] "; set_color brcyan; echo -n ": "; set_color yellow; echo "/^[A-z_1-9]+\$/"
|
||||||
|
set_color brmagenta; echo -n " [flags] "; set_color brcyan; echo -n ": "; set_color yellow; echo "/^-[a-z1-9]?\s*[A-z_1-9]*\$/"
|
||||||
|
set_color brmagenta; echo -n " [path] "; set_color brcyan; echo -n ": "; set_color yellow; echo "/^[\/?[A-z_1-9]+]*\$/"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
function print -a CATEGORY TYPE PARAM1 PARAM2 -d "Display messages by category"
|
||||||
|
switch $CATEGORY
|
||||||
|
case REQUEST
|
||||||
|
switch $TYPE
|
||||||
|
case IMPORT_REQUEST_INFO
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color blue; echo -n "[TASK] "; set_color white; echo -n "Import file: "; set_color cyan; echo -n "$PARAM1 "; set_color white; echo "?"
|
||||||
|
case IMPORT_REQUEST
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brcyan; echo -n "[DECIDE] "; set_color white; echo -n "YES (!y) : NO (n) : SKIP (s) : ALL (a) "; set_color white; echo "> "
|
||||||
|
case DELETE_REQUEST_INFO
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color blue; echo -n "[TASK] "; set_color white; echo -n "Delete a file: "; set_color cyan; echo -n "$PARAM1 "; set_color white; echo "?"
|
||||||
|
case DELETE_REQUEST
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brcyan; echo -n "[DECIDE] "; set_color white; echo -n "YES (!y) : NO (n) : SKIP (s) : ALL (a) "; set_color white; echo "> "
|
||||||
|
end
|
||||||
|
case INFO
|
||||||
|
switch $TYPE
|
||||||
|
case CREATE
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[WORK] "; set_color white; echo -n "Repository created: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case DELETE_FILE
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[WORK] "; set_color white; echo -n "File deleted: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case DELETE_CATALOG
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[WORK] "; set_color white; echo -n "Removed empty directory: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case DELETE_NOT_EMPTY
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[WORK] "; set_color white; echo -n "The directory is not deleted because it contains files: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case DELETE_FORCE
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[WORK] "; set_color white; echo -n "Removed repository: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case WORKPATH
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[WORK] "; set_color white; echo -n "Installed execution directory: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case IMPORT
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[WORK] "; set_color white; echo -n "File imported: "; set_color cyan; echo "$PARAM1"
|
||||||
|
case IMPORT_FORCE
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[WORK] "; set_color white; echo -n "Hard imported file (-f --force): "; set_color cyan; echo "$PARAM1"
|
||||||
|
case IMPORT_END
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[WORK] "; set_color white; echo "Import completed"
|
||||||
|
case OPTION_SET
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color green; echo -n "[WORK] "; set_color white; echo -n "Option installed "; set_color cyan; echo -n "$PARAM1 "; echo -n "in repository "; set_color cyan; echo "$PARAM2"
|
||||||
|
end
|
||||||
|
case ERROR
|
||||||
|
switch $TYPE
|
||||||
|
case REPO_EXIST
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color red; echo -n "[ERROR] "; set_color white; echo -n "Repository already exists: "; set_color cyan; echo "$PARAM1"
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brmagenta; echo -n "[HELP] "; set_color white; echo "Delete the repository (-d --delete) or use (-f --force)"
|
||||||
|
case WRONG_NAME
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color red; echo -n "[ERROR] "; set_color white; echo -n "Incorrect repository name: "; set_color cyan; echo "$PARAM1"
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brmagenta; echo -n "[HELP] "; set_color white; echo "Processing template: /^[A-z_1-9]+\$/"
|
||||||
|
case REPO_NOT_FOUND
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color red; echo -n "[ERROR] "; set_color white; echo -n "Repository not found: "; set_color cyan; echo "$PARAM1"
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brmagenta; echo -n "[HELP] "; set_color white; echo "Check existence, access rights and entered data"
|
||||||
|
case IMPORT_NOT_SET
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color red; echo -n "[ERROR] "; set_color white; echo "Import directory not specified"
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brmagenta; echo -n "[HELP] "; set_color white; echo "Sample: gitler my_repo -i ~/examples"
|
||||||
|
case IMPORT_NOT_FOUND
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color red; echo -n "[ERROR] "; set_color white; echo -n "Directory to import files not found: "; set_color cyan; echo "$PARAM1"
|
||||||
|
set_color yellow; echo -n "[GITLER] "; set_color brmagenta; echo -n "[HELP] "; set_color white; echo "Check existence, access rights and entered data"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if test (count $argv) = 0
|
||||||
|
help
|
||||||
|
end
|
||||||
|
|
||||||
|
# Сохраняю изначальное количество аргументов
|
||||||
|
# При обработке аргумента вычитается единица
|
||||||
|
# Таким образом я определяю порядок аргументов
|
||||||
|
set ARGV_AMOUNT_ORIGINAL (count $argv)
|
||||||
|
set ARGV_AMOUNT $ARGV_AMOUNT_ORIGINAL
|
||||||
|
|
||||||
|
# Обработка параметров запуска
|
||||||
|
getopts $argv | \
|
||||||
|
while read -l key value
|
||||||
|
# Первый параметр
|
||||||
|
if test "$ARGV_AMOUNT" = "$ARGV_AMOUNT_ORIGINAL"
|
||||||
|
if test "$key" = _
|
||||||
|
if test (string match -r '^[A-z_1-9]+$' $value)
|
||||||
|
set NAME $value
|
||||||
|
else
|
||||||
|
print ERROR WRONG_NAME $value
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
else
|
||||||
|
help
|
||||||
|
end
|
||||||
|
# Флаги
|
||||||
|
else
|
||||||
|
switch $key
|
||||||
|
case _
|
||||||
|
set -a OPTIONS $value
|
||||||
|
case h help
|
||||||
|
help
|
||||||
|
case r rules
|
||||||
|
rules
|
||||||
|
case f force
|
||||||
|
set FLAG_FORCE 1
|
||||||
|
case c create
|
||||||
|
set FLAG_CREATE 1
|
||||||
|
case d delete
|
||||||
|
set FLAG_DELETE 1
|
||||||
|
case p path
|
||||||
|
set WORKPATH $value
|
||||||
|
case i import
|
||||||
|
if test -n $value -a true != $value
|
||||||
|
set IMPORT $value
|
||||||
|
else
|
||||||
|
print ERROR IMPORT_NOT_SET $value
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
set ARGV_AMOUNT (math $ARGV_AMOUNT - 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Инициализация рабочей директории, если не был передан параметр
|
||||||
|
if test -z "$WORKPATH"
|
||||||
|
set fish_prompt_pwd_dir_length 0
|
||||||
|
set WORKPATH (prompt_pwd)
|
||||||
|
print INFO WORKPATH $WORKPATH
|
||||||
|
end
|
||||||
|
|
||||||
|
# [ФУНКЦИЯ] Создание репозитория (-c --create)
|
||||||
|
if test "$FLAG_CREATE" = "1"
|
||||||
|
if test -d "$WORKPATH/$NAME" -a ! "$FLAG_FORCE" = "1"
|
||||||
|
print ERROR REPO_EXIST "$WORKPATH/$NAME"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
# Создание директории репозитория
|
||||||
|
mkdir -p "$WORKPATH/$NAME"
|
||||||
|
|
||||||
|
# Сохранение текущей рабочей директории
|
||||||
|
set fish_prompt_pwd_dir_length 0
|
||||||
|
set OLD_WORKPATH (prompt_pwd)
|
||||||
|
|
||||||
|
# Переход в директорию репозитория
|
||||||
|
cd "$WORKPATH/$NAME"
|
||||||
|
|
||||||
|
# Создание репозитория
|
||||||
|
git --bare init > /dev/null
|
||||||
|
|
||||||
|
# Возврат в стартовую рабочую директорию
|
||||||
|
cd $OLD_WORKPATH
|
||||||
|
print INFO CREATE $NAME
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# [ФУНКЦИЯ] Установка опций
|
||||||
|
if test -n "$OPTIONS"
|
||||||
|
# Проверяет существование репозитория
|
||||||
|
if test ! -d "$WORKPATH/$NAME"
|
||||||
|
print ERROR REPO_NOT_FOUND "$WORKPATH/$NAME"
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
|
||||||
|
# Перебор всех полученных опций
|
||||||
|
for OPTION in $OPTIONS
|
||||||
|
# Разделение строки на опции
|
||||||
|
echo $OPTION | read OPTION_KEY OPTION_VALUE
|
||||||
|
|
||||||
|
# Добавление опции
|
||||||
|
sudo git -C "$WORKPATH/$NAME" config --local $OPTION_KEY $OPTION_VALUE
|
||||||
|
sudo git update-server-info
|
||||||
|
|
||||||
|
print INFO OPTION_SET $OPTION "$WORKPATH/$NAME"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# [ФУНКЦИЯ] Импортирование (-i --import [path])
|
||||||
|
if test -n "$IMPORT"
|
||||||
|
# Проверяет существование репозитория
|
||||||
|
if test ! -d "$WORKPATH/$NAME"
|
||||||
|
print ERROR REPO_NOT_FOUND "$WORKPATH/$NAME"
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
|
||||||
|
# Проверяет существование каталога для импорта
|
||||||
|
if test ! -d $IMPORT
|
||||||
|
print ERROR IMPORT_NOT_FOUND $IMPORT
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
|
||||||
|
# Активация грубого импортирования
|
||||||
|
if test "$FLAG_FORCE" = "1"
|
||||||
|
set IMPORT_ALL 1
|
||||||
|
end
|
||||||
|
|
||||||
|
# Сохранение текущей рабочей директории
|
||||||
|
set fish_prompt_pwd_dir_length 0
|
||||||
|
set OLD_WORKPATH (prompt_pwd)
|
||||||
|
|
||||||
|
# Переход в импортируемую директорию
|
||||||
|
cd "$IMPORT"
|
||||||
|
|
||||||
|
# Поиск всех файлов для импортирования и обработка каждого в цикле
|
||||||
|
find ./* |
|
||||||
|
while read -al FILE
|
||||||
|
# Проверка активации "импортировать всё"
|
||||||
|
if test "$IMPORT_ALL" != "1"
|
||||||
|
# Запрос на подтверждение импортирования
|
||||||
|
print REQUEST IMPORT_REQUEST_INFO $FILE
|
||||||
|
set RESPONSE (read -n 1 -p "print REQUEST IMPORT_REQUEST $FILE")
|
||||||
|
bind -e y
|
||||||
|
bind -e n
|
||||||
|
bind -e s
|
||||||
|
bind -e a
|
||||||
|
end
|
||||||
|
|
||||||
|
# Обработка ответа: "пропустить"
|
||||||
|
if test (string match -ri 'n' "$RESPONSE")
|
||||||
|
continue
|
||||||
|
# Обработка ответа: "импортировать всё"
|
||||||
|
else if test (string match -ari '^all$|^a$' "$RESPONSE")
|
||||||
|
set IMPORT_ALL 1
|
||||||
|
# Обработка ответа: "пропустить всё"
|
||||||
|
else if test (string match -ari '^skip$|^s$' "$RESPONSE")
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
# Импортирование
|
||||||
|
cp -a "$FILE" "$WORKPATH/$NAME/$FILE"
|
||||||
|
print INFO IMPORT $FILE
|
||||||
|
end
|
||||||
|
|
||||||
|
# Возврат в стартовую рабочую директорию
|
||||||
|
cd $OLD_WORKPATH
|
||||||
|
|
||||||
|
# Уведомление об окончании импортирования
|
||||||
|
print INFO IMPORT_END $FILE
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# [ФУНКЦИЯ] Удаление репозитория (-d --delete)
|
||||||
|
if test "$FLAG_DELETE" = "1"
|
||||||
|
# Проверяет существование репозитория
|
||||||
|
if test ! -d "$WORKPATH/$NAME"
|
||||||
|
print ERROR REPO_NOT_FOUND "$WORKPATH/$NAME"
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
# Сценарий грубого удаления
|
||||||
|
if test "$FLAG_FORCE" = "1"
|
||||||
|
rm -rf "$WORKPATH/$NAME"
|
||||||
|
print INFO DELETE_FORCE $NAME
|
||||||
|
# Сценарий обычного удаления
|
||||||
|
else
|
||||||
|
# Поиск всех файлов для удаления и обработка каждого в цикле
|
||||||
|
find $WORKPATH/$NAME -type f |
|
||||||
|
while read -al FILE
|
||||||
|
# Проверка активации "удалить всё"
|
||||||
|
if test "$DELETE_ALL" != "1"
|
||||||
|
# Запрос на подтверждение удаления
|
||||||
|
print REQUEST DELETE_REQUEST_INFO $FILE
|
||||||
|
set RESPONSE (read -n 1 -p "print REQUEST DELETE_REQUEST $FILE")
|
||||||
|
end
|
||||||
|
|
||||||
|
# Обработка ответа: "пропустить"
|
||||||
|
if test (string match -ri 'n' "$RESPONSE")
|
||||||
|
continue
|
||||||
|
# Обработка ответа: "удалить всё"
|
||||||
|
else if test (string match -ari '^all$|^a$' "$RESPONSE")
|
||||||
|
set DELETE_ALL 1
|
||||||
|
# Обработка ответа: "пропустить всё"
|
||||||
|
else if test (string match -ari '^skip$|^s$' "$RESPONSE")
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
# Удаление
|
||||||
|
rm -f "$FILE"
|
||||||
|
print INFO DELETE_FILE $FILE
|
||||||
|
end
|
||||||
|
# Удаление оставшихся пустых каталогов
|
||||||
|
find $WORKPATH/$NAME -type d | sort -r |
|
||||||
|
while read -al FILE
|
||||||
|
# Проверка на то, что не активирован пропуск удаления всего
|
||||||
|
if test ! (string match -ari '^skip$|^s$' "$RESPONSE")
|
||||||
|
# Если получена ошибка (каталог не пустой)
|
||||||
|
if test (cat (rm -d "$FILE" 2>| psub))
|
||||||
|
print INFO DELETE_NOT_EMPTY $FILE
|
||||||
|
# Если ошибки нет и удаление прошло успешно
|
||||||
|
else
|
||||||
|
print INFO DELETE_CATALOG $FILE
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# sudo useradd $OWNER
|
||||||
|
# sudo chown -R www-data:www-data /var/www/git/projects/$REPOSITORY
|
||||||
|
# sudo chmod -R 755 /var/www/git/projects/$REPOSITORY
|
||||||
|
|
||||||
|
exit 0
|
Loading…
Reference in New Issue