committed by
GitHub
13 changed files with 2 additions and 225 deletions
@ -1,12 +0,0 @@ |
|||
sudo: required |
|||
|
|||
language: python |
|||
|
|||
install: |
|||
- pip install cookiecutter |
|||
|
|||
services: |
|||
- docker |
|||
|
|||
script: |
|||
- bash ./scripts/test.sh |
@ -1,83 +0,0 @@ |
|||
# Contributing |
|||
|
|||
Here are some short guidelines to guide you if you want to contribute to the development of the Full Stack FastAPI PostgreSQL project generator itself. |
|||
|
|||
After you clone the project, there are several scripts that can help during development. |
|||
|
|||
* `./scripts/dev-fsfp.sh`: |
|||
|
|||
Generate a new default project `dev-fsfp`. |
|||
|
|||
Call it from one level above the project directory. So, if the project is at `~/code/full-stack-fastapi-postgresql/`, call it from `~/code/`, like: |
|||
|
|||
```console |
|||
$ cd ~/code/ |
|||
|
|||
$ bash ./full-stack-fastapi-postgresql/scripts/dev-fsfp.sh |
|||
``` |
|||
|
|||
It will generate a new project with all the defaults at `~/code/dev-fsfp/`. |
|||
|
|||
You can go to that directory with a full new project, edit files and test things, for example: |
|||
|
|||
```console |
|||
$ cd ./dev-fsfp/ |
|||
|
|||
$ docker-compose up -d |
|||
``` |
|||
|
|||
It is outside of the project generator directory to let you add Git to it and compare versions and changes. |
|||
|
|||
* `./scripts/dev-fsfp-back.sh`: |
|||
|
|||
Move the changes from a project `dev-fsfp` back to the project generator. |
|||
|
|||
You would call it after calling `./scripts/dev-fsfp.sh` and adding some modifications to `dev-fsfp`. |
|||
|
|||
Call it from one level above the project directory. So, if the project is at `~/code/full-stack-fastapi-postgresql/`, call it from `~/code/`, like: |
|||
|
|||
```console |
|||
$ cd ~/code/ |
|||
|
|||
$ bash ./full-stack-fastapi-postgresql/scripts/dev-fsfp-back.sh |
|||
``` |
|||
|
|||
That will also contain all the generated files with the generated variables, but it will let you compare the changes in `dev-fsfp` and the source in the project generator with git, and see what to commit. |
|||
|
|||
* `./scripts/discard-dev-files.sh`: |
|||
|
|||
After using `./scripts/dev-fsfp-back.sh`, there will be a bunch of generated files with the variables for the generated project that you don't want to commit, like `README.md` and `.gitlab-ci.yml`. |
|||
|
|||
To discard all those changes at once, run `discard-dev-files.sh` from the root of the project, e.g.: |
|||
|
|||
```console |
|||
$ cd ~/code/full-stack-fastapi-postgresql/ |
|||
|
|||
$ bash ./scripts/dev-fsfp-back.sh |
|||
``` |
|||
|
|||
* `./scripts/test.sh`: |
|||
|
|||
Run the tests. It creates a project `testing-project` *inside* of the project generator and runs its tests. |
|||
|
|||
Call it from the root of the project, e.g.: |
|||
|
|||
```console |
|||
$ cd ~/code/full-stack-fastapi-postgresql/ |
|||
|
|||
$ bash ./scripts/test.sh |
|||
``` |
|||
|
|||
* `./scripts/dev-link.sh`: |
|||
|
|||
Set up a local directory with links to the files for live development with the source files. |
|||
|
|||
This script generates a project `dev-link` *inside* the project generator, just to generate the `.env` and `./frontend/.env` files. |
|||
|
|||
Then it removes everything except those 2 files. |
|||
|
|||
Then it creates links for each of the source files, and adds those 2 files back. |
|||
|
|||
The end result is that you can go into the `dev-link` directory and develop locally with it as if it was a generated project, with all the variables set. But all the changes are actually done directly in the source files. |
|||
|
|||
This is probably a lot faster to iterate than using `./scripts/dev-fsfp.sh`. But it's tested only in Linux, it might not work in other systems. |
@ -1,22 +0,0 @@ |
|||
#! /usr/bin/env bash |
|||
|
|||
# Run this script from outside the project, to integrate a dev-fsfp project with changes and review modifications |
|||
|
|||
# Exit in case of error |
|||
set -e |
|||
|
|||
if [ ! -d ./full-stack-fastapi-postgresql ] ; then |
|||
echo "Run this script from outside the project, to integrate a sibling dev-fsfp project with changes and review modifications" |
|||
exit 1 |
|||
fi |
|||
|
|||
if [ $(uname -s) = "Linux" ]; then |
|||
echo "Remove __pycache__ files" |
|||
sudo find ./dev-fsfp/ -type d -name __pycache__ -exec rm -r {} \+ |
|||
fi |
|||
|
|||
rm -rf ./full-stack-fastapi-postgresql/\{\{cookiecutter.project_slug\}\}/* |
|||
|
|||
rsync -a --exclude=node_modules ./dev-fsfp/* ./full-stack-fastapi-postgresql/\{\{cookiecutter.project_slug\}\}/ |
|||
|
|||
rsync -a ./dev-fsfp/{.env,.gitignore,.gitlab-ci.yml} ./full-stack-fastapi-postgresql/\{\{cookiecutter.project_slug\}\}/ |
@ -1,13 +0,0 @@ |
|||
#! /usr/bin/env bash |
|||
|
|||
# Exit in case of error |
|||
set -e |
|||
|
|||
if [ ! -d ./full-stack-fastapi-postgresql ] ; then |
|||
echo "Run this script from outside the project, to generate a sibling dev-fsfp project with independent git" |
|||
exit 1 |
|||
fi |
|||
|
|||
rm -rf ./dev-fsfp |
|||
|
|||
cookiecutter --no-input -f ./full-stack-fastapi-postgresql project_name="Dev FSFP" |
@ -1,34 +0,0 @@ |
|||
#! /usr/bin/env bash |
|||
|
|||
# Exit in case of error |
|||
set -e |
|||
|
|||
# Run this from the root of the project to generate a dev-link project |
|||
# It will contain a link to each of the files of the generator, except for |
|||
# .env and frontend/.env, that will be the generated ones |
|||
# This allows developing with a live stack while keeping the same source code |
|||
# Without having to generate dev-fsfp and integrating back all the files |
|||
|
|||
rm -rf dev-link |
|||
mkdir -p tmp-dev-link/frontend |
|||
|
|||
cookiecutter --no-input -f ./ project_name="Dev Link" |
|||
|
|||
mv ./dev-link/.env ./tmp-dev-link/ |
|||
mv ./dev-link/frontend/.env ./tmp-dev-link/frontend/ |
|||
|
|||
rm -rf ./dev-link/ |
|||
mkdir -p ./dev-link/ |
|||
|
|||
cd ./dev-link/ |
|||
|
|||
for f in ../\{\{cookiecutter.project_slug\}\}/* ; do |
|||
ln -s "$f" ./ |
|||
done |
|||
|
|||
cd .. |
|||
|
|||
mv ./tmp-dev-link/.env ./dev-link/ |
|||
mv ./tmp-dev-link/frontend/.env ./dev-link/frontend/ |
|||
|
|||
rm -rf ./tmp-dev-link |
@ -1,13 +0,0 @@ |
|||
#! /usr/bin/env bash |
|||
|
|||
set -e |
|||
|
|||
rm -rf \{\{cookiecutter.project_slug\}\}/.git |
|||
rm -rf \{\{cookiecutter.project_slug\}\}/backend/app/poetry.lock |
|||
rm -rf \{\{cookiecutter.project_slug\}\}/frontend/node_modules |
|||
rm -rf \{\{cookiecutter.project_slug\}\}/frontend/dist |
|||
git checkout \{\{cookiecutter.project_slug\}\}/README.md |
|||
git checkout \{\{cookiecutter.project_slug\}\}/.gitlab-ci.yml |
|||
git checkout \{\{cookiecutter.project_slug\}\}/cookiecutter-config-file.yml |
|||
git checkout \{\{cookiecutter.project_slug\}\}/.env |
|||
git checkout \{\{cookiecutter.project_slug\}\}/frontend/.env |
@ -1,20 +0,0 @@ |
|||
import json |
|||
from collections import OrderedDict |
|||
import oyaml as yaml |
|||
from pathlib import Path |
|||
cookie_path = Path('./cookiecutter.json') |
|||
out_path = Path('./{{cookiecutter.project_slug}}/cookiecutter-config-file.yml') |
|||
|
|||
with open(cookie_path) as f: |
|||
cookie_config = json.load(f) |
|||
config_out = OrderedDict() |
|||
|
|||
for key, value in cookie_config.items(): |
|||
if key.startswith('_'): |
|||
config_out[key] = value |
|||
else: |
|||
config_out[key] = '{{ cookiecutter.' + key + ' }}' |
|||
config_out['_template'] = './' |
|||
|
|||
with open(out_path, 'w') as out_f: |
|||
out_f.write(yaml.dump({'default_context': config_out}, line_break=None, width=200)) |
@ -1,16 +0,0 @@ |
|||
#! /usr/bin/env bash |
|||
|
|||
# Exit in case of error |
|||
set -e |
|||
|
|||
# Run this from the root of the project |
|||
|
|||
rm -rf ./testing-project |
|||
|
|||
cookiecutter --no-input -f ./ project_name="Testing Project" |
|||
|
|||
cd ./testing-project |
|||
|
|||
bash ./scripts/test.sh "$@" |
|||
|
|||
cd ../ |
@ -1,3 +0,0 @@ |
|||
.vscode |
|||
.mypy_cache |
|||
docker-stack.yml |
Loading…
Reference in new issue