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