+#! /bin/sh
+
+export APP_ENV='dev'
+export APP_SECRET=`cat /dev/urandom | tr -dc 'A-Za-z0-9+,.:;@_-' | head -c 64`
+export DATABASE_URL='mysql://db_user:db_password@127.0.0.1:3306/db_name?serverVersion=5.7'
+export MAILER_DSN='smtp://localhost'
+
+set -x
+
+# Ask for a full reset
+read -p 'Full reset Yes/[No] ?' full
+
+# Full reset required
+if [ "$full" = 'Yes' -o "$full" = 'YES' -o "$full" = 'yes' ]; then
+ # Check if we have a rapsys racine
+ if [ -d vendor/rapsys ]; then
+ # Process each remaining git sub directory
+ for i in `ls -d vendor/rapsys/*`; do
+ pushd $i;
+ # Stash modifications if present
+ git stash save;
+ # Set back to HEAD
+ git reset --hard;
+ # Force kick untracked files and directories
+ git clean -fxd;
+ popd;
+ done;
+ fi;
+
+ # Stash modifications if present
+ git stash save;
+ # Set back to HEAD
+ git reset --hard;
+ # Force kick untracked files and directories
+ git clean -fxd;
+
+ # Prune directories
+ sudo rm -fr var/{cache/{dev,prod,test},log,sessions} public/{css,js,img,bundles};
+
+ # Recreate tree
+ mkdir -p var/{cache/{dev,prod,test},log,sessions} public/{css,js,img,bundles};
+
+ # Touch local env
+ touch '.env.local.php'
+
+ # Set ownership
+ chown $USER. '.env.local.php' var/{cache/{,dev,prod,test},log,sessions} public/{,css,js,img,bundles};
+
+ # Set acl
+ setfacl -m u:apache:rwX '.env.local.php' var/{cache/{,dev,prod,test},log,sessions} public/{css,js,img,bundles};
+
+ # Run install
+ composer install --no-scripts
+
+ # Run fix-recipes
+ composer fix-recipes
+
+ # Reset composer.json
+ git checkout -- composer.json
+
+ # Recreate src/Entity for doctrine
+ mkdir -p src/Entity
+
+ # Run scripts as apache
+ sudo -u apache composer auto-scripts
+
+ # Fix env file
+ perl -ne 'my %e=(APP_ENV=>"'$APP_ENV'",APP_SECRET=>"'${APP_SECRET/@/\\@}'",DATABASE_URL=>"'${DATABASE_URL/@/\\@}'",MAILER_DSN=>"'$MAILER_DSN'");my $p=join("|",keys %e);if(/^[#\s]*($p)=/){$_=$1."=\"".$e{$1}."\"\n";};print $_;' -i.orig .env
+
+ # Dump the env
+ sudo -u apache composer symfony:dump-env $APP_ENV
+
+ # Remove acl
+ setfacl -b '.env.local.php'
+
+ # Drop current schema
+ sudo -u apache php bin/console doctrine:schema:drop --force
+
+ # Create current schema
+ sudo -u apache php bin/console doctrine:schema:create
+
+ # Load fixtures
+ sudo -u apache php bin/console doctrine:fixtures:load --env=dev --no-interaction
+
+ # Clear cache again
+ sudo -u apache php bin/console cache:clear
+else
+ # Prune directories
+ rm -fr var/{cache/{dev,prod,test},log,sessions} public/bundles;
+
+ # Recreate them
+ mkdir -p var/{cache/{dev,prod,test},log,sessions} public/{,bundles/rapsyspack/}{css,js,img};
+
+ # Set ownership
+ sudo chown $USER. var/{cache/{,dev,prod,test},log,sessions} public/{,css,js,img,bundles/{,rapsyspack/{,css,js,img}}};
+
+ # Set acl
+ sudo setfacl -m u:apache:rwX var/{cache/{,dev,prod,test},log,sessions} public/{css,js,img,bundles/{,rapsyspack/{css,js,img}}};
+
+ # Run composer update
+ composer update --no-scripts
+
+ # Run fix-recipes
+ composer fix-recipes
+
+ # Reset composer.json
+ git checkout -- composer.json
+
+ # Prune directories
+ rm -fr var/{cache/{dev,prod,test},log,sessions} public/bundles;
+
+ # Recreate them
+ mkdir -p var/{cache/{dev,prod,test},log,sessions} public/{,bundles/rapsyspack/}{css,js,img};
+
+ # Set ownership
+ sudo chown $USER. var/{cache/{,dev,prod,test},log,sessions} public/{,css,js,img,bundles/{,rapsyspack/{,css,js,img}}};
+
+ # Set acl
+ sudo setfacl -m u:apache:rwX var/{cache/{,dev,prod,test},log,sessions} public/{css,js,img,bundles/{,rapsyspack/{,css,js,img}}};
+
+ # Run scripts as apache
+ sudo -u apache composer auto-scripts
+
+ # Clear cache again
+ sudo -u apache php bin/console cache:clear
+fi
+
+# Recreate them
+mkdir -p var/{cache/{dev,prod,test},log,sessions} public/{,bundles/rapsyspack/}{css,js,img};
+
+# Set ownership
+sudo chown $USER. var/{cache/{,dev,prod,test},log,sessions} public/{,css,js,img,bundles/{,rapsyspack/{,css,js,img}}};
+
+# Set acl
+setfacl -m u:apache:rwX var/{cache/{,dev,prod,test},log,sessions} public/{css,js,img,bundles/{,rapsyspack/{css,js,img}}};