-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgit-repo
93 lines (75 loc) · 2.92 KB
/
git-repo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#! /usr/bin/env sh
# shellcheck disable=SC3045,SC3037
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Create Repositories GitHub
# author: VlaSard
# github: https://github.com/VlaSard
# date: 2022.08.29
# git-repo
#
# DESCRIPTION:
# Creates an external repository on github and push local repository.
#
# REVIEWS:
#
# USAGE:
# git-repo
#
# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# -=-=-=-=-=-=-= VARIABLES =-=-=-=-=-=-=-
CurrentDir=${PWD##*/}
TokenFile=PATH/TO/TOKEN/FILE
UserFile=PATH/TO/USER/GIT/FILE
DescFile=RepoDesc
FontNormal="\033[0m"
FontRed="\033[31m"
# -=-=-=-=-=-=-= MESSAGES =-=-=-=-=-=-=-=-
msg_RepoName="New repo name (enter for ${PWD##*/}): "
msg_GitUserName="Git Username (enter for github): "
msg_RepoDescription="Repo Description: "
msg_TokenGit="Personal access token: "
msg_NoTokenGit="No token specified or no token file! Enter access token."
# -=-=-=-=-=-=-=-= MAIN =-=-=-=-=-=-=-=-
# получаем данные для работы с github
# имя репозитория, по умолчанию имя директории проекта
read -r -p "${msg_RepoName}" GitRepoName
GitRepoName=${GitRepoName:-${CurrentDir}}
# имя пользователя
read -r -p "${msg_GitUserName}" GitUserName
if [ -z "${GitUserName}" ]; then
if [ -f "${UserFile}" ]; then
GitUserName=$(cat "${UserFile}")
else
GitUserName=${GitUserName:-${USER}}
fi
fi
# описание репозитория, если есть файл описания прочитает из файла
# или передаст пустое
read -r -p "${msg_RepoDescription}" RepoDescription
if [ -z "${RepoDescription}" ]; then
if [ -f RepoDesc ]; then
RepoDescription=${RepoDescription:-$(cat "${DescFile}")}
else
RepoDescription=""
fi
fi
# ключ доступа, если не указан попытается прочитать из файла
while [ -z "${TokenGit}" ]; do
read -r -p "${msg_TokenGit}" TokenGit
if [ -z "${TokenGit}" ]; then
if [ -f "${TokenFile}" ]; then
TokenGit=${TokenGit:-$(cat "${TokenFile}")}
else
echo -e "${FontRed}${msg_NoTokenGit}${FontNormal}"
fi
fi
done
# упаковываем параметры git.api
GitRepoParams="{\"name\":\"${GitRepoName}\", \"description\":\"${RepoDescription}\", \"private\":false, \"has_issues\":true, \"has_downloads\":true, \"has_wiki\":false}"
# создаем внешний репозиторий
curl -u "${GitUserName}":"${TokenGit}" https://api.github.com/user/repos -d "${GitRepoParams}"
# проеверяем доступность локального репозитория
# если не существует то создаем
[ -d .git ] || git init
# добавляем ссылку на внешний репозиторий
git remote add origin https://github.com/"${GitUserName}"/"${GitRepoName}".git