Initial commit.
This commit is contained in:
Executable
+496
@@ -0,0 +1,496 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
function_printhelp () {
|
||||
|
||||
echo -e "-"
|
||||
echo -e " Usage: radius [command]"
|
||||
echo -e "-"
|
||||
|
||||
ECO=" :\033[31m\e[1mCOMMAND:DESCRIPTION${NC}\033[0m\n"
|
||||
ECO+="-\n"
|
||||
ECO+=" :[ update ]:Updates from remote git server.\n"
|
||||
ECO+=" :[ list-release ]:List all releases in project.\n"
|
||||
ECO+=" :[ list-branches ]:List all branches in project.\n"
|
||||
ECO+="-\n"
|
||||
|
||||
printf "$ECO" | column -t -s ':'
|
||||
|
||||
}
|
||||
|
||||
function_app_init () {
|
||||
|
||||
PHP_BIN="$(type -p "php")"
|
||||
|
||||
if [ $? -ne 0 ] || [ ! -n ${PHP_BIN} ]; then
|
||||
|
||||
function_log "error: ${LIGHT_RED}PHP is not installed or not in PATH.${NC}"
|
||||
|
||||
exit 1
|
||||
|
||||
fi
|
||||
|
||||
COMPOSER_BIN="$(type -p "composer")"
|
||||
|
||||
if [ $? -ne 0 ] || [ ! -n ${COMPOSER_BIN} ]; then
|
||||
|
||||
function_log "error: ${LIGHT_RED}composer is not installed or not in PATH.${NC}"
|
||||
|
||||
exit 1
|
||||
|
||||
fi
|
||||
|
||||
NODE_BIN="$(type -p "node")"
|
||||
|
||||
if [ $? -ne 0 ] || [ ! -n ${NODE_BIN} ]; then
|
||||
|
||||
function_log "error: ${LIGHT_RED}node.js is not installed or not in PATH.${NC}"
|
||||
|
||||
exit 1
|
||||
|
||||
fi
|
||||
|
||||
NPM_BIN="$(type -p "npm")"
|
||||
|
||||
if [ $? -ne 0 ] || [ ! -n ${NPM_BIN} ]; then
|
||||
|
||||
function_log "error: ${LIGHT_RED}npm is not installed or not in PATH.${NC}"
|
||||
|
||||
exit 1
|
||||
|
||||
fi
|
||||
|
||||
if [ ! -d "${DIR_TMP}" ] || [ ! -w "${DIR_TMP}" ]; then
|
||||
|
||||
function_log "error: ${LIGHT_RED}temporary directory does not exists or not writable.${NC}" true
|
||||
|
||||
exit 1
|
||||
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
function_app_update () {
|
||||
|
||||
echo -e "-"
|
||||
|
||||
function_log "info: ${DARK_GREEN}Gathering information...${NC}" true
|
||||
|
||||
echo -e "-\n"
|
||||
|
||||
ECO=" ${LIGHT_RED}SETTING|VALUE${NC}\n"
|
||||
ECO+="-\n"
|
||||
ECO+=" ${DARK_GREEN}Remote Host${NC}|$REMOTE_HOSTNAME\n";
|
||||
ECO+=" ${DARK_GREEN}Remote Port${NC}|$REMOTE_PORT\n";
|
||||
ECO+=" ${DARK_GREEN}Enable SSL${NC}|$(function_strtoupper $USE_SSL)\n";
|
||||
ECO+=" ${DARK_GREEN}Repo Name${NC}|$PROJECT_NAME\n";
|
||||
ECO+=" ${DARK_GREEN}Repo User${NC}|$PROJECT_USER\n";
|
||||
ECO+=" ${DARK_GREEN}Repo Branch${NC}|$PROJECT_BRANCH\n";
|
||||
ECO+=" ${DARK_GREEN}Temp Directory${NC}|$DIR_TMP\n";
|
||||
ECO+=" ${DARK_GREEN}PHP Engine${NC}|$($PHP_BIN -v | head -n 1)\n";
|
||||
ECO+=" ${DARK_GREEN}Composer${NC}|v$($COMPOSER_BIN about | sed -n '1 p' | grep -i 'Composer - Depen' | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')\n";
|
||||
ECO+=" ${DARK_GREEN}Node.js${NC}|$($NODE_BIN -v)\n";
|
||||
ECO+=" ${DARK_GREEN}NPM${NC}|v$($NPM_BIN -v)\n";
|
||||
|
||||
printf "$ECO" | column -t -s '|'
|
||||
|
||||
echo -e "-"
|
||||
|
||||
echo -e "Remeber this will download source code from remote git server branch or a release than it will synchronize"
|
||||
echo -e "source and root directory using rsync command. This rync command is configured with exclude and include list."
|
||||
echo -e "You must configure this exclude and include rsync config files before, only than proceed. If you don't this"
|
||||
echo -e "can delete some usefull files and directories too."
|
||||
|
||||
echo -e "-"
|
||||
|
||||
ABORT=true
|
||||
|
||||
if [ "${MODE_QUIET}" = false ]; then
|
||||
|
||||
read -p $'\e[92m\e[1mDo you want to procced with above mentioned configuartion ?\e[0m\e[0m Y/N default N: ' ASK
|
||||
|
||||
echo -e "-"
|
||||
|
||||
if [ "$(function_strtolower "${ASK}")" != "y" ] || [ "$(function_strtolower "${ASK}")" != "yes" ]; then
|
||||
|
||||
ABORT=false
|
||||
|
||||
fi
|
||||
|
||||
if [ "${ABORT}" == true ]; then
|
||||
|
||||
function_log "info: ${LIGHT_RED}aborted by user.${NC}"
|
||||
|
||||
exit 0
|
||||
|
||||
else
|
||||
|
||||
function_log "info: ${LIGHT_GREEN}moving on...${NC}"
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
if [ "${REMOTE_PORT}" == "80" ]; then
|
||||
|
||||
REMOTE_PORT=""
|
||||
|
||||
elif [ "${REMOTE_PORT}" == "443" ]; then
|
||||
|
||||
USE_SSL="YES"
|
||||
REMOTE_PORT=""
|
||||
|
||||
fi
|
||||
|
||||
if [ "${USE_SSL}" == "" ] || [ "$(function_strtolower $USE_SSL)" == "yes" ]; then
|
||||
|
||||
REMOTE_URL="https://";
|
||||
|
||||
else
|
||||
|
||||
REMOTE_URL="https://"
|
||||
|
||||
fi
|
||||
|
||||
REMOTE_URL+="${REMOTE_HOSTNAME}"
|
||||
|
||||
if [ "${REMOTE_PORT}" != "" ]; then
|
||||
|
||||
REMOTE_URL+=":${REMOTE_PORT}"
|
||||
|
||||
fi
|
||||
|
||||
REMOTE_URL+="/api/v1/repos/${PROJECT_USER}/${PROJECT_NAME}/archive/${PROJECT_BRANCH}.zip"
|
||||
|
||||
LOCAL_TAG="${PROJECT_NAME}-${PROJECT_BRANCH}"
|
||||
LOCAL_DSTI="${DIR_TMP}/${LOCAL_TAG}.zip"
|
||||
LOCAL_SORC="${DIR_TMP}/${LOCAL_TAG}"
|
||||
|
||||
if [ -f "${LOCAL_DSTI}" ]; then
|
||||
|
||||
echo -e "-"
|
||||
|
||||
function_log "warning: ${LIGHT_CYAN}found previously downloaded file in destination directory.${NC}" true
|
||||
|
||||
function_log "info: ${LIGHT_GREEN}removing....${NC}"
|
||||
|
||||
rm -f "${LOCAL_DSTI}" &
|
||||
|
||||
BACK_PID=$!
|
||||
|
||||
wait $BACK_PID
|
||||
|
||||
function_log "info: ${LIGHT_GREEN}removed successfully.${NC}" true
|
||||
|
||||
echo -e "-"
|
||||
|
||||
fi
|
||||
|
||||
if [ -d "${LOCAL_SORC}" ]; then
|
||||
|
||||
echo -e "-"
|
||||
|
||||
function_log "warning: ${LIGHT_CYAN}found previously extracted source directory.${NC}" true
|
||||
|
||||
function_log "info: ${LIGHT_GREEN}removing....${NC}"
|
||||
|
||||
rm -fR "${LOCAL_SORC}" &
|
||||
|
||||
BACK_PID=$!
|
||||
|
||||
wait $BACK_PID
|
||||
|
||||
function_log "info: ${LIGHT_GREEN}removed successfully.${NC}" true
|
||||
|
||||
echo -e "-"
|
||||
|
||||
fi
|
||||
|
||||
function_log "info: ${LIGHT_GREEN}Downloading - ${REMOTE_URL}.${NC}" true
|
||||
function_log "info: ${LIGHT_GREEN}Destination - ${LOCAL_DSTI}.${NC}" true
|
||||
|
||||
function_log "info: ${DARK_GREEN}fetching project archive from remote server....${NC}"
|
||||
|
||||
if [ "${MODE_QUIET}" == false ]; then
|
||||
|
||||
wget --header="Accept: application/json" \
|
||||
--header="Authorization: Bearer ${AUTH_TOKEN}" \
|
||||
--header="Cache-Control: no-cache" \
|
||||
--no-check-certificate \
|
||||
-O "${LOCAL_DSTI}" \
|
||||
"${REMOTE_URL}" &
|
||||
|
||||
else
|
||||
|
||||
wget --header="Accept: application/json" \
|
||||
--header="Authorization: Bearer ${AUTH_TOKEN}" \
|
||||
--header="Cache-Control: no-cache" \
|
||||
--no-check-certificate \
|
||||
--quiet \
|
||||
-O "${LOCAL_DSTI}" \
|
||||
"${REMOTE_URL}" &
|
||||
|
||||
fi
|
||||
|
||||
BACK_PID=$!
|
||||
|
||||
wait $BACK_PID
|
||||
|
||||
if [ -f "${LOCAL_DSTI}" ]; then
|
||||
|
||||
function_log "info: ${LIGHT_GREEN}downloaded successfully.${NC}" true
|
||||
|
||||
else
|
||||
|
||||
function_log "error: ${LIGHT_RED}failed to download project repository.${NC}" true
|
||||
|
||||
exit 1
|
||||
|
||||
fi
|
||||
|
||||
function_log "info: ${LIGHT_GREEN}extracting....${NC}"
|
||||
|
||||
unzip "${LOCAL_DSTI}" -d "$LOCAL_SORC" > /dev/null
|
||||
|
||||
if [ -d "${LOCAL_SORC}" ]; then
|
||||
|
||||
function_log "info: ${LIGHT_GREEN}checking extracted files......${NC}" true
|
||||
|
||||
[ ! -f "${LOCAL_SORC}/$(function_strtolower "${PROJECT_NAME}")/${PROJECT_ENTRY_FILE}" ] && { function_log "error: ${LIGHT_RED}looks like extracted directory is corrupted. Aborting.${NC}" true; exit 1; }
|
||||
|
||||
function_log "info: ${LIGHT_GREEN}extracted successfully.${NC}" true
|
||||
|
||||
else
|
||||
|
||||
function_log "error: ${LIGHT_RED}failed to extract downloaded file.${NC}" true
|
||||
|
||||
exit 1
|
||||
|
||||
fi
|
||||
|
||||
|
||||
function_log "info: ${DARK_GREEN}Starting updating....${NC}" true
|
||||
|
||||
if [ ! -d "${DIR_ROOT}" ]; then
|
||||
|
||||
function_log "info: ${DARK_GREEN}creating root directory....${NC}" true
|
||||
|
||||
mkdir -p "${DIR_ROOT}"
|
||||
|
||||
fi
|
||||
|
||||
function_log "info: ${LIGHT_GREEN}Root Directory - ${DIR_ROOT}.${NC}" true
|
||||
|
||||
if [ ! -w "${DIR_ROOT}" ]; then
|
||||
|
||||
function_log "error: ${LIGHT_RED}configured root directory is not writable.${NC}" true
|
||||
|
||||
exit 1
|
||||
|
||||
fi
|
||||
|
||||
function_log "info: ${LIGHT_GREEN}Source Directory - ${LOCAL_SORC}/$(function_strtolower "${PROJECT_NAME}")/.${NC}" true
|
||||
|
||||
function_log "info: ${DARK_GREEN}Updating...${NC}" true
|
||||
|
||||
rsync -at --human-readable --stats --delete \
|
||||
--include-from "${DIR_CONFIG}/include.rsync.conf" \
|
||||
--exclude-from "${DIR_CONFIG}/exclude.rsync.conf" \
|
||||
"${LOCAL_SORC}/$(function_strtolower "${PROJECT_NAME}")/" "${DIR_ROOT}" &
|
||||
|
||||
BACK_PID=$!
|
||||
|
||||
wait $BACK_PID
|
||||
|
||||
function_log "info: ${DARK_GREEN}updation done.${NC}" true
|
||||
|
||||
function_log "info: ${DARK_GREEN}erasing temporary data...${NC}" true
|
||||
|
||||
[ -f "$LOCAL_DSTI" ] && { rm -f $LOCAL_DSTI; }
|
||||
|
||||
[ -d "$LOCAL_SORC" ] && { rm -fR $LOCAL_SORC; }
|
||||
|
||||
function_log "info: ${DARK_GREEN}removed temporary data.${NC}" true
|
||||
|
||||
function_log "info: ${DARK_GREEN}erasing junk data.....${NC}" true
|
||||
|
||||
cd "${DIR_ROOT}"
|
||||
|
||||
find . \( -path ./node_modules -o -path ./vendor \) -prune -false -o \( -name ".gitkeep" -o -name ".gitignore" \) -exec rm -f {} \;
|
||||
|
||||
# Automatically remove log files older than 30 days
|
||||
find "${DIR_LOG}" -name "*.log" -type f -mtime +30 -delete
|
||||
|
||||
function_log "info: ${DARK_GREEN}removed junk data.${NC}" true
|
||||
|
||||
function_log "info: ${LIGHT_GREEN}all done.${NC}" true
|
||||
|
||||
exit 0
|
||||
|
||||
}
|
||||
|
||||
function_app_list_release () {
|
||||
|
||||
if [ "${REMOTE_PORT}" == "80" ]; then
|
||||
|
||||
REMOTE_PORT=""
|
||||
|
||||
elif [ "${REMOTE_PORT}" == "443" ]; then
|
||||
|
||||
USE_SSL="YES"
|
||||
REMOTE_PORT=""
|
||||
|
||||
fi
|
||||
|
||||
if [ "${USE_SSL}" == "" ] || [ "$(function_strtolower $USE_SSL)" == "yes" ]; then
|
||||
|
||||
REMOTE_URL="https://";
|
||||
|
||||
else
|
||||
|
||||
REMOTE_URL="https://"
|
||||
|
||||
fi
|
||||
|
||||
REMOTE_URL+="${REMOTE_HOSTNAME}"
|
||||
|
||||
if [ "${REMOTE_PORT}" != "" ]; then
|
||||
|
||||
REMOTE_URL+=":${REMOTE_PORT}"
|
||||
|
||||
fi
|
||||
|
||||
RELEASE_URL="${REMOTE_URL}/api/v1/repos/${PROJECT_USER}/${PROJECT_NAME}/releases"
|
||||
|
||||
function_log "info: ${DARK_GREEN}fetching list of all releases.${NC}" true
|
||||
|
||||
RAW_JSON=$(curl -s -k -H "Authorization: Bearer ${AUTH_TOKEN}" "$RELEASE_URL")
|
||||
|
||||
if [ -z "$RAW_JSON" ] || [ "$RAW_JSON" == "[]" ]; then
|
||||
|
||||
function_log "info: ${DARK_GREEN}no releases found for project repository.${NC}" true
|
||||
|
||||
exit 0
|
||||
|
||||
fi
|
||||
|
||||
echo -e "-"
|
||||
echo -e "${BOLD}Available Repository Releases:${NC}"
|
||||
echo -e "--------------------------------------------------"
|
||||
|
||||
echo "$RAW_JSON" | grep -o '{"id":[^{]*' | while read -r row; do
|
||||
|
||||
TAG=$(echo "$row" | grep -o '"tag_name":"[^"]*' | cut -d'"' -f4 || true)
|
||||
NAME=$(echo "$row" | grep -o '"name":"[^"]*' | cut -d'"' -f4 || true)
|
||||
IS_PRE=$(echo "$row" | grep -o '"prerelease":[a-z]*' | cut -d':' -f2 || true)
|
||||
|
||||
if [ -z "$TAG" ]; then
|
||||
|
||||
continue
|
||||
|
||||
fi
|
||||
|
||||
if [ -z "$NAME" ]; then
|
||||
|
||||
NAME="No Title"
|
||||
|
||||
fi
|
||||
|
||||
if [ -z "$FIRST_RELEASE" ]; then
|
||||
|
||||
FIRST_RELEASE="done"
|
||||
echo -e " ${LIGHT_GREEN}➔ ${TAG} - ${NAME} (${BOLD}LATEST / ACTIVE${NC}${LIGHT_GREEN})${NC}"
|
||||
|
||||
else
|
||||
|
||||
if [ "$IS_PRE" == "true" ]; then
|
||||
|
||||
echo -e " ${LIGHT_CYAN}${TAG}${NC} - ${NAME} (Pre-release)"
|
||||
|
||||
else
|
||||
|
||||
echo -e " ${TAG} - ${NAME}"
|
||||
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
echo -e "--------------------------------------------------"
|
||||
echo -e "\n"
|
||||
|
||||
exit 0
|
||||
|
||||
}
|
||||
|
||||
function_app_list_branches () {
|
||||
|
||||
if [ "${REMOTE_PORT}" == "80" ]; then
|
||||
|
||||
REMOTE_PORT=""
|
||||
|
||||
elif [ "${REMOTE_PORT}" == "443" ]; then
|
||||
|
||||
USE_SSL="YES"
|
||||
REMOTE_PORT=""
|
||||
|
||||
fi
|
||||
|
||||
if [ "${USE_SSL}" == "" ] || [ "$(function_strtolower $USE_SSL)" == "yes" ]; then
|
||||
|
||||
REMOTE_URL="https://";
|
||||
|
||||
else
|
||||
|
||||
REMOTE_URL="https://"
|
||||
|
||||
fi
|
||||
|
||||
REMOTE_URL+="${REMOTE_HOSTNAME}"
|
||||
|
||||
if [ "${REMOTE_PORT}" != "" ]; then
|
||||
|
||||
REMOTE_URL+=":${REMOTE_PORT}"
|
||||
|
||||
fi
|
||||
|
||||
RELEASE_URL="${REMOTE_URL}/api/v1/repos/${PROJECT_USER}/${PROJECT_NAME}/branches"
|
||||
|
||||
function_log "info: ${DARK_GREEN}fetching list of all branches.${NC}" true
|
||||
|
||||
RAW_JSON=$(curl -s -k -H "Authorization: Bearer ${AUTH_TOKEN}" "$RELEASE_URL")
|
||||
|
||||
if [ -z "$RAW_JSON" ] || [ "$RAW_JSON" == "[]" ]; then
|
||||
|
||||
function_log "info: ${DARK_GREEN}no branch found for project repository.${NC}" true
|
||||
|
||||
exit 0
|
||||
|
||||
fi
|
||||
|
||||
echo -e "-"
|
||||
echo -e "${BOLD}Available Repository Branches:${NC}"
|
||||
echo -e "--------------------------------------------------"
|
||||
|
||||
echo "$RAW_JSON" | grep -o '{"name":"[^"]*","commit"' | while read -r row; do
|
||||
|
||||
NAME=$(echo "$row" | grep -o '"name":"[^"]*' | cut -d'"' -f4)
|
||||
|
||||
if [ "$NAME" == "main" ]; then
|
||||
|
||||
echo -e " ${LIGHT_GREEN}➔ ${NAME} (${BOLD}DEFAULT / ACTIVE${NC}${LIGHT_GREEN})${NC}"
|
||||
|
||||
else
|
||||
|
||||
echo -e " ${NAME}"
|
||||
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
echo -e "--------------------------------------------------"
|
||||
echo -e "\n"
|
||||
|
||||
exit 0
|
||||
|
||||
}
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
function_log () {
|
||||
|
||||
if [ "$1" ]; then
|
||||
|
||||
if [ "${MODE_QUIET}" == false ]; then
|
||||
|
||||
echo -e $1
|
||||
|
||||
elif [ "${MODE_QUIET}" == true ] && [ "$#" -ge 2 ] && [ "$2" == true ]; then
|
||||
|
||||
echo -e $1
|
||||
|
||||
fi
|
||||
|
||||
echo -e "`date "+%I:%M:%S"` $(hostname) $SID: $1" | sed -r 's/\x1B\[([0-9]{1,3}(;[0-9]{1,2};?)?)?[mGK]//g' | sed -e 's/^[ \t]*//' >>$FILE_LOG
|
||||
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
function_strtolower () {
|
||||
|
||||
[[ "$1" == "" ]] && { function_log "error: ${LIGHT_RED}failed to locate any argument in request. File: include/helper.inc, Line: 17${NC}"; exit 1; }
|
||||
|
||||
echo "$(echo "$1" | tr '[:upper:]' '[:lower:]')"
|
||||
|
||||
}
|
||||
|
||||
function_strtoupper () {
|
||||
|
||||
[[ "$1" == "" ]] && { function_log "error: ${LIGHT_RED}failed to locate any argument in request. File: include/helper.inc, Line: 25${NC}"; exit 1; }
|
||||
|
||||
echo "$(echo "$1" | tr '[:lower:]' '[:upper:]')"
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user