Last active
October 7, 2022 03:59
-
-
Save portedison/02715447449217df36cc195ef253fe23 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# !/bin/bash | |
PROJECT_NAME="$1" | |
TEMPLATE_DIR="$2" | |
ADDITIONAL_FILES="$3" | |
if [ "$PROJECT_NAME" = "" ]; then | |
echo "You must supply a project name." | |
exit 1 | |
fi | |
if [ -d $PROJECT_NAME ]; then | |
echo "$PROJECT_NAME already exists!" | |
exit 2 | |
fi | |
if [ "$TEMPLATE_DIR" = "" ] || [ ! -d "$TEMPLATE_DIR" ]; then | |
echo "You must supply a local template directory." | |
exit 3 | |
fi | |
echo "Creating project directory" | |
mkdir $PROJECT_NAME | |
mkdir $PROJECT_NAME/backend | |
cd $PROJECT_NAME | |
git init | |
echo "Creating backend" | |
cd backend | |
echo "Creating virtual environment" | |
pew new $PROJECT_NAME -d | |
pew in $PROJECT_NAME pip install Django --no-cache-dir | |
pew in $PROJECT_NAME pip install pip-tools | |
echo "Calling startproject with template" | |
if [ "$ADDITIONAL_FILES" = "" ]; then | |
pew in $PROJECT_NAME django-admin startproject --template=$TEMPLATE_DIR/backend --extension=py,json --name=README.md,secrets/.sentryclirc,secrets/basic_auth.txt,secrets/env/django $PROJECT_NAME ${PWD} | |
else | |
pew in $PROJECT_NAME django-admin startproject --template=$TEMPLATE_DIR/backend --extension=py,json --name=README.md,secrets/.sentryclirc,secrets/basic_auth,txt,secrets/env/django,$ADDITIONAL_FILES $PROJECT_NAME ${PWD} | |
fi | |
# install default requirements | |
echo "Installing default requirements" | |
pew in $PROJECT_NAME pew add src | |
# Generate requirements.txt files from requirements.in files | |
pew in $PROJECT_NAME pip-compile --output-file requirements.txt requirements.in | |
pew in $PROJECT_NAME pip-compile --output-file dev-requirements.txt dev-requirements.in | |
pew in $PROJECT_NAME pip install -r requirements.txt | |
pew in $PROJECT_NAME pip install -r dev-requirements.txt | |
chmod a+x ./manage.py | |
mv src/PROJECT_NAME src/$PROJECT_NAME | |
# Create local settings file | |
echo "Writing local settings" | |
cat <<EOF > src/project/settings/prod/local.py | |
# -*- coding: utf-8 -*- | |
from .prod_local import * # noqa | |
from ..piet_local import * # noqa | |
EOF | |
cd .. | |
echo "Creating frontend" | |
cp -R $TEMPLATE_DIR/frontend ./ | |
cd frontend | |
sed -i '' "s/project_name/${PROJECT_NAME}/g" package.json | |
export NVM_DIR=$HOME/.nvm; | |
source $NVM_DIR/nvm.sh; | |
#nvm use; node --version | |
nvm install --lts | |
nvm use --lts | |
nvm version > .nvmrc | |
nvm use; yarn add react react-dom next | |
nvm use; yarn add js-cookie @moxy/next-router-scroll @moxy/react-page-swapper @sentry/nextjs date-fns lodash.throttle gsap react-modal react-transition-group sharp typogr video.js | |
nvm use; yarn add --dev typescript @svgr/webpack @types/lodash.throttle @types/moxy__next-router-scroll @types/react-modal @types/video.js sass typescript-plugin-css-modules @types/react-transition-group @types/gsap | |
mv ./.env.development.local.example ./.env.development.local | |
ln -s ../secrets/env/node ./.env.production.local | |
ln -s ../secrets/.sentryclirc ./.sentryclirc | |
# Reset to project root directory | |
cd .. | |
echo "Copying across misc files" | |
cp $TEMPLATE_DIR/.gitattributes ./ | |
cp $TEMPLATE_DIR/.gitignore ./ | |
cp $TEMPLATE_DIR/fabfile.py ./ | |
cp -R $TEMPLATE_DIR/secrets ./ | |
cp -R $TEMPLATE_DIR/provisioning ./ | |
# Do this last | |
pew in $PROJECT_NAME pew setproject | |
echo | |
echo "====" | |
echo "Your new project is set up in ${PWD}" | |
echo "Type 'pew workon ${PROJECT_NAME}' to work on this project." | |
echo "Manually - find/replace {{ project_name }} in text editor" | |
echo " - create secret_key" | |
echo "====" | |
echo |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment