-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgit-auto.sh
More file actions
executable file
·85 lines (74 loc) · 2.78 KB
/
Copy pathgit-auto.sh
File metadata and controls
executable file
·85 lines (74 loc) · 2.78 KB
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
#!/usr/bin/env bash
# Auto Script for GitHub Setup and Push
#
# Public commands:
# ./g.sh
# ./g.sh new
# ./g.sh update
# ./g.sh menu
#
# This file is the central dispatcher. The Bash modules in src/ contain the
# implementation and use only commands already required by the public tool.
set -uo pipefail
# A parent shell must not be able to redirect this run to another repository,
# index, object store, or commit identity.
unset GIT_DIR GIT_WORK_TREE GIT_INDEX_FILE GIT_COMMON_DIR GIT_OBJECT_DIRECTORY \
GIT_ALTERNATE_OBJECT_DIRECTORIES GIT_NAMESPACE GIT_PREFIX \
GIT_CEILING_DIRECTORIES GIT_DISCOVERY_ACROSS_FILESYSTEM \
GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE \
GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_COMMITTER_DATE \
GIT_CONFIG_PARAMETERS GIT_CONFIG_COUNT
# Never hand terminal control to a user-configured Git pager. Commands that
# directly display lists also use --no-pager as a local safeguard.
GIT_PAGER=cat
export GIT_PAGER
LANGUAGE_FIELD_PREFIX="language:"
THEME_FIELD_PREFIX="display-theme:"
SSH_BLOCK_PREFIX="github-auto"
INITIAL_COMMIT_MESSAGE="Initial commit"
DEFAULT_COMMIT_MESSAGE="Update"
RELEASE_PREFIX="Release "
UI_LANGUAGE="en"
ENGINE_SOURCE="${BASH_SOURCE[0]}"
ENGINE_DIRECTORY="$({ cd "$(dirname "$ENGINE_SOURCE")" 2>/dev/null && pwd -P; } || exit 1)"
ENGINE_NAME="$(basename "$ENGINE_SOURCE")"
ENGINE_PATH="$ENGINE_DIRECTORY/$ENGINE_NAME"
PRIVATE_DIRECTORY="${GIT_AUTO_PRIVATE_DIRECTORY:-$ENGINE_DIRECTORY/private}"
PRIVATE_CONFIG_FILE="$PRIVATE_DIRECTORY/config.txt"
OPTION_CONFIG_FILE="${GIT_AUTO_OPTION_FILE:-$ENGINE_DIRECTORY/src/option.txt}"
if [ -n "${GIT_AUTO_PROJECT_ROOT:-}" ]; then
SCRIPT_DIRECTORY="$({ cd "$GIT_AUTO_PROJECT_ROOT" 2>/dev/null && pwd -P; } || exit 1)"
else
SCRIPT_DIRECTORY="$({ pwd -P; } || exit 1)"
fi
SCRIPT_NAME="${GIT_AUTO_LAUNCHER_NAME:-$ENGINE_NAME}"
RUNNING_FROM_LAUNCHER="${GIT_AUTO_LAUNCHER_ACTIVE:-0}"
GIT_AUTO_MODULES=(
"00-core.sh"
"10-ssh.sh"
"20-repository.sh"
"25-safety.sh"
"30-workflow.sh"
"40-history.sh"
"50-update.sh"
"60-menu.sh"
)
for GIT_AUTO_MODULE in "${GIT_AUTO_MODULES[@]}"; do
if [ ! -r "$ENGINE_DIRECTORY/src/$GIT_AUTO_MODULE" ]; then
printf '%s\n' \
"[Error] Required program module is missing: $ENGINE_DIRECTORY/src/$GIT_AUTO_MODULE" \
"[错误] 缺少程序运行所需的模块:$ENGINE_DIRECTORY/src/$GIT_AUTO_MODULE" >&2
exit 1
fi
# shellcheck source=/dev/null
source "$ENGINE_DIRECTORY/src/$GIT_AUTO_MODULE" || exit 1
done
unset GIT_AUTO_MODULE GIT_AUTO_MODULES
if [ "${GITHUB_AUTO_TESTING:-0}" != "1" ] &&
{ [ "$RUNNING_FROM_LAUNCHER" != "1" ] ||
[ "$SCRIPT_DIRECTORY" -ef "$ENGINE_DIRECTORY" ]; }; then
write_private_launcher >/dev/null 2>&1 || true
fi
if [ "${GITHUB_AUTO_TESTING:-0}" != "1" ] && [ "${BASH_SOURCE[0]}" = "$0" ]; then
main "$@"
fi