2022-08-14 05:29:07 +02:00
#!/bin/bash
function getDefaultConfiguration( ) {
2022-08-14 13:04:03 +02:00
# SOSGIT_CONFIGVERSION=5
2022-08-14 05:29:07 +02:00
# # sos-git configuration\n
# # this is the default configuration, you\n
# # may make changes in sos-git.conf.d\n
# # since they may get overriten in a future\n
# # update.\n
# \n
# # Commands\n
# ## Shell\n
# ## DEFAULT: /bin/sh\n
# ## You may want to set this to /bin/bash\n
# #SOSGIT_SHELL=/bin/sh\n
2022-08-14 13:04:03 +02:00
# \n
# ## Shell arguments\n
# ## DEFAULT:\n
# ## Here you can define your custom shell\n
# ## arguments, like another rcfile.\n
# #SOSGIT_SHELLARGS=\n
2022-08-14 05:29:07 +02:00
# #\n
# ## Make\n
# ## DEFAULT: /bin/make\n
# #SOSGIT_MAKE=/bin/make\n
# #\n
# ## Editor\n
# ## DEFAULT: /bin/nano\n
# ## You may want to set this to /bin/vi\n
# ## or /bin/vim or any other editor.\n
# #SOSGIT_EDITOR=/bin/nano\n
# #\n
# ## cURL\n
# ## DEFAULT: /bin/curl\n
# #SOSGIT_CURL=/bin/curl\n
# #\n
# ## git\n
# ## DEFAULT: /bin/git\n
# #SOSGIT_GIT=/bin/git\n
# #\n
# ## ls\n
# ## DEFAULT: /bin/ls\n
# ## The ls command must be from GNU\n
# ## coreutils, otherwise it may not\n
# ## work correctly with sos-git.\n
# #SOSGIT_LS=/bin/ls\n
2022-08-14 12:20:56 +02:00
# #\n
# ## rm\n
# ## DEFAULT: /bin/rm\n
# ## The rm command must be from GNU\n
# ## coreutils, otherwise it may not\n
# ## work correctly with sos-git.\n
# #SOSGIT_RM=/bin/rm\n
# #\n
# ## mkdir\n
# ## DEFAULT: /bin/mkdir\n
# ## The mkdir command must be from\n
# ## GNU coreutils, otherwise it may\n
# ## not work correctly with sos-git.\n
# #SOSGIT_MKDIR=/bin/mkdir\n
# #\n
# ## mv\n
# ## DEFAULT: /bin/mv
# ## The mv command must be from GNU\n
# ## coreutils, otherwise it may not\n
# ## work correctly with sos-git.\n
# #SOSGIT_MV=/bin/mv\n
# #\n
# ## chmod\n
# ## DEFAULT: /bin/chmod
# ## The chmod command must be from\n
# ## GNU coreutils, otherwise it may\n
# ## not work correctly with sos-git.\n
# #SOSGIT_CHMOD=/bin/chmod\n
2022-08-14 05:29:07 +02:00
# \n
# # Title\n
# ## Suppress\n
# ## DEFAULT: false\n
# ## This hides the branding at\n
# ## startup completely.\n
# #SOSGIT_TITLE_SUPPRESS=false\n
# #\n
# ## Text\n
# ## DEFAULT: false\n
# ## This prints the branding\n
# ## at startup in normal text.\n
# #SOSGIT_TITLE_TEXT=false\n
# \n
# # Temp\n
# # DEFAULT: /dev/shm\n
# # The temporary directory.\n
# # NO TRAILING SLASH AT THE END!\n
# #SOSGIT_TMP=/dev/shm\n
# \n
# # Repository save directory\n
# # DEFAULT: \$HOME/.sostools/git/repos\n
# # The directory where your downloaded\n
# # repositories are stored.\n
# # NO TRAILING SLASH AT THE END!\n
# # NO ~, USE \$HOME INSTEAD!\n
# #SOSGIT_REPOS=\$HOME/.sostools/git/repos\n
# \n
# # Internet\n
# ## Update URL\n
# ## DEFAULT: https://staropensource.ddns.net\n
# ## /git/staropensource/sostools\n
# ## /raw/branch/master/sos-git.sh
# ## The update URL, from where sos-git gets\n
# ## updates. The save location will be\n
# ## determined from the command line arguments.\n
# #SOSGIT_UPDATEURL=https://staropensource.ddns.net/git/staropensource/sostools/raw/branch/develop/sos-git.sh\n
# #\n
# ## Request string\n
# ## DEFAULT: https://staropensource.ddns.net\n
# ## /git/%s/%s\n
# ## String is used for making requests and\n
# ## downloading repositories. First %s is user,\n
# ## second %s is the repository.
# ## NO TRAILING SLASH AT THE END!\n
# #SOSGIT_REQUESTSTRING=https://staropensource.ddns.net/git/%s/%s\n
# #\n
# ## Remote request string\n
# ## DEFAULT: https://%s:%s@staropensource.ddns.net/%s/%s
# ## String is used for remoteauth, that updates\n
# ## the remote string in git. First %s is username,\n
# ## second %s is password, third %s is user and\n
# ## fourth %s is the repository.\n
# ## NO TRAILING SLASH AT THE END!\n
2022-08-14 12:20:56 +02:00
# #SOSGIT_REQUESTSTRING_REMOTE=https://%s:%s@staropensource.ddns.net/%s/%s\n
# \n
# # No root warning\n
# ## DEFAULT: false\n
# ## Disables the root warning\n
# #SOSGIT_NOROOTWARNING=false\n
2022-08-14 13:04:03 +02:00
export "SOSGIT_EXITSTRING=SOSGIT_CONFIGVERSION=5\n# sos-git configuration\n# this is the default configuration, you\n# may make changes in sos-git.conf.d\n# since they may get overriten in a future\n# update.\n\n# Commands\n## Shell\n## DEFAULT: /bin/sh\n## You may want to set this to /bin/bash\n#SOSGIT_SHELL=/bin/sh\n#\n## Shell arguments\n## DEFAULT:\n## Here you can define your custom shell\n## arguments, like another rcfile.\n#SOSGIT_SHELLARGS=\n#\n## Make\n## DEFAULT: /bin/make\n#SOSGIT_MAKE=/bin/make\n#\n## Editor\n## DEFAULT: /bin/nano\n## You may want to set this to /bin/vi\n## or /bin/vim or any other editor.\n#SOSGIT_EDITOR=/bin/nano\n#\n## cURL\n## DEFAULT: /bin/curl\n#SOSGIT_CURL=/bin/curl\n#\n## git\n## DEFAULT: /bin/git\n#SOSGIT_GIT=/bin/git\n#\n## ls\n## DEFAULT: /bin/ls\n## The ls command must be from GNU\n## coreutils, otherwise it may not\n## work correctly with sos-git.\n#SOSGIT_LS=/bin/ls\n#\n## rm\n## DEFAULT: /bin/rm\n## The rm command must be from GNU\n## coreutils, otherwise it may not\n## work correctly with sos-git.\n#SOSGIT_RM=/bin/rm\n#\n## mkdir\n## DEFAULT: /bin/mkdir\n## The mkdir command must be from\n## GNU coreutils, otherwise it may\n## not work correctly with sos-git.\n#SOSGIT_MKDIR=/bin/mkdir\n#\n## mv\n## DEFAULT: /bin/mv\n## The mv command must be from GNU\n## coreutils, otherwise it may not\n## work correctly with sos-git.\n#SOSGIT_MV=/bin/mv\n#\n## chmod\n## DEFAULT: /bin/chmod\n## The chmod command must be from\n## GNU coreutils, otherwise it may\n## not work correctly with sos-git.\n#SOSGIT_CHMOD=/bin/chmod\n\n# Title\n## Suppress\n## DEFAULT: false\n## This hides the branding at\n## startup completely.\n#SOSGIT_TITLE_SUPPRESS=false\n#\n## Text\n## DEFAULT: false\n## This prints the branding\n## at startup in normal text.\n#SOSGIT_TITLE_TEXT=false\n\n# Temp\n# DEFAULT: /dev/shm\n# The temporary directory.\n# NO TRAILING SLASH AT THE END!\n#SOSGIT_TMP=/dev/shm\n\n# Repository save directory\n# DEFAULT: \$HOME/.sostools/git/repos\n# The directory where your downloaded\n# repositories are stored.\n# NO TRAILING SLASH AT THE END!\n# NO ~, USE \$HOME INSTEAD!\n#SOSGIT_REPOS=\$HOME/.sostools/git/repos\n\n# Internet\n## Update URL\n## DEFAULT: https://staropensource.ddns.net\n## /git/staropensource/sostools\n## /raw/branch/master/sos-git.sh\n## The update URL, from where sos-git gets\n## updates. The save location will be\n## determined from the command line arguments.\n#SOSGIT_UPDATEURL=https://staropensource.ddns.net/git/staropensource/sostools/raw/branch/master/sos-git.sh\n#\n## Request string\n## DEFAULT: https://staropensource.ddns.net\n## /git/%s/%s\n## String is used for making requests and\n## downloading repositories. First %s is user,\n## second %s is the repository.\n## NO TRAILING SLASH AT THE END!\n#SOSGIT_REQUESTSTRING=https://staropensource.ddns.net/git/%s/%s\n#\n## Remote request string\n## DEFAULT: https://%s:%s@staropensource.ddns.net/%s/%s## String is used for remoteauth, that updates\n## the remote string in git. First %s is username,\n## second %s is password, third %s is user and\n## fourth %s is the repository.\n## NO TRAILING SLASH AT THE END!\n#SOSGIT_REQUESTSTRING_REMOTE=https://%s:%s@staropensource.ddns.net/%s/%s\n# No root warning\n## DEFAULT: false\n## Disables the root warning\n#SOSGIT_NOROOTWARNING=false\n"
2022-08-14 05:29:07 +02:00
return "0"
}
2022-08-14 12:20:56 +02:00
function loadDefaultConfiguration( ) {
2022-08-14 13:04:03 +02:00
export "SOSGIT_CONFIGVERSION=5"
2022-08-14 12:20:56 +02:00
export "SOSGIT_SETUP_USER=false"
export "SOSGIT_SETUP_SYSTEM=false"
export "SOSGIT_SHELL=/bin/sh"
export "SOSGIT_MAKE=/bin/make"
export "SOSGIT_EDITOR=/bin/nano"
export "SOSGIT_CURL=/bin/curl"
export "SOSGIT_GIT=/bin/git"
export "SOSGIT_LS=/bin/ls"
export "SOSGIT_RM=/bin/rm"
export "SOSGIT_MKDIR=/bin/mkdir"
export "SOSGIT_CHMOD=/bin/chmod"
export "SOSGIT_TITLE_SUPPRESS=false"
export "SOSGIT_TITLE_TEXT=false"
export "SOSGIT_TMP=/dev/shm"
export " SOSGIT_REPOS= $HOME /.sostools/git/repos "
export "SOSGIT_UPDATEURL=https://staropensource.ddns.net/git/staropensource/sostools/raw/branch/develop/sos-git.sh"
export "SOSGIT_REQUESTSTRING=https://staropensource.ddns.net/git/%s/%s"
export "SOSGIT_REQUESTSTRING_REMOTE=https://%s:%s@staropensource.ddns.net/git/%s/%s"
export "SOSGIT_NOROOTWARNING=false"
}
function loadSystemConfigurationMigrationError( ) {
echo "Your system configuration file is too old, but can't be reset."
# echo "Please update all configuration files to the new version,"
# echo "if you still want to use them."
echo ""
echo "If you want to ignore loading the system configuration,"
echo " create a empty file at $HOME /.sostools/git/nosysconf "
exit "249"
}
function loadSystemConfiguration( ) {
if [ -f " $HOME /.sostools/git/nosysconf " ] || [ -d " $HOME /.sostools/git/nosysconf " ] ; then
return
else
if [ -f "/etc/sostools/git/sos-git.conf" ] ; then
export " SOSGIT_EXITSTRING= $SOSGIT_CONFIGVERSION "
source "/etc/sostools/git/sos-git.conf"
if [ ! " $SOSGIT_CONFIGVERSION " = = " $SOSGIT_EXITSTRING " ] ; then
if [ " $( whoami) " = = "root" ] ; then
$SOSGIT_RM -rf "/etc/sostools/git/sos-git.conf.bak" "/etc/sostools/git/sos-git.conf.d.bak" & > /dev/null
$SOSGIT_RM -rf "/etc/sostools/git/sos-git.conf" & > /dev/null
if [ ! " $? " = = "0" ] ; then loadSystemConfigurationMigrationError; fi
if [ -f "/etc/sostools/git/sos-git.conf" ] || [ -d "/etc/sostools/git/sos-git.conf" ] ; then loadSystemConfigurationMigrationError; fi
getDefaultConfiguration
echo -e " $SOSGIT_EXITSTRING " & > /etc/sostools/git/sos-git.conf
echo "Your system configuration file is too old and has been reset."
#echo "A backup is named \"sos-git.conf.bak\" and \"sos-git.conf.d.bak\"."
#echo "Please update all configuration files to the new version,"
#echo "if you still want to use them."
exit "250"
else
loadSystemConfigurationMigrationError
fi
fi
else
getDefaultConfiguration
echo -e " $SOSGIT_EXITSTRING " & > /etc/sostools/git/sos-git.conf
fi
if [ -d "/etc/sostools/git/sos-git.conf.d/" ] ; then
for file in $( /bin/ls -Aw 1 "/etc/sostools/git/sos-git.conf.d/" ) ; do
source " /etc/sostools/git/sos-git.conf.d/ ${ file } "
done
fi
fi
}
function loadUserConfiguration( ) {
if [ -f " $HOME /.sostools/git/sos-git.conf " ] ; then
export " SOSGIT_EXITSTRING= $SOSGIT_CONFIGVERSION "
source " $HOME /.sostools/git/sos-git.conf "
if [ ! " $SOSGIT_CONFIGVERSION " = = " $SOSGIT_EXITSTRING " ] ; then
$SOSGIT_RM " $HOME /.sostools/git/sos-git.conf " & > /dev/null
#$SOSGIT_RM "$HOME/.sostools/git/sos-git.conf.bak" "$HOME/.sostools/git/sos-git.conf.d.bak" &> /dev/null
#$SOSGIT_MV "$HOME/.sostools/git/sos-git.conf" "$HOME/.sostools/git/sos-git.conf.bak" &> /dev/null
#$SOSGIT_MV "$HOME/.sostools/git/sos-git.conf.d" "$HOME/.sostools/git/sos-git.conf.d.bak" &> /dev/null
doUserSetup "force+noinfo"
echo "Your user configuration file is too old and has been reset."
#echo "A backup is named \"sos-git.conf.bak\" and \"sos-git.conf.d.bak\"."
#echo "Please update all configuration files to the new version,"
#echo "if you still want to use them."
exit "251"
fi
fi
if [ -d " $HOME /.sostools/git/sos-git.conf.d/ " ] ; then
for file in $( /bin/ls -Aw 1 " $HOME /.sostools/git/sos-git.conf.d/ " ) ; do
source " $HOME /.sostools/git/sos-git.conf.d/ ${ file } "
done
fi
}
2022-08-14 05:29:07 +02:00
function doUserSetup( ) {
2022-08-14 12:20:56 +02:00
if [ " $1 " = = "force" ] || [ " $1 " = = "force+noinfo" ] || [ ! " $SOSGIT_SETUP_USER " = = "true" ] ; then
if [ " $1 " = = "force+noinfo" ] || [ " $1 " = = "noinfo" ] ; then
echo -n ""
else
echo "Writing user configuration"
fi
$SOSGIT_MKDIR " $HOME /.sostools/git/sos-git.conf.d " -p
2022-08-14 05:29:07 +02:00
getDefaultConfiguration
echo -e " $SOSGIT_EXITSTRING " & > $HOME /.sostools/git/sos-git.conf
echo -e "# DO NOT DELETE OR MODIFY THIS FILE\nSOSGIT_SETUP_USER=true" & > $HOME /.sostools/git/sos-git.conf.d/setup.conf
2022-08-14 12:20:56 +02:00
$SOSGIT_CHMOD "+x" " $HOME /.sostools/git/sos-git.conf " " $HOME /.sostools/git/sos.git.conf.d/* " & > /dev/null
if [ " $1 " = = "force+noinfo" ] || [ " $1 " = = "noinfo" ] ; then
echo -n ""
else
echo "Applying new user configuration"
fi
2022-08-14 05:29:07 +02:00
loadUserConfiguration
fi
}
function doSystemSetup( ) {
2022-08-14 12:20:56 +02:00
if [ " $1 " = = "force" ] || [ " $1 " = = "force+noinfo" ] || [ ! " $SOSGIT_SETUP_SYSTEM " = = "true" ] && [ " $( whoami) " = = "root" ] ; then
if [ " $1 " = = "force+noinfo" ] || [ " $1 " = = "noinfo" ] ; then
echo -n ""
else
echo "Writing system configuration"
fi
$SOSGIT_MKDIR "/etc/sostools/git/sos-git.conf.d" -p
2022-08-14 05:29:07 +02:00
getDefaultConfiguration
echo -e " $SOSGIT_EXITSTRING " & > /etc/sostools/git/sos-git.conf
2022-08-14 12:20:56 +02:00
$SOSGIT_CHMOD "+x" "/etc/sostools/git/sos-git.conf" "/etc/sostools/git/sos.git.conf.d/*" & > /dev/null
2022-08-14 05:29:07 +02:00
echo -e "# DO NOT DELETE OR MODIFY THIS FILE\nSOSGIT_SETUP_SYSTEM=true" & > /etc/sostools/git/sos-git.conf.d/setup.conf
2022-08-14 12:20:56 +02:00
if [ " $1 " = = "force+noinfo" ] || [ " $1 " = = "noinfo" ] ; then
echo -n ""
else
echo "Applying new system configuration"
fi
2022-08-14 05:29:07 +02:00
loadSystemConfiguration
fi
}
function doRepositorySetup( ) {
if [ -d " $SOSGIT_REPOS " ] ; then
return "0"
elif [ -f " $SOSGIT_REPOS " ] ; then
echo " Moving \" $SOSGIT_REPOS \" to \" $SOSGIT_REPOS .bak\" "
2022-08-14 12:20:56 +02:00
$SOSGIT_MV " $SOSGIT_REPOS " " $SOSGIT_REPOS .bak "
2022-08-14 05:29:07 +02:00
echo "Creating repository save directory"
2022-08-14 12:20:56 +02:00
$SOSGIT_MKDIR -p " $SOSGIT_REPOS "
2022-08-14 05:29:07 +02:00
else
echo "Creating repository save directory"
2022-08-14 12:20:56 +02:00
$SOSGIT_MKDIR -p " $SOSGIT_REPOS "
2022-08-14 05:29:07 +02:00
fi
}
loadDefaultConfiguration
loadSystemConfiguration
loadUserConfiguration
doSystemSetup
doUserSetup
doRepositorySetup
function translateRepo( ) {
export " SOSGIT_EXITSTRING= ${ SOSGIT_REPOS } / $1 "
}
function existRepo( ) {
translateRepo " $1 "
if [ -d " $SOSGIT_EXITSTRING " ] ; then
return "0"
else
return "1"
fi
}
function noRepoFound( ) {
echo " ERROR: Repository \" $1 \" does not exist. "
exit 9
}
function formatRequestString( ) {
# dont noodle me that I shouldve used -v var. I tried, it didnt work. yes i did typos to fuck you off.
printf " $SOSGIT_REQUESTSTRING " " $1 " " $2 " & > ${ SOSGIT_TMP } /formatrequeststring
export " SOSGIT_EXITSTRING= $( cat ${ SOSGIT_TMP } /formatrequeststring) "
2022-08-14 12:20:56 +02:00
$SOSGIT_RM -rf " ${ SOSGIT_TMP } /formatrequeststring "
2022-08-14 05:29:07 +02:00
return
}
function formatRemoteRequestString( ) {
# same here as in formatRequestString()
printf " $SOSGIT_REQUESTSTRING_REMOTE " " $1 " " $2 " " $3 " " $4 " & > ${ SOSGIT_TMP } /formatremoterequeststring
export " SOSGIT_EXITSTRING= $( cat ${ SOSGIT_TMP } /formatremoterequeststring) "
2022-08-14 12:20:56 +02:00
$SOSGIT_RM -rf " ${ SOSGIT_TMP } /formatremoterequeststring "
2022-08-14 05:29:07 +02:00
return
}
function existRepoOnline( ) {
formatRequestString " $1 " " $2 "
$SOSGIT_CURL "-sSLqq" " ${ SOSGIT_EXITSTRING } /.git/HEAD " & > /dev/null
if [ " $? " = = "0" ] ; then
return "0"
else
return "1"
fi
}
function hasMakefile( ) {
translateRepo " $1 "
cd " $SOSGIT_EXITSTRING "
if [ -f "Makefile" ] ; then
return "0"
else
return "1"
fi
}
function noMakefileFound( ) {
echo " ERROR: Repository \" $1 \" is not compatible with make. "
exit 7
}
function argumentMissing( ) {
echo "ERROR: Missing arguments."
exit 6
}
function existBranch( ) {
translateRepo " $1 "
cd " $SOSGIT_EXITSTRING "
git branch | grep " $2 " & > /dev/null
if [ " $? " = = "0" ] ; then
return "0"
else
return "1"
fi
}
function noBranchFound( ) {
echo " ERROR: Branch \" $2 \" in repository \" $1 \" does not exist. "
}
2022-08-14 12:20:56 +02:00
function collectFiles( ) {
echo " $( pwd ) " & > $SOSGIT_TMP /sosgit_collectfiles_pwd
cd " $1 "
export "SOSGIT_EXITSTRING="
for file in $( ls --color= never -w 1 " $1 " ) ; do
if [ " $SOSGIT_EXITSTRING " = = "" ] ; then
export " SOSGIT_EXITSTRING= $( ls --color= never -w 1 $( pwd ) /$file ) "
else
export " SOSGIT_EXITSTRING= $( ls --color= never -w 1 $( pwd ) /$file ) "
fi
done
cd " $( cat ${ SOSGIT_TMP } /sosgit_collectfiles_pwd) "
rm -rf " ${ SOSGIT_TMP } /sosgit_collectfiles_pwd "
return
}
2022-08-14 05:29:07 +02:00
if [ ! " $SOSGIT_TITLE_SUPPRESS " = = "true" ] ; then
if [ ! " $SOSGIT_TITLE_TEXT " = = "true" ] ; then
# _ _
# ___ ___ ___ __ _(_) |_
#/ __|/ _ \/ __|_____ / _` | | __|
#\__ \ (_) \__ \_____| (_| | | |_
#|___/\___/|___/ \__, |_|\__|
# |___/
echo " _ _"
echo " ___ ___ ___ __ _(_) |_"
echo "/ __|/ _ \\/ __|_____ / _\` | | __|"
echo "\\__ \\ (_) \\__ \\_____| (_| | | |_"
echo "|___/\\___/|___/ \\__, |_|\\__|"
echo " |___/"
else
echo "sos-git"
fi
fi
if [ " $1 " = = "" ] ; then
echo "Use \"sos-git help\" for all commands."
echo "If you want more information, use \"sos-git helpextend\"."
exit 1
elif [ " $1 " = = "help" ] ; then
echo "<required> [optional]"
echo "sos-git branch <repository>"
echo " build <repository>"
echo " shell <repository>"
echo " clean <repository>"
echo " editconf <system>"
echo " getrepo <repository>"
echo " help"
echo " helpextend"
2022-08-14 13:28:33 +02:00
echo " history <repository>"
2022-08-14 05:29:07 +02:00
echo " install <repository>"
echo " list"
echo " pull <repository>"
echo " push <repository>"
echo " remoteauth <repository> [user]"
echo " remrepo <repository>"
echo " selfupdate"
echo " upstream <repository> <branch>"
exit 0
elif [ " $1 " = = "helpextend" ] ; then
echo "<required> [optional]"
echo "command | args | description"
echo "branch | <repository> | list all branches"
echo "build | <repository> | build repository"
echo "shell | <repository> | spawn shell in repository"
echo "clean | <repository> | clean built executables"
echo "editconf | <system> | edit the configuration"
echo "getrepo | <user> <repository> | clone a repository"
echo "help | | lists all commands"
echo "helpextend | | lists all commands with extended information"
2022-08-14 13:28:33 +02:00
echo "history | <repository> | shows commit history"
2022-08-14 05:29:07 +02:00
echo "install | <repository> | install built executables"
echo "list | | lists all cloned repositories"
echo "pull | <repository> | pull new updates"
echo "push | <repository> | push new changes"
echo "remoteauth | <user> <repository> [user] | update remote to include login information"
echo "remrepo | <repository> | remove a cloned repository"
echo "selfupdate | | update sos-git"
echo "upstream | <repository> <branch> | push new changes and set branch upstream"
elif [ " $1 " = = "build" ] ; then
if [ " $2 " = = "" ] ; then
argumentMissing
fi
if existRepo " $2 " ; then
if hasMakefile " $2 " ; then
translateRepo " $2 "
cd " $SOSGIT_EXITSTRING "
echo " Building repository \" $2 \" "
$SOSGIT_MAKE -j$( nproc) build
exit " $? "
else
noMakefileFound " $2 "
fi
else
noRepoFound " $2 "
fi
elif [ " $1 " = = "shell" ] ; then
if [ " $2 " = = "" ] ; then
argumentMissing
fi
if existRepo " $2 " ; then
translateRepo " $2 "
cd " $SOSGIT_EXITSTRING "
2022-08-14 13:04:03 +02:00
$SOSGIT_SHELL $SOSGIT_SHELLARGS
2022-08-14 05:29:07 +02:00
exit " $? "
else
noRepoFound " $2 "
fi
elif [ " $1 " = = "clean" ] ; then
if [ " $2 " = = "" ] ; then
argumentMissing
fi
if existRepo " $2 " ; then
if hasMakefile " $2 " ; then
translateRepo " $2 "
cd " $SOSGIT_EXITSTRING "
echo " Cleaning repository \" $2 \" "
$SOSGIT_MAKE -j$( nproc) clean
exit " $? "
else
noMakefileFound " $2 "
fi
else
noRepoFound " $2 "
fi
elif [ " $1 " = = "editconf" ] ; then
if [ " $2 " = = "" ] ; then
argumentMissing
fi
if [ " $2 " = = "true" ] ; then
if [ " $( whoami) " = = "root" ] ; then
collectFiles "/etc/sostools/git/sos-git.conf.d/"
2022-08-14 12:20:56 +02:00
echo " Opening system configuration files in $SOSGIT_EDITOR "
2022-08-14 05:29:07 +02:00
$SOSGIT_EDITOR "/etc/sostools/git/sos-git.conf" $SOSGIT_EXITSTRING
else
echo "ERROR: You aren't root."
exit "2"
fi
elif [ " $2 " = = "false" ] ; then
2022-08-14 12:20:56 +02:00
collectFiles " $HOME /.sostools/git/sos-git.conf.d/ "
echo " Opening user configuration files in $SOSGIT_EDITOR "
2022-08-14 05:29:07 +02:00
$SOSGIT_EDITOR " $HOME /.sostools/git/sos-git.conf " $SOSGIT_EXITSTRING
else
echo "ERROR: Invalid boolean."
fi
elif [ " $1 " = = "getrepo" ] ; then
if [ " $2 " = = "" ] || [ " $3 " = = "" ] ; then
argumentMissing
fi
if existRepoOnline " $2 " " $3 " ; then
translateRepo ""
cd " $SOSGIT_EXITSTRING "
formatRequestString " $2 " " $3 "
echo "Cloning repository"
$SOSGIT_GIT clone " $SOSGIT_EXITSTRING " " $3 "
cd " $3 "
echo "Cloning submodules"
$SOSGIT_GIT submodule update --init --force --recursive
else
noRepoFound " $3 "
fi
elif [ " $1 " = = "install" ] ; then
if [ " $2 " = = "" ] ; then
argumentMissing
fi
if existRepo " $2 " ; then
if hasMakefile " $2 " ; then
translateRepo " $2 "
cd " $SOSGIT_EXITSTRING "
echo " Installing repository \" $2 \" "
$SOSGIT_MAKE -j$( nproc) install
exit " $? "
else
noMakefileFound " $2 "
fi
else
noRepoFound " $2 "
fi
elif [ " $1 " = = "pull" ] ; then
if [ " $2 " = = "" ] ; then
argumentMissing
fi
if existRepo " $2 " ; then
translateRepo " $2 "
cd " $SOSGIT_EXITSTRING "
echo "Pulling new changes"
$SOSGIT_GIT pull
exit " $? "
else
noRepoFound " $2 "
fi
elif [ " $1 " = = "push" ] ; then
if [ " $2 " = = "" ] ; then
argumentMissing
fi
if existRepo " $2 " ; then
translateRepo " $2 "
cd " $SOSGIT_EXITSTRING "
echo "Pushing new changes"
$SOSGIT_GIT push
exit " $? "
else
noRepoFound " $2 "
fi
elif [ " $1 " = = "remoteauth" ] ; then
if [ " $2 " = = "" ] || [ " $3 " = = "" ] ; then
argumentMissing
fi
if existRepo " $3 " ; then
translateRepo " $3 "
cd " $SOSGIT_EXITSTRING "
echo "You are now required to enter your StarOpenGit credentials. If you are using 2FA, use a Application Token as a password."
if [ " $4 " = = "" ] ; then
echo -n "Enter username: "
read -r "SOSGIT_USERNAME"
else
export " SOSGIT_USERNAME= $4 "
fi
echo -n "Enter password: "
read -r -s "SOSGIT_PASSWD"
echo "********"
git remote remove origin
formatRemoteRequestString " $SOSGIT_USERNAME " " $SOSGIT_PASSWD " " $2 " " $3 "
git remote add origin " $SOSGIT_EXITSTRING "
echo -e "\nClearing variables containing password"
export "SOSGIT_PASSWD="
export "SOSGIT_EXITSTRING="
echo " Updated remote for repository \" $3 \" "
else
noRepoFound " $3 "
fi
elif [ " $1 " = = "selfupdate" ] ; then
2022-08-14 13:43:50 +02:00
if [ -f " $SOSGIT_TMP /sos-git-updater.sh " ] ; then
rm -rf " $SOSGIT_TMP /sos-git-updater.sh "
fi
2022-08-14 13:42:55 +02:00
echo -e " echo Updating sos-git to \" $0 \"; $SOSGIT_CURL -sSLqq \" $SOSGIT_UPDATEURL \" &> $0 ;kill -9 $$ &> /dev/null " & > $SOSGIT_TMP /sos-git-updater.sh
2022-08-14 13:34:05 +02:00
chmod +x $SOSGIT_TMP /sos-git-updater.sh
$SOSGIT_TMP /sos-git-updater.sh
2022-08-14 05:29:07 +02:00
elif [ " $1 " = = "list" ] ; then
translateRepo ""
$SOSGIT_LS -A -h " $SOSGIT_EXITSTRING "
elif [ " $1 " = = "remrepo" ] ; then
if [ " $2 " = = "" ] ; then
argumentMissing
fi
if existRepo " $2 " ; then
translateRepo " $2 "
echo " Removing repository \" $2 \" "
2022-08-14 12:20:56 +02:00
$SOSGIT_RM -rf " $SOSGIT_EXITSTRING "
2022-08-14 05:29:07 +02:00
else
noRepoFound " $2 "
fi
elif [ " $1 " = = "upstream" ] ; then
if [ " $2 " = = "" ] || [ " $3 " = = "" ] ; then
argumentMissing
fi
if existRepo " $2 " ; then
translateRepo " $2 "
cd " $SOSGIT_EXITSTRING "
if existBranch " $2 " " $3 " ; then
echo " Pushing new changes and making branch \" $3 \" upstream. "
git push "--set-upstream" "origin" " $3 "
else
noBranchFound " $2 " " $3 "
fi
else
noRepoFound " $2 "
fi
elif [ " $1 " = = "branch" ] ; then
if [ " $2 " = = "" ] ; then
argumentMissing
fi
if existRepo " $2 " ; then
translateRepo " $2 "
cd " $SOSGIT_EXITSTRING "
git branch
else
noRepoFound " $2 "
fi
2022-08-14 13:28:33 +02:00
elif [ " $1 " = = "history" ] ; then
if [ " $2 " = = "" ] ; then
argumentMissing
fi
if existRepo " $2 " ; then
translateRepo " $2 "
cd " $SOSGIT_EXITSTRING "
git log
else
noRepoFound " $2 "
fi
2022-08-14 05:29:07 +02:00
else
argumentMissing
fi