Skip to content

Instantly share code, notes, and snippets.

@inmanturbo
Created September 25, 2024 15:21
Show Gist options
  • Save inmanturbo/eccb0c0fbc82c3c3b8622169f54bfce0 to your computer and use it in GitHub Desktop.
Save inmanturbo/eccb0c0fbc82c3c3b8622169f54bfce0 to your computer and use it in GitHub Desktop.
Script for using small laravel apps as locally developed packages, or "modules"
#!/usr/bin/env bash
mod=$1
package_vendor=$2
package_namespace=$3
fqns="${package_vendor}\\${package_namespace}"
path="mod/$mod"
if [ ! -d "$path" ]; then
(cd mod && laravel new "$mod")
fi
cp tailwind.config.js "$path/tailwind.config.js"
cp package.json "$path/package.json"
cp rector.php "$path/rector.php"
cp phpstan.neon.dist "$path/phpstan.neon.dist"
cp -r resources/js "$path/resources/js"
cp -r resources/css "$path/resources/css"
touch "$path/phpstan-baseline.neon"
rm -rf "./$path/vendor/"
for file in $(find ./$path -type f -name "*.php");
do
sed -i "s/namespace App/namespace $package_vendor\\\\$package_namespace/g" "$file"
sed -i "s/use App/use $package_vendor\\\\$package_namespace/g" "$file"
sed -i "s/use Database/use $package_vendor\\\\$package_namespace\\\Database/g" "$file"
sed -i "s/ App\\\/ $package_vendor\\\\$package_namespace\\\/g" "$file"
sed -i "s/namespace Database\\\\/namespace $package_vendor\\\\$package_namespace\\\\Database\\\\/g" "$file"
done
jq --arg ns "$fqns" '.autoload["psr-4"] += {($ns + "\\Database\\Factories\\"): "database/factories/", ($ns + "\\Database\\Seeders\\"): "database/seeders/", ($ns + "\\"): "app/"}' "$path/composer.json" > "$path/composer.tmp.json" && mv "$path/composer.tmp.json" "$path/composer.json"
jq --arg ns "$fqns" '.extra.laravel.providers += [$ns + "\\Providers\\AppServiceProvider"]' "$path/composer.json" > "$path/composer.tmp.json" && mv "$path/composer.tmp.json" "$path/composer.json"
(cd "$path" && \
composer require --dev rector/rector phpstan/phpstan && \
composer config repositories.mod '{"type": "path", "url": "../*", "options": {"symlink": false}}' --file composer.json && \
composer config minimum-stability 'dev')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment