first commit
This commit is contained in:
25
Linux/Development/MERGE-TO-PRODUCTION.sh
Normal file
25
Linux/Development/MERGE-TO-PRODUCTION.sh
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Prompt for confirmation
|
||||||
|
echo "Are you sure you want to merge 'development' into 'production'? (y/n)"
|
||||||
|
read -r confirmation
|
||||||
|
|
||||||
|
if [[ "$confirmation" == "y" || "$confirmation" == "Y" ]]; then
|
||||||
|
# Switch to the production branch
|
||||||
|
git checkout production
|
||||||
|
|
||||||
|
# Pull the latest changes for production
|
||||||
|
git pull origin production
|
||||||
|
|
||||||
|
# Merge the development branch into production
|
||||||
|
git merge development
|
||||||
|
|
||||||
|
# Check if the merge was successful
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Merge successful. Please resolve any conflicts and commit."
|
||||||
|
else
|
||||||
|
echo "Merge failed. Please resolve conflicts manually."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Merge aborted."
|
||||||
|
fi
|
||||||
72
Linux/Development/PUSH-TO-DEVELOPMENT.sh
Normal file
72
Linux/Development/PUSH-TO-DEVELOPMENT.sh
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Exit immediately if a command exits with a non-zero status.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Function to display a message in red color
|
||||||
|
error() {
|
||||||
|
echo -e "\e[31m$1\e[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to display a message in green color
|
||||||
|
success() {
|
||||||
|
echo -e "\e[32m$1\e[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ensure we're inside a Git repository
|
||||||
|
if ! git rev-parse --git-dir > /dev/null 2>&1; then
|
||||||
|
error "Error: This directory is not a Git repository."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the current branch name
|
||||||
|
CURRENT_BRANCH=$(git symbolic-ref --short HEAD)
|
||||||
|
|
||||||
|
# Check if the current branch is 'development'
|
||||||
|
if [ "$CURRENT_BRANCH" != "development" ]; then
|
||||||
|
error "Error: You are not on the 'development' branch."
|
||||||
|
echo "Please switch to the 'development' branch and run this script again."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prompt for a commit message
|
||||||
|
echo "Enter your commit message:"
|
||||||
|
read -r COMMIT_MESSAGE
|
||||||
|
|
||||||
|
# Check if the commit message is empty
|
||||||
|
if [ -z "$COMMIT_MESSAGE" ]; then
|
||||||
|
error "Error: Commit message cannot be empty."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add all changes
|
||||||
|
git add .
|
||||||
|
|
||||||
|
# Show the changes to be committed
|
||||||
|
echo "The following changes will be committed:"
|
||||||
|
git status --short
|
||||||
|
|
||||||
|
# Prompt for confirmation to commit
|
||||||
|
echo "Do you want to proceed with the commit and push to 'development' branch? (yes/no)"
|
||||||
|
read -r CONFIRMATION
|
||||||
|
|
||||||
|
if [ "$CONFIRMATION" != "yes" ]; then
|
||||||
|
error "Aborting commit and push to 'development' branch."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Commit the changes with the provided message
|
||||||
|
git commit -m "$COMMIT_MESSAGE"
|
||||||
|
|
||||||
|
# Show the last commit
|
||||||
|
echo "Last commit on 'development' branch:"
|
||||||
|
git --no-pager log -1 --pretty=format:"%h - %s (%an, %ar)"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Pull the latest changes from the remote 'development' branch
|
||||||
|
git pull origin development --rebase
|
||||||
|
|
||||||
|
# Push the 'development' branch to the remote repository
|
||||||
|
git push origin development
|
||||||
|
|
||||||
|
success "Successfully pushed changes to 'development' branch."
|
||||||
80
Linux/Development/PUSH-TO-PRODUCTION.sh
Normal file
80
Linux/Development/PUSH-TO-PRODUCTION.sh
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Exit immediately if a command exits with a non-zero status.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Function to display a message in red color
|
||||||
|
error() {
|
||||||
|
echo -e "\e[31m$1\e[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to display a message in green color
|
||||||
|
success() {
|
||||||
|
echo -e "\e[32m$1\e[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Ensure we're inside a Git repository
|
||||||
|
if ! git rev-parse --git-dir > /dev/null 2>&1; then
|
||||||
|
error "Error: This directory is not a Git repository."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the current branch name
|
||||||
|
CURRENT_BRANCH=$(git symbolic-ref --short HEAD)
|
||||||
|
|
||||||
|
# Check if the current branch is 'development'
|
||||||
|
if [ "$CURRENT_BRANCH" != "development" ]; then
|
||||||
|
error "Error: You are not on the 'development' branch."
|
||||||
|
echo "Please switch to the 'development' branch and run this script again."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prompt for a commit message
|
||||||
|
echo "Enter your commit message:"
|
||||||
|
read -r COMMIT_MESSAGE
|
||||||
|
|
||||||
|
# Check if the commit message is empty
|
||||||
|
if [ -z "$COMMIT_MESSAGE" ]; then
|
||||||
|
error "Error: Commit message cannot be empty."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add all changes
|
||||||
|
git add .
|
||||||
|
|
||||||
|
# Commit the changes with the provided message
|
||||||
|
git commit -m "$COMMIT_MESSAGE"
|
||||||
|
|
||||||
|
# Show the last commit
|
||||||
|
echo "Last commit on 'development' branch:"
|
||||||
|
git --no-pager log -1 --pretty=format:"%h - %s (%an, %ar)"
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Prompt for confirmation to push to 'production'
|
||||||
|
echo "Do you want to merge 'development' into 'production' and push to the remote repository? (yes/no)"
|
||||||
|
read -r CONFIRMATION
|
||||||
|
|
||||||
|
if [ "$CONFIRMATION" != "yes" ]; then
|
||||||
|
error "Aborting push to 'production' branch."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Fetch the latest changes from the remote repository
|
||||||
|
git fetch origin
|
||||||
|
|
||||||
|
# Switch to the 'production' branch
|
||||||
|
git checkout production
|
||||||
|
|
||||||
|
# Pull the latest changes in 'production' branch
|
||||||
|
git pull origin production
|
||||||
|
|
||||||
|
# Merge 'development' into 'production'
|
||||||
|
git merge --no-ff development -m "Merge branch 'development' into 'production'"
|
||||||
|
|
||||||
|
# Push the 'production' branch to the remote repository
|
||||||
|
git push origin production
|
||||||
|
|
||||||
|
# Switch back to the 'development' branch
|
||||||
|
git checkout development
|
||||||
|
|
||||||
|
success "Successfully pushed changes from 'development' to 'production' branch."
|
||||||
42
Linux/Development/Pull-Latest-From-Git-Function.sh
Normal file
42
Linux/Development/Pull-Latest-From-Git-Function.sh
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# Function to pull the latest changes from the Git repo
|
||||||
|
pull_latest_from_git() {
|
||||||
|
# Directory where the repo will be cloned
|
||||||
|
REPO_DIR="/mnt/server"
|
||||||
|
|
||||||
|
# Check if Git is installed
|
||||||
|
if ! command -v git >/dev/null 2>&1; then
|
||||||
|
echo "Git is not installed. Installing Git..."
|
||||||
|
apk update
|
||||||
|
apk add git
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Configure Git to use the provided username and PAT
|
||||||
|
if [ -n "${GIT_USERNAME}" ] && [ -n "${GIT_PAT}" ]; then
|
||||||
|
echo "Configuring Git credentials and directory..."
|
||||||
|
git config --global --add safe.directory "${REPO_DIR}"
|
||||||
|
echo "The directory config worked"
|
||||||
|
git config --global credential.helper store
|
||||||
|
echo "https://${GIT_USERNAME}:${GIT_PAT}@${GIT_REPO_URL#https://}" > /root/.git-credentials
|
||||||
|
chmod 600 /root/.git-credentials
|
||||||
|
echo "The credentials config worked"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "${REPO_DIR}"
|
||||||
|
|
||||||
|
# Check if the .git directory exists
|
||||||
|
if [ -d ".git" ]; then
|
||||||
|
echo "Repository already exists. Pulling latest changes from ${GIT_BRANCH} branch..."
|
||||||
|
git fetch origin
|
||||||
|
git reset "origin/${GIT_BRANCH}"
|
||||||
|
else
|
||||||
|
echo "Cloning repository from ${GIT_REPO_URL}..."
|
||||||
|
git clone https://${GIT_REPO_URL} ${REPO_DIR}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clean up Git credentials
|
||||||
|
rm -f /root/.git-credentials
|
||||||
|
git config --global --unset credential.helper
|
||||||
|
}
|
||||||
|
|
||||||
|
# Pull the latest changes from Git
|
||||||
|
pull_latest_from_git
|
||||||
122
Linux/Development/generate-config.sh
Normal file
122
Linux/Development/generate-config.sh
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Enable strict error handling
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Function to show usage instructions
|
||||||
|
show_usage() {
|
||||||
|
echo "Usage: $0 [file extensions] [environment] [--dry-run]"
|
||||||
|
echo " file extensions: A space-separated list of file extensions (e.g. .yml .json .conf)."
|
||||||
|
echo " environment: The target environment (e.g., development or production)."
|
||||||
|
echo " --dry-run : Simulate changes without modifying files."
|
||||||
|
}
|
||||||
|
|
||||||
|
# Parse command-line arguments
|
||||||
|
DRY_RUN=false
|
||||||
|
ENV=$1
|
||||||
|
if [[ -z "$ENV" ]]; then
|
||||||
|
show_usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$2" == "--dry-run" ]]; then
|
||||||
|
DRY_RUN=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
shift # Shift arguments so we can get the file extensions after the environment
|
||||||
|
|
||||||
|
EXTENSIONS=("$@")
|
||||||
|
if [[ ${#EXTENSIONS[@]} -eq 0 ]]; then
|
||||||
|
echo "Error: You must specify at least one file extension."
|
||||||
|
show_usage
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Arguments passed correctly!"
|
||||||
|
|
||||||
|
# Load the appropriate .env file
|
||||||
|
if [ -f ".env.$ENV" ]; then
|
||||||
|
set -a
|
||||||
|
source ".env.$ENV"
|
||||||
|
set +a
|
||||||
|
else
|
||||||
|
echo "Environment file .env.$ENV not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Function to escape all special characters that might affect sed
|
||||||
|
escape_sed_special_chars() {
|
||||||
|
printf '%s' "$1" | sed 's|[&/\$]|\&|g; s|[[:space:]]|\\ |g; s|\\|\\\\|g'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Process files for each extension
|
||||||
|
for EXT in "${EXTENSIONS[@]}"; do
|
||||||
|
# Find and process all *.template files with the current extension, including subdirectories
|
||||||
|
find . -name "*.template$EXT" | while read -r TEMPLATE_FILE; do
|
||||||
|
# Derive output file name by removing ".template"
|
||||||
|
OUTPUT_FILE="${TEMPLATE_FILE%.template$EXT}$EXT"
|
||||||
|
|
||||||
|
# Dry-run reporting or actual processing
|
||||||
|
if $DRY_RUN; then
|
||||||
|
echo "Dry run: would generate $OUTPUT_FILE from $TEMPLATE_FILE"
|
||||||
|
|
||||||
|
LINE_NUMBER=0
|
||||||
|
while IFS= read -r line || [[ -n "$line" ]]; do
|
||||||
|
LINE_NUMBER=$((LINE_NUMBER + 1))
|
||||||
|
while [[ "$line" =~ (\$\{([A-Za-z_][A-Za-z0-9_]*)\}) ]]; do
|
||||||
|
PLACEHOLDER="${BASH_REMATCH[1]}"
|
||||||
|
VAR_NAME="${BASH_REMATCH[2]}"
|
||||||
|
VAR_VALUE="${!VAR_NAME:-<UNDEFINED>}"
|
||||||
|
|
||||||
|
echo " Would have inputted '$VAR_VALUE' in place of '$VAR_NAME' in $OUTPUT_FILE at line $LINE_NUMBER"
|
||||||
|
|
||||||
|
if [[ "$VAR_VALUE" == "<UNDEFINED>" ]]; then
|
||||||
|
echo " Warning: Variable '$VAR_NAME' is undefined and will cause an error in actual mode."
|
||||||
|
fi
|
||||||
|
|
||||||
|
line="${line/$PLACEHOLDER/}"
|
||||||
|
done
|
||||||
|
done < "$TEMPLATE_FILE"
|
||||||
|
|
||||||
|
else
|
||||||
|
# Validate unresolved placeholders
|
||||||
|
UNRESOLVED=$(grep -oP '\${\K[A-Za-z_][A-Za-z0-9_]*(?=})' "$TEMPLATE_FILE" | while read -r var; do
|
||||||
|
if [ -z "${!var}" ]; then
|
||||||
|
echo "$var"
|
||||||
|
fi
|
||||||
|
done)
|
||||||
|
|
||||||
|
if [ -n "$UNRESOLVED" ]; then
|
||||||
|
echo "Error: Unresolved variable placeholders detected in $TEMPLATE_FILE!"
|
||||||
|
echo "Ensure all variables are defined in .env.$ENV. Missing: $UNRESOLVED"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Backup existing output file if it exists
|
||||||
|
if [ -f "$OUTPUT_FILE" ]; then
|
||||||
|
mv "$OUTPUT_FILE" "${OUTPUT_FILE}.bak"
|
||||||
|
echo "Backup created for $OUTPUT_FILE as ${OUTPUT_FILE}.bak"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Replace placeholders with environment variables
|
||||||
|
sed_script=""
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
# Skip invalid variable names
|
||||||
|
if [[ "$key" =~ ^[A-Za-z_][A-Za-z0-9_]*$ ]]; then
|
||||||
|
# Escape special characters in the key and value for sed
|
||||||
|
escaped_key=$(escape_sed_special_chars "${key}")
|
||||||
|
escaped_value=$(escape_sed_special_chars "${!key}")
|
||||||
|
sed_script+="s|\${${escaped_key}}|${escaped_value}|g;"
|
||||||
|
fi
|
||||||
|
done < <(env)
|
||||||
|
|
||||||
|
# Generate the output file
|
||||||
|
sed -e "$sed_script" "$TEMPLATE_FILE" > "$OUTPUT_FILE"
|
||||||
|
echo "Generated $OUTPUT_FILE from $TEMPLATE_FILE"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
# Keep the terminal open at the end
|
||||||
|
echo "Script completed. Press any key to exit..."
|
||||||
|
read -n 1 -s
|
||||||
17
Linux/Development/push-scripts-to-repo.bat
Normal file
17
Linux/Development/push-scripts-to-repo.bat
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
@echo off
|
||||||
|
:: Add all files to Git
|
||||||
|
git add .
|
||||||
|
|
||||||
|
:: Prompt for commit message
|
||||||
|
set /p commitMessage="Enter the commit message: "
|
||||||
|
|
||||||
|
:: Commit the changes
|
||||||
|
git commit -m "%commitMessage%"
|
||||||
|
|
||||||
|
:: Confirm if the user wants to push the changes
|
||||||
|
set /p confirmPush="Do you want to push the changes to the main branch? (yes/no): "
|
||||||
|
if /i "%confirmPush%"=="yes" (
|
||||||
|
git push origin
|
||||||
|
) else (
|
||||||
|
echo Changes not pushed.
|
||||||
|
)
|
||||||
17
Linux/Development/push-scripts-to-repo.sh
Normal file
17
Linux/Development/push-scripts-to-repo.sh
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Add all files to Git
|
||||||
|
git add .
|
||||||
|
|
||||||
|
# Prompt for commit message
|
||||||
|
read -p "Enter the commit message: " commitMessage
|
||||||
|
|
||||||
|
# Commit the changes
|
||||||
|
git commit -m "$commitMessage"
|
||||||
|
|
||||||
|
# Confirm if the user wants to push the changes
|
||||||
|
read -p "Do you want to push the changes to the main branch? (yes/no): " confirmPush
|
||||||
|
if [[ "$confirmPush" == "yes" ]]; then
|
||||||
|
git push origin
|
||||||
|
else
|
||||||
|
echo "Changes not pushed."
|
||||||
|
fi
|
||||||
109
Linux/Development/startup-proxy-dev.sh
Normal file
109
Linux/Development/startup-proxy-dev.sh
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
EXTENSIONS="yml json conf toml" # Space-separated list of extensions
|
||||||
|
ENV="production" # Change this to the environment you need
|
||||||
|
DRY_RUN="false" # Change to true if you want to simulate changes without modifying files
|
||||||
|
MAX_BACKUPS=3 # Maximum number of backup files to keep
|
||||||
|
# Load environment variables from .env.production file
|
||||||
|
ENV_FILE=".env.production"
|
||||||
|
if [ -f "$ENV_FILE" ]; then
|
||||||
|
echo "Loading environment variables from $ENV_FILE..."
|
||||||
|
# Read each line in .env.production
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
# Skip empty lines and comments
|
||||||
|
if [ -z "$key" ] || [ "$(printf '%s' "$key" | cut -c1)" = "#" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
# Remove potential spaces around the variable and export it
|
||||||
|
key=$(echo "$key" | xargs)
|
||||||
|
value=$(echo "$value" | xargs)
|
||||||
|
export "$key=$value"
|
||||||
|
done < "$ENV_FILE"
|
||||||
|
echo "Environment variables loaded successfully."
|
||||||
|
else
|
||||||
|
echo "Error: $ENV_FILE not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Function to escape special characters for sed
|
||||||
|
escape_sed_special_chars() {
|
||||||
|
echo "$1" | sed 's/[][\/.^$*]/\\&/g'
|
||||||
|
}
|
||||||
|
# Function to manage backups
|
||||||
|
manage_backups() {
|
||||||
|
local output_file="$1"
|
||||||
|
local timestamp
|
||||||
|
timestamp=$(date +"%Y%m%d_%H%M%S")
|
||||||
|
local backup_file="${output_file}_${timestamp}.bak"
|
||||||
|
|
||||||
|
# Create backup
|
||||||
|
cp "$output_file" "$backup_file"
|
||||||
|
echo "Backed up $output_file to $backup_file"
|
||||||
|
|
||||||
|
# Find and remove old backups, keeping only the most recent MAX_BACKUPS
|
||||||
|
find "$(dirname "$output_file")" -maxdepth 1 \
|
||||||
|
-name "$(basename "$output_file")_*.bak" | \
|
||||||
|
sort -r | \
|
||||||
|
tail -n +$((MAX_BACKUPS + 1)) | \
|
||||||
|
xargs -r rm
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Environment setup complete. Starting template processing..."
|
||||||
|
# Process template files for each extension
|
||||||
|
for EXT in $EXTENSIONS; do
|
||||||
|
echo "Processing files with extension .template.$EXT..."
|
||||||
|
|
||||||
|
# Find template files recursively
|
||||||
|
TEMPLATES=$(find . -type f -name "*.template.$EXT")
|
||||||
|
|
||||||
|
if [ -z "$TEMPLATES" ]; then
|
||||||
|
echo "No template files found for extension .template.$EXT"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Found the following template files:"
|
||||||
|
echo "$TEMPLATES"
|
||||||
|
|
||||||
|
echo "$TEMPLATES" | while read -r TEMPLATE_FILE; do
|
||||||
|
# Remove .template from the end to generate output file
|
||||||
|
OUTPUT_FILE="${TEMPLATE_FILE%.template.$EXT}.$EXT"
|
||||||
|
echo "Processing $TEMPLATE_FILE into $OUTPUT_FILE..."
|
||||||
|
|
||||||
|
if [ "$DRY_RUN" = "true" ]; then
|
||||||
|
echo "Dry run: Would process $TEMPLATE_FILE into $OUTPUT_FILE"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create backup if output file already exists
|
||||||
|
if [ -f "$OUTPUT_FILE" ]; then
|
||||||
|
manage_backups "$OUTPUT_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Validate unresolved placeholders
|
||||||
|
UNRESOLVED=$(grep -o '\${[A-Za-z_][A-Za-z0-9_]*}' "$TEMPLATE_FILE" | sed 's/[${}]//g' | while read -r var; do
|
||||||
|
if [ -z "$(eval echo "\$$var")" ]; then
|
||||||
|
echo "$var"
|
||||||
|
fi
|
||||||
|
done)
|
||||||
|
if [ -n "$UNRESOLVED" ]; then
|
||||||
|
echo "Error: Unresolved variables detected in $TEMPLATE_FILE!"
|
||||||
|
echo "Ensure the following variables are defined in $ENV_FILE: $UNRESOLVED"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Replace placeholders with environment variable values
|
||||||
|
sed_script=""
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
if [ -n "$key" ] && [ "${key#\#}" = "$key" ]; then
|
||||||
|
escaped_key=$(escape_sed_special_chars "$key")
|
||||||
|
escaped_value=$(escape_sed_special_chars "$(eval echo "\$$key")")
|
||||||
|
sed_script="${sed_script}s|\${${escaped_key}}|${escaped_value}|g;"
|
||||||
|
fi
|
||||||
|
done < "$ENV_FILE"
|
||||||
|
# Generate the output file
|
||||||
|
sed -e "$sed_script" "$TEMPLATE_FILE" > "$OUTPUT_FILE"
|
||||||
|
echo "Processed $TEMPLATE_FILE into $OUTPUT_FILE"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
echo "Template processing complete. Starting the server in 5 seconds..."
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
|
||||||
|
java -Xms256M -Xmx1024M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar velocity.jar
|
||||||
108
Linux/Development/startup-server-dev.sh
Normal file
108
Linux/Development/startup-server-dev.sh
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
EXTENSIONS="yml json conf properties" # Space-separated list of extensions
|
||||||
|
ENV="production" # Change this to the environment you need
|
||||||
|
DRY_RUN="false" # Change to true if you want to simulate changes without modifying files
|
||||||
|
MAX_BACKUPS=3 # Maximum number of backup files to keep
|
||||||
|
# Load environment variables from .env.production file
|
||||||
|
ENV_FILE=".env.production"
|
||||||
|
if [ -f "$ENV_FILE" ]; then
|
||||||
|
echo "Loading environment variables from $ENV_FILE..."
|
||||||
|
# Read each line in .env.production
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
# Skip empty lines and comments
|
||||||
|
if [ -z "$key" ] || [ "$(printf '%s' "$key" | cut -c1)" = "#" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
# Remove potential spaces around the variable and export it
|
||||||
|
key=$(echo "$key" | xargs)
|
||||||
|
value=$(echo "$value" | xargs)
|
||||||
|
export "$key=$value"
|
||||||
|
done < "$ENV_FILE"
|
||||||
|
echo "Environment variables loaded successfully."
|
||||||
|
else
|
||||||
|
echo "Error: $ENV_FILE not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Function to escape special characters for sed
|
||||||
|
escape_sed_special_chars() {
|
||||||
|
echo "$1" | sed 's/[][\/.^$*]/\\&/g'
|
||||||
|
}
|
||||||
|
# Function to manage backups
|
||||||
|
manage_backups() {
|
||||||
|
local output_file="$1"
|
||||||
|
local timestamp
|
||||||
|
timestamp=$(date +"%Y%m%d_%H%M%S")
|
||||||
|
local backup_file="${output_file}_${timestamp}.bak"
|
||||||
|
|
||||||
|
# Create backup
|
||||||
|
cp "$output_file" "$backup_file"
|
||||||
|
echo "Backed up $output_file to $backup_file"
|
||||||
|
|
||||||
|
# Find and remove old backups, keeping only the most recent MAX_BACKUPS
|
||||||
|
find "$(dirname "$output_file")" -maxdepth 1 \
|
||||||
|
-name "$(basename "$output_file")_*.bak" | \
|
||||||
|
sort -r | \
|
||||||
|
tail -n +$((MAX_BACKUPS + 1)) | \
|
||||||
|
xargs -r rm
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Environment setup complete. Starting template processing..."
|
||||||
|
# Process template files for each extension
|
||||||
|
for EXT in $EXTENSIONS; do
|
||||||
|
echo "Processing files with extension .template.$EXT..."
|
||||||
|
|
||||||
|
# Find template files recursively
|
||||||
|
TEMPLATES=$(find . -type f -name "*.template.$EXT")
|
||||||
|
|
||||||
|
if [ -z "$TEMPLATES" ]; then
|
||||||
|
echo "No template files found for extension .template.$EXT"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Found the following template files:"
|
||||||
|
echo "$TEMPLATES"
|
||||||
|
|
||||||
|
echo "$TEMPLATES" | while read -r TEMPLATE_FILE; do
|
||||||
|
# Remove .template from the end to generate output file
|
||||||
|
OUTPUT_FILE="${TEMPLATE_FILE%.template.$EXT}.$EXT"
|
||||||
|
echo "Processing $TEMPLATE_FILE into $OUTPUT_FILE..."
|
||||||
|
|
||||||
|
if [ "$DRY_RUN" = "true" ]; then
|
||||||
|
echo "Dry run: Would process $TEMPLATE_FILE into $OUTPUT_FILE"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create backup if output file already exists
|
||||||
|
if [ -f "$OUTPUT_FILE" ]; then
|
||||||
|
manage_backups "$OUTPUT_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Validate unresolved placeholders
|
||||||
|
UNRESOLVED=$(grep -o '\${[A-Za-z_][A-Za-z0-9_]*}' "$TEMPLATE_FILE" | sed 's/[${}]//g' | while read -r var; do
|
||||||
|
if [ -z "$(eval echo "\$$var")" ]; then
|
||||||
|
echo "$var"
|
||||||
|
fi
|
||||||
|
done)
|
||||||
|
if [ -n "$UNRESOLVED" ]; then
|
||||||
|
echo "Error: Unresolved variables detected in $TEMPLATE_FILE!"
|
||||||
|
echo "Ensure the following variables are defined in $ENV_FILE: $UNRESOLVED"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Replace placeholders with environment variable values
|
||||||
|
sed_script=""
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
if [ -n "$key" ] && [ "${key#\#}" = "$key" ]; then
|
||||||
|
escaped_key=$(escape_sed_special_chars "$key")
|
||||||
|
escaped_value=$(escape_sed_special_chars "$(eval echo "\$$key")")
|
||||||
|
sed_script="${sed_script}s|\${${escaped_key}}|${escaped_value}|g;"
|
||||||
|
fi
|
||||||
|
done < "$ENV_FILE"
|
||||||
|
# Generate the output file
|
||||||
|
sed -e "$sed_script" "$TEMPLATE_FILE" > "$OUTPUT_FILE"
|
||||||
|
echo "Processed $TEMPLATE_FILE into $OUTPUT_FILE"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
echo "Template processing complete. Starting the server in 5 seconds..."
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
java -Xms1024M -Xmx4192M --add-modules=jdk.incubator.vector -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -jar server.jar --nogui
|
||||||
116
Linux/Server/startup-proxy.sh
Normal file
116
Linux/Server/startup-proxy.sh
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Check if Git repo needs updating
|
||||||
|
if [ -d .git ]; then
|
||||||
|
echo "Pulling latest changes from the repository..."
|
||||||
|
git pull "https://${GIT_USERNAME}:${GIT_PAT}@${GIT_REPO_URL}" "${GIT_BRANCH}" || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Constants
|
||||||
|
EXTENSIONS="yml json conf toml" # Space-separated list of extensions
|
||||||
|
ENV="production" # Change this to the environment you need
|
||||||
|
DRY_RUN="false" # Change to true if you want to simulate changes without modifying files
|
||||||
|
MAX_BACKUPS=3 # Maximum number of backup files to keep
|
||||||
|
# Load environment variables from .env.production file
|
||||||
|
ENV_FILE=".env.production"
|
||||||
|
if [ -f "$ENV_FILE" ]; then
|
||||||
|
echo "Loading environment variables from $ENV_FILE..."
|
||||||
|
# Read each line in .env.production
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
# Skip empty lines and comments
|
||||||
|
if [ -z "$key" ] || [ "$(printf '%s' "$key" | cut -c1)" = "#" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
# Remove potential spaces around the variable and export it
|
||||||
|
key=$(echo "$key" | xargs)
|
||||||
|
value=$(echo "$value" | xargs)
|
||||||
|
export "$key=$value"
|
||||||
|
done < "$ENV_FILE"
|
||||||
|
echo "Environment variables loaded successfully."
|
||||||
|
else
|
||||||
|
echo "Error: $ENV_FILE not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Function to escape special characters for sed
|
||||||
|
escape_sed_special_chars() {
|
||||||
|
echo "$1" | sed 's/[][\/.^$*]/\\&/g'
|
||||||
|
}
|
||||||
|
# Function to manage backups
|
||||||
|
manage_backups() {
|
||||||
|
local output_file="$1"
|
||||||
|
local timestamp
|
||||||
|
timestamp=$(date +"%Y%m%d_%H%M%S")
|
||||||
|
local backup_file="${output_file}_${timestamp}.bak"
|
||||||
|
|
||||||
|
# Create backup
|
||||||
|
cp "$output_file" "$backup_file"
|
||||||
|
echo "Backed up $output_file to $backup_file"
|
||||||
|
|
||||||
|
# Find and remove old backups, keeping only the most recent MAX_BACKUPS
|
||||||
|
find "$(dirname "$output_file")" -maxdepth 1 \
|
||||||
|
-name "$(basename "$output_file")_*.bak" | \
|
||||||
|
sort -r | \
|
||||||
|
tail -n +$((MAX_BACKUPS + 1)) | \
|
||||||
|
xargs -r rm
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Environment setup complete. Starting template processing..."
|
||||||
|
# Process template files for each extension
|
||||||
|
for EXT in $EXTENSIONS; do
|
||||||
|
echo "Processing files with extension .template.$EXT..."
|
||||||
|
|
||||||
|
# Find template files recursively
|
||||||
|
TEMPLATES=$(find . -type f -name "*.template.$EXT")
|
||||||
|
|
||||||
|
if [ -z "$TEMPLATES" ]; then
|
||||||
|
echo "No template files found for extension .template.$EXT"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Found the following template files:"
|
||||||
|
echo "$TEMPLATES"
|
||||||
|
|
||||||
|
echo "$TEMPLATES" | while read -r TEMPLATE_FILE; do
|
||||||
|
# Remove .template from the end to generate output file
|
||||||
|
OUTPUT_FILE="${TEMPLATE_FILE%.template.$EXT}.$EXT"
|
||||||
|
echo "Processing $TEMPLATE_FILE into $OUTPUT_FILE..."
|
||||||
|
|
||||||
|
if [ "$DRY_RUN" = "true" ]; then
|
||||||
|
echo "Dry run: Would process $TEMPLATE_FILE into $OUTPUT_FILE"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create backup if output file already exists
|
||||||
|
if [ -f "$OUTPUT_FILE" ]; then
|
||||||
|
manage_backups "$OUTPUT_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Validate unresolved placeholders
|
||||||
|
UNRESOLVED=$(grep -o '\${[A-Za-z_][A-Za-z0-9_]*}' "$TEMPLATE_FILE" | sed 's/[${}]//g' | while read -r var; do
|
||||||
|
if [ -z "$(eval echo "\$$var")" ]; then
|
||||||
|
echo "$var"
|
||||||
|
fi
|
||||||
|
done)
|
||||||
|
if [ -n "$UNRESOLVED" ]; then
|
||||||
|
echo "Error: Unresolved variables detected in $TEMPLATE_FILE!"
|
||||||
|
echo "Ensure the following variables are defined in $ENV_FILE: $UNRESOLVED"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Replace placeholders with environment variable values
|
||||||
|
sed_script=""
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
if [ -n "$key" ] && [ "${key#\#}" = "$key" ]; then
|
||||||
|
escaped_key=$(escape_sed_special_chars "$key")
|
||||||
|
escaped_value=$(escape_sed_special_chars "$(eval echo "\$$key")")
|
||||||
|
sed_script="${sed_script}s|\${${escaped_key}}|${escaped_value}|g;"
|
||||||
|
fi
|
||||||
|
done < "$ENV_FILE"
|
||||||
|
# Generate the output file
|
||||||
|
sed -e "$sed_script" "$TEMPLATE_FILE" > "$OUTPUT_FILE"
|
||||||
|
echo "Processed $TEMPLATE_FILE into $OUTPUT_FILE"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
echo "Template processing complete. Starting the server in 5 seconds..."
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
|
||||||
|
java -Xms${SERVER_MIN_MEMORY}M -Xmx${SERVER_MEMORY}M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar ${SERVER_JARFILE}
|
||||||
115
Linux/Server/startup-server.sh
Normal file
115
Linux/Server/startup-server.sh
Normal file
@@ -0,0 +1,115 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Check if Git repo needs updating
|
||||||
|
if [ -d .git ]; then
|
||||||
|
echo "Pulling latest changes from the repository..."
|
||||||
|
git pull "https://${GIT_USERNAME}:${GIT_PAT}@${GIT_REPO_URL}" "${GIT_BRANCH}" || true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Constants
|
||||||
|
EXTENSIONS="yml json conf properties" # Space-separated list of extensions
|
||||||
|
ENV="production" # Change this to the environment you need
|
||||||
|
DRY_RUN="false" # Change to true if you want to simulate changes without modifying files
|
||||||
|
MAX_BACKUPS=3 # Maximum number of backup files to keep
|
||||||
|
# Load environment variables from .env.production file
|
||||||
|
ENV_FILE=".env.production"
|
||||||
|
if [ -f "$ENV_FILE" ]; then
|
||||||
|
echo "Loading environment variables from $ENV_FILE..."
|
||||||
|
# Read each line in .env.production
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
# Skip empty lines and comments
|
||||||
|
if [ -z "$key" ] || [ "$(printf '%s' "$key" | cut -c1)" = "#" ]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
# Remove potential spaces around the variable and export it
|
||||||
|
key=$(echo "$key" | xargs)
|
||||||
|
value=$(echo "$value" | xargs)
|
||||||
|
export "$key=$value"
|
||||||
|
done < "$ENV_FILE"
|
||||||
|
echo "Environment variables loaded successfully."
|
||||||
|
else
|
||||||
|
echo "Error: $ENV_FILE not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Function to escape special characters for sed
|
||||||
|
escape_sed_special_chars() {
|
||||||
|
echo "$1" | sed 's/[][\/.^$*]/\\&/g'
|
||||||
|
}
|
||||||
|
# Function to manage backups
|
||||||
|
manage_backups() {
|
||||||
|
local output_file="$1"
|
||||||
|
local timestamp
|
||||||
|
timestamp=$(date +"%Y%m%d_%H%M%S")
|
||||||
|
local backup_file="${output_file}_${timestamp}.bak"
|
||||||
|
|
||||||
|
# Create backup
|
||||||
|
cp "$output_file" "$backup_file"
|
||||||
|
echo "Backed up $output_file to $backup_file"
|
||||||
|
|
||||||
|
# Find and remove old backups, keeping only the most recent MAX_BACKUPS
|
||||||
|
find "$(dirname "$output_file")" -maxdepth 1 \
|
||||||
|
-name "$(basename "$output_file")_*.bak" | \
|
||||||
|
sort -r | \
|
||||||
|
tail -n +$((MAX_BACKUPS + 1)) | \
|
||||||
|
xargs -r rm
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Environment setup complete. Starting template processing..."
|
||||||
|
# Process template files for each extension
|
||||||
|
for EXT in $EXTENSIONS; do
|
||||||
|
echo "Processing files with extension .template.$EXT..."
|
||||||
|
|
||||||
|
# Find template files recursively
|
||||||
|
TEMPLATES=$(find . -type f -name "*.template.$EXT")
|
||||||
|
|
||||||
|
if [ -z "$TEMPLATES" ]; then
|
||||||
|
echo "No template files found for extension .template.$EXT"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Found the following template files:"
|
||||||
|
echo "$TEMPLATES"
|
||||||
|
|
||||||
|
echo "$TEMPLATES" | while read -r TEMPLATE_FILE; do
|
||||||
|
# Remove .template from the end to generate output file
|
||||||
|
OUTPUT_FILE="${TEMPLATE_FILE%.template.$EXT}.$EXT"
|
||||||
|
echo "Processing $TEMPLATE_FILE into $OUTPUT_FILE..."
|
||||||
|
|
||||||
|
if [ "$DRY_RUN" = "true" ]; then
|
||||||
|
echo "Dry run: Would process $TEMPLATE_FILE into $OUTPUT_FILE"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create backup if output file already exists
|
||||||
|
if [ -f "$OUTPUT_FILE" ]; then
|
||||||
|
manage_backups "$OUTPUT_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Validate unresolved placeholders
|
||||||
|
UNRESOLVED=$(grep -o '\${[A-Za-z_][A-Za-z0-9_]*}' "$TEMPLATE_FILE" | sed 's/[${}]//g' | while read -r var; do
|
||||||
|
if [ -z "$(eval echo "\$$var")" ]; then
|
||||||
|
echo "$var"
|
||||||
|
fi
|
||||||
|
done)
|
||||||
|
if [ -n "$UNRESOLVED" ]; then
|
||||||
|
echo "Error: Unresolved variables detected in $TEMPLATE_FILE!"
|
||||||
|
echo "Ensure the following variables are defined in $ENV_FILE: $UNRESOLVED"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Replace placeholders with environment variable values
|
||||||
|
sed_script=""
|
||||||
|
while IFS='=' read -r key value; do
|
||||||
|
if [ -n "$key" ] && [ "${key#\#}" = "$key" ]; then
|
||||||
|
escaped_key=$(escape_sed_special_chars "$key")
|
||||||
|
escaped_value=$(escape_sed_special_chars "$(eval echo "\$$key")")
|
||||||
|
sed_script="${sed_script}s|\${${escaped_key}}|${escaped_value}|g;"
|
||||||
|
fi
|
||||||
|
done < "$ENV_FILE"
|
||||||
|
# Generate the output file
|
||||||
|
sed -e "$sed_script" "$TEMPLATE_FILE" > "$OUTPUT_FILE"
|
||||||
|
echo "Processed $TEMPLATE_FILE into $OUTPUT_FILE"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
echo "Template processing complete. Starting the server in 5 seconds..."
|
||||||
|
sleep 5
|
||||||
|
|
||||||
|
java -Xms${SERVER_MIN_MEMORY}M -Xmx${SERVER_MEMORY}M --add-modules=jdk.incubator.vector -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -jar ${SERVER_JARFILE} --nogui
|
||||||
24
Windows/MERGE-TO-PRODUCTION.bat
Normal file
24
Windows/MERGE-TO-PRODUCTION.bat
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
:: Prompt for confirmation
|
||||||
|
set /p confirmation="Are you sure you want to merge 'development' into 'production'? (y/n): "
|
||||||
|
|
||||||
|
if /i "%confirmation%"=="y" (
|
||||||
|
:: Switch to the production branch
|
||||||
|
git checkout production
|
||||||
|
|
||||||
|
:: Pull the latest changes for production
|
||||||
|
git pull origin production
|
||||||
|
|
||||||
|
:: Merge the development branch into production
|
||||||
|
git merge development
|
||||||
|
|
||||||
|
:: Check if the merge was successful
|
||||||
|
if %errorlevel%==0 (
|
||||||
|
echo Merge successful. Please resolve any conflicts and commit.
|
||||||
|
) else (
|
||||||
|
echo Merge failed. Please resolve conflicts manually.
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
echo Merge aborted.
|
||||||
|
)
|
||||||
58
Windows/PUSH-TO-DEVELOPMENT.bat
Normal file
58
Windows/PUSH-TO-DEVELOPMENT.bat
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal ENABLEDELAYEDEXPANSION
|
||||||
|
|
||||||
|
:: Ensure we're inside a Git repository
|
||||||
|
git rev-parse --git-dir > NUL 2>&1
|
||||||
|
if ERRORLEVEL 1 (
|
||||||
|
echo Error: This directory is not a Git repository.
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Get the current branch name
|
||||||
|
FOR /F "delims=" %%i IN ('git symbolic-ref --short HEAD') DO SET CURRENT_BRANCH=%%i
|
||||||
|
|
||||||
|
:: Check if the current branch is 'development'
|
||||||
|
if NOT "!CURRENT_BRANCH!"=="development" (
|
||||||
|
echo Error: You are not on the 'development' branch.
|
||||||
|
echo Please switch to the 'development' branch and run this script again.
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Prompt for a commit message
|
||||||
|
set /p COMMIT_MESSAGE=Enter your commit message:
|
||||||
|
|
||||||
|
if "%COMMIT_MESSAGE%"=="" (
|
||||||
|
echo Error: Commit message cannot be empty.
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Add all changes
|
||||||
|
git add --all
|
||||||
|
|
||||||
|
:: Show the changes to be committed
|
||||||
|
echo The following changes will be committed:
|
||||||
|
git status --short
|
||||||
|
|
||||||
|
:: Prompt for confirmation to commit
|
||||||
|
set /p CONFIRMATION=Do you want to proceed with the commit and push to 'development' branch? (yes/no):
|
||||||
|
|
||||||
|
if /I NOT "%CONFIRMATION%"=="yes" (
|
||||||
|
echo Aborting commit and push to 'development' branch.
|
||||||
|
exit /b 0
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Commit the changes with the provided message
|
||||||
|
git commit -m "%COMMIT_MESSAGE%"
|
||||||
|
|
||||||
|
:: Show the last commit
|
||||||
|
echo Last commit on 'development' branch:
|
||||||
|
git --no-pager log -1 --pretty=format:"%%h - %%s (%%an, %%ar)"
|
||||||
|
echo.
|
||||||
|
|
||||||
|
:: Pull the latest changes from the remote 'development' branch
|
||||||
|
git pull origin development --rebase
|
||||||
|
|
||||||
|
:: Push the 'development' branch to the remote repository
|
||||||
|
git push origin development
|
||||||
|
|
||||||
|
echo Successfully pushed changes to 'development' branch.
|
||||||
66
Windows/PUSH-TO-PRODUCTION.bat
Normal file
66
Windows/PUSH-TO-PRODUCTION.bat
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal ENABLEDELAYEDEXPANSION
|
||||||
|
|
||||||
|
:: Ensure we're inside a Git repository
|
||||||
|
git rev-parse --git-dir > NUL 2>&1
|
||||||
|
if ERRORLEVEL 1 (
|
||||||
|
echo Error: This directory is not a Git repository.
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Get the current branch name
|
||||||
|
FOR /F "delims=" %%i IN ('git symbolic-ref --short HEAD') DO SET CURRENT_BRANCH=%%i
|
||||||
|
|
||||||
|
:: Check if the current branch is 'development'
|
||||||
|
if NOT "!CURRENT_BRANCH!"=="development" (
|
||||||
|
echo Error: You are not on the 'development' branch.
|
||||||
|
echo Please switch to the 'development' branch and run this script again.
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Prompt for a commit message
|
||||||
|
set /p COMMIT_MESSAGE=Enter your commit message:
|
||||||
|
|
||||||
|
if "%COMMIT_MESSAGE%"=="" (
|
||||||
|
echo Error: Commit message cannot be empty.
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Add all changes
|
||||||
|
git add --all
|
||||||
|
|
||||||
|
:: Commit the changes with the provided message
|
||||||
|
git commit -m "%COMMIT_MESSAGE%"
|
||||||
|
|
||||||
|
:: Show the last commit
|
||||||
|
echo Last commit on 'development' branch:
|
||||||
|
git --no-pager log -1 --pretty=format:"%%h - %%s (%%an, %%ar)"
|
||||||
|
echo.
|
||||||
|
|
||||||
|
:: Prompt for confirmation to push to 'production'
|
||||||
|
set /p CONFIRMATION=Do you want to merge 'development' into 'production' and push to the remote repository? (yes/no):
|
||||||
|
|
||||||
|
if /I NOT "%CONFIRMATION%"=="yes" (
|
||||||
|
echo Aborting push to 'production' branch.
|
||||||
|
exit /b 0
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Fetch the latest changes from the remote repository
|
||||||
|
git fetch origin
|
||||||
|
|
||||||
|
:: Switch to the 'production' branch
|
||||||
|
git checkout production
|
||||||
|
|
||||||
|
:: Pull the latest changes in 'production' branch
|
||||||
|
git pull origin production
|
||||||
|
|
||||||
|
:: Merge 'development' into 'production'
|
||||||
|
git merge --no-ff development -m "Merge branch 'development' into 'production'"
|
||||||
|
|
||||||
|
:: Push the 'production' branch to the remote repository
|
||||||
|
git push origin production
|
||||||
|
|
||||||
|
:: Switch back to the 'development' branch
|
||||||
|
git checkout development
|
||||||
|
|
||||||
|
echo Successfully pushed changes from 'development' to 'production' branch.
|
||||||
14
Windows/start-all-servers.bat
Normal file
14
Windows/start-all-servers.bat
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
@echo off
|
||||||
|
echo Starting all servers...
|
||||||
|
|
||||||
|
REM Open the Velocity proxy in a new Git Bash window
|
||||||
|
start "" "C:\Program Files\Git\bin\bash.exe" -c "C:/Users/pomam/Documents/Feyhallow/Development Environment/Development Servers/Proxy/startup-proxy-dev.sh"
|
||||||
|
|
||||||
|
REM Open the first Minecraft server in a new Git Bash window
|
||||||
|
start "" "C:\Program Files\Git\bin\bash.exe" -c "C:/Users/pomam/Documents/Feyhallow/Development Environment/Development Servers/Lobby/startup-server-dev.sh"
|
||||||
|
|
||||||
|
REM Open the second Minecraft server in a new Git Bash window
|
||||||
|
start "" "C:\Program Files\Git\bin\bash.exe" -c "C:/Users/pomam/Documents/Feyhallow/Development Environment/Development Servers/Survie/startup-server-dev.sh"
|
||||||
|
|
||||||
|
echo All servers are starting in separate windows!
|
||||||
|
pause
|
||||||
Reference in New Issue
Block a user