[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/Source-Python-Dev-Team/Source.Python/v742/src/Build.sh [Back]  [Original]

#!/usr/bin/env sh

# Store the start directory for later reference
STARTDIR="$PWD"

# Set this to the number of processor cores you would like to use
NUM_CORES=${NUM_CORES:=1}


# A function to choose the branch to build against
ChooseBranch () {

    echo "Choose the branch you wish to build against:"
    echo ""

    # Store a base counting variable
    num=0

    # Navigate to the makefiles/branch directory
    cd makefiles/branch

    # Loop through all branches supported by the plugin
    for filepath in $(find . -maxdepth 1 -type f -print0 | xargs -0)
    do

        # Increment the counter
        num=$(( $num + 1))

        # Get the name of the file
        filename=${filepath##*/}
        file=${filename%.*}

        # Store the option by its number
        eval option_${num}=${file}

        # Print the current option
        echo -e "\t($num) $file"
    done

    echo ""

    # Request a choice of branch
    read choice

    # Was the choice invalid?
    if ! echo $choice | egrep -q '^[0-9]+$'; then
        ChooseBranch
    elif [ $choice -le 0 ] ; then
        ChooseBranch
    elif [ $choice -gt $num ] ; then
        ChooseBranch

    # The choice was valid
    else

        # Get the branch chosen
        branch=option_$choice
        BRANCH=${!branch}

        # Show the build-type options
        CloneRepo

    fi

}


# A function to create the clone and checkout the selected branch
CloneRepo () {

    # Set the branch's repository directory
    BRANCHDIR="$STARTDIR/hl2sdk/$BRANCH"

    # If the hl2sdk directory does not exist, create the clone
    if [ ! -d "$BRANCHDIR" ]; then
        mkdir -p "$BRANCHDIR"
        cd "$BRANCHDIR"
        git clone https://github.com/alliedmodders/hl2sdk.git .
    else
        cd "$BRANCHDIR"
    fi

    # Try to checkout the selected branch and revert all changes
    if git checkout -f $BRANCH; then
        PullChanges
    else
        echo "Unknown branch to checkout"
    fi
}


# A function to pull repo changes
PullChanges () {

    # Pull the newest changeset from github/alliedmods/hl2sdk
    if git pull; then

        # Move the patched files
        MovePatches

    else

        # Print a message that an error was encountered
        echo "git pull encountered an error."

    fi
}


# A function to move patched files
MovePatches () {

    # Set the branch's patch directory
    PATCHDIR="$STARTDIR/patches/$BRANCH"

    # Copy any patched files over if any exist for the specific branch
    if [ -d "$PATCHDIR" ]; then
        cd "$PATCHDIR"
        cp -r * "$BRANCHDIR"
    fi

    # Create the build files for the branch
    CreateBuild
}


# A function to create build files
CreateBuild () {

    # Navigate back to the starting directory
    cd "$STARTDIR"

    # Set the branch's build directory
    BUILDDIR="$STARTDIR/Builds/Linux/$BRANCH"

    # Does the build directory exist (make it if not)?
    if [ ! -d "$BUILDDIR" ]; then
        mkdir -p "$BUILDDIR"
    fi

    cmake . -B"$BUILDDIR" -DBRANCH=$BRANCH

    # Navigate to the ../Builds/ directory
    cd "$BUILDDIR"

    # Build the binaries
    make clean
    make -j$NUM_CORES 2>&1 | tee build.log

    # Set the exit code to the exit code of the make command. Otherwise it
    # would be the exit code of the pipe command
    test ${PIPESTATUS[0]} -eq 0

}
if [ "$#" -eq "1" ]; then
    BRANCH=$1
    CloneRepo
else
    ChooseBranch
fi

Web Proxy Viewer  |  New URL  |  Original Page