Skip to content

Instantly share code, notes, and snippets.

@Intelrunner
Last active April 20, 2023 20:38
Show Gist options
  • Save Intelrunner/376f267499cfdd837be4305c0e3c7b35 to your computer and use it in GitHub Desktop.
Save Intelrunner/376f267499cfdd837be4305c0e3c7b35 to your computer and use it in GitHub Desktop.
This gist builds out a simple directory structure for a user facing app and grabs a general git ignore from gist
#!/bin/bash
# prompt user for monorepo name
read -p "Enter monorepo name: " monorepo_name
# check if monorepo directory already exists
if [ -d "$monorepo_name" ]; then
echo "Monorepo directory already exists. Skipping creation process."
else
# create the main directory
mkdir "$monorepo_name"
# create the packages directory
mkdir "$monorepo_name/packages"
# create the users package
mkdir "$monorepo_name/packages/users"
mkdir "$monorepo_name/packages/users/functions"
mkdir "$monorepo_name/packages/users/functions/createUser"
mkdir "$monorepo_name/packages/users/functions/getUser"
mkdir "$monorepo_name/packages/users/functions/updateUser"
mkdir "$monorepo_name/packages/users/functions/deleteUser"
mkdir "$monorepo_name/packages/users/services"
mkdir "$monorepo_name/packages/users/services/auth"
mkdir "$monorepo_name/packages/users/services/email"
mkdir "$monorepo_name/packages/users/tests"
touch "$monorepo_name/packages/users/package.json"
touch "$monorepo_name/packages/users/tsconfig.json"
# create the products package
mkdir "$monorepo_name/packages/products"
mkdir "$monorepo_name/packages/products/functions"
mkdir "$monorepo_name/packages/products/services"
mkdir "$monorepo_name/packages/products/tests"
touch "$monorepo_name/packages/products/package.json"
touch "$monorepo_name/packages/products/tsconfig.json"
# create the infra directory
mkdir "$monorepo_name/infra"
touch "$monorepo_name/infra/stack.yaml"
touch "$monorepo_name/infra/pipeline.yaml"
touch "$monorepo_name/infra/cdk.json"
# create the shared directory
mkdir "$monorepo_name/shared"
mkdir "$monorepo_name/shared/utils"
mkdir "$monorepo_name/shared/types"
mkdir "$monorepo_name/shared/errors"
mkdir "$monorepo_name/shared/middlewares"
# create the remaining files
touch "$monorepo_name/.gitignore"
touch "$monorepo_name/.eslintrc.json"
touch "$monorepo_name/package.json"
touch "$monorepo_name/tsconfig.json"
touch "$monorepo_name/README.md"
# download standard .gitignore
cd "$monorepo_name"
curl -L https://gist.github.com/Intelrunner/09cfb83041a62104bbde301cc63d460e/raw/.gitignore -o .gitignore
echo "Monorepo created successfully!"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment