[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: upgrade.sh
#!/usr/bin/env bash ## # Include dotfiles on file operations # shopt -s dotglob ## # App # function main() { showAppTitle prepareEnvironment $1 displayVariables cleanDirectories downloadRepository extractZip copyClasses copyContracts copyTraits copyStubs downloadTests renameNamespace fillAliases removeDownloadedRepositoryDir runTests } ## # Prepare the environment # function prepareEnvironment() { title "Preparing environment variables..." ## # Define all variables # requestedVersion=$1 rootDir=. baseDir=${rootDir}/src vendor=laravel project=framework oldNamespace='Illuminate' newNamespace='IlluminateAgnostic\\Arr' oldVanillaNamespace='Vanilla' newVanillaNamespace='Illuminate' repository=https://github.com/$vendor/$project.git getCurrentVersionFromGitHub repositoryDir=${rootDir}/$project-${collectionVersion} repositorySrcDir=${repositoryDir}/src collectionZip=${rootDir}/$project-${collectionVersion}.zip collectionZipUrl=https://github.com/$vendor/$project/archive/v${collectionVersion}.zip oldNamespaceDir=${repositorySrcDir}/${oldNamespace} newNamespaceDir=${baseDir} testsDir=${rootDir}/tests testsBaseUrl=https://raw.githubusercontent.com/${vendor}/${project}/v${collectionVersion}/tests stubsDir=${rootDir}/stubs aliasFile=${baseDir}/Support/alias.php carriageReturn=" " classes=( 'Support/Arr' 'Support/Collection' 'Support/Carbon' 'Support/HigherOrderCollectionProxy' 'Support/HtmlString' 'Support/Debug/Dumper' 'Support/Debug/HtmlDumper' 'Support/Enumerable' 'Support/LazyCollection' ) traits=( 'Support/Traits/Macroable.php' 'Support/Traits/EnumeratesValues.php' ) contracts=( 'Contracts/Support/Arrayable.php' 'Contracts/Support/Jsonable.php' 'Contracts/Support/Htmlable.php' ) tests=( 'Support/SupportMacroableTest.php' 'Support/SupportArrTest.php' 'Support/SupportCollectionTest.php' ) stubs=( 'src/Support/alias.php' 'src/Support/helpers.php' 'tests/bootstrap.php' 'tests/ArrTest.php' ) } ## # Display all variables # function displayVariables() { title "Displaying variables" echo baseDir = ${baseDir} echo collectionVersion = ${collectionVersion} echo repositoryDir = ${repositoryDir} echo repositorySrcDir = ${repositorySrcDir} echo collectionZip = ${collectionZip} echo baseDir = ${baseDir} echo oldNamespace = ${oldNamespace} echo newNamespace = ${newNamespace} echo oldNamespaceDir = ${oldNamespaceDir} echo newNamespaceDir = ${newNamespaceDir} echo testsDir = ${testsDir} echo testsBaseUrl = ${testsBaseUrl} } ## # Clean the destination directory # function cleanDirectories() { title "Cleaning directories..." if [ -d ${newNamespaceDir} ]; then echo "Cleaning ${newNamespaceDir}..." rm -rf ${newNamespaceDir} fi if [ -d ${testsDir} ]; then echo "Cleaning ${testsDir}..." rm -rf ${testsDir} fi if [ -d ${repositoryDir} ]; then echo "Cleaning ${repositoryDir}..." rm -rf ${repositoryDir} fi } ## # Download a new version # function downloadRepository() { title "Downloading repository..." echo "downloading ${collectionZipUrl} to ${baseDir}" wget ${collectionZipUrl} -O ${collectionZip} >/dev/null 2>&1 } ## # Extract from compressed file # function extractZip() { title "Extracting files..." echo "extracting $project.zip..." unzip ${collectionZip} -d ${rootDir} >/dev/null 2>&1 rm ${collectionZip} } ## # Copy classes # function copyClasses() { title "Copying classes" for class in ${classes[@]}; do echo "copying ${oldNamespaceDir}.php/${class}.php..." mkdir -p $(dirname ${newNamespaceDir}/${class}) cp ${oldNamespaceDir}/${class}.php ${newNamespaceDir}/${class}.php done } ## # Move contracts # function copyContracts() { title "Copying contracts" for contract in ${contracts[@]}; do echo "copying ${oldNamespaceDir}.php/${contract}..." mkdir -p $(dirname ${newNamespaceDir}/${contract}) cp ${oldNamespaceDir}/${contract} ${newNamespaceDir}/${contract} done } ## # Move traits # function copyTraits() { title "Copying traits" for trait in ${traits[@]}; do echo "copying ${oldNamespaceDir}.php/${trait}..." mkdir -p $(dirname ${newNamespaceDir}/${trait}) cp ${oldNamespaceDir}/${trait} ${newNamespaceDir}/${trait} done } ## # Copy classes and contracts # function copyStubs() { title "Copying stubs" for stub in ${stubs[@]}; do echo "- stub: ${rootDir}/${stub}" echo " copying ${stubsDir}/${stub} to ${rootDir}/${stub}..." mkdir -p $(dirname ${rootDir}/${stub}) cp ${stubsDir}/${stub} ${rootDir}/${stub} done } ## # Fill the alias.php file with the list of aliases # function fillAliases() { title "Filling aliases" indent=' ' aliases='CARRIAGERETURN' for class in ${classes[@]}; do aliases="${aliases}${indent}${oldNamespace}/${class}::class => ${newNamespace}/${class}::class,CARRIAGERETURN" done aliases=${aliases//\//\\\\} sed -i "" -e "s|/\*--- ALIASES ---\*/|${aliases}|g" $aliasFile sed -i "" -e "s|CARRIAGERETURN|\\${carriageReturn}|g" $aliasFile } ## # Copy tests to our tests dir # function getCurrentVersionFromGitHub() { title "Getting current repository version" echo "reading $repository..." if [ -z "$requestedVersion" ]; then collectionVersion=$(git ls-remote $repository | grep tags/ | grep -v {} | cut -d \/ -f 3 | cut -d v -f 2 | sort --version-sort | tail -1) else collectionVersion=$requestedVersion fi echo "got $vendor/$project version $collectionVersion" } ## # Download tests to tests dir # function downloadTests() { title "Copying tests" for test in ${tests[@]}; do echo "downloading test ${testsBaseUrl}/${test} to ${testsDir}/${test}..." echo "mkdir -p " $(dirname ${testsDir}/${test}) mkdir -p $(dirname ${testsDir}/${test}) echo "wget ${testsBaseUrl}/${test} -O ${testsDir}/${test}" wget ${testsBaseUrl}/${test} -O ${testsDir}/${test} >/dev/null 2>&1 done } ## # Rename namespace on all files # function renameNamespace() { title "Renaming namespace from $oldNamespace to $newNamespace..." find ${newNamespaceDir} -name "*.php" -exec sed -i "" -e "s|${oldNamespace}|${newNamespace}|g" {} \; find ${testsDir} -name "*.php" -exec sed -i "" -e "s|${oldNamespace}|${newNamespace}|g" {} \; find ${newNamespaceDir} -name "*.php" -exec sed -i "" -e "s|${oldVanillaNamespace}|${newVanillaNamespace}|g" {} \; find ${testsDir} -name "*.php" -exec sed -i "" -e "s|${oldVanillaNamespace}|${newVanillaNamespace}|g" {} \; } ## # Clenup dir # function removeDownloadedRepositoryDir() { title "Cleaning up ${repositoryDir}..." rm -rf ${repositoryDir} } ## # Run tests # function runTests() { title "Running tests" if [ -f ${rootDir}/composer.lock ]; then rm ${rootDir}/composer.lock fi if [ -d ${rootDir}/vendor ]; then rm -rf ${rootDir}/vendor fi composer install vendor/bin/phpunit --coverage-clover=coverage.clover } ## # Run tests # function title() { echo "---------- $1" } ## # Run tests # function showAppTitle() { echo "upgrade.sh v1.0.0 - the Coolection upgrader" echo "-------------------------------------------" } ## # Run the app # main $@
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 60 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002