Compare commits

..

No commits in common. "71a814045c9eb63924669f6f4a5ec24a60c9532f" and "ec2c2ea536898fd064e0f2340c8588f3ba6c9124" have entirely different histories.

6 changed files with 61 additions and 40 deletions

View File

@ -10,7 +10,7 @@ do
done
if [ -z "${template}" ]; then
echo "Available templates: Flask"
echo "Available templates: flask"
read -p "Enter template name: " template
fi
@ -32,7 +32,7 @@ function download_template {
}
echo "Using template:${template}"
template_url="https://git.disi.dev/Templates/${template}"
template_url="https://github.com/rochacbruno/${template}-project-template"
template_dir=".gitea/templates/${template}"
if [ -d "${template_dir}" ]; then
# Template directory already exists

View File

@ -30,23 +30,23 @@ jobs:
with:
body_path: release_message.md
# deploy:
# needs: release
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v3
# - name: Set up Python
# uses: actions/setup-python@v4
# with:
# python-version: '3.x'
# - name: Install dependencies
# run: |
# python -m pip install --upgrade pip
# pip install setuptools wheel twine
# - name: Build and publish
# env:
# TWINE_USERNAME: __token__
# TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
# run: |
# python setup.py sdist bdist_wheel
# twine upload dist/*
deploy:
needs: release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine
- name: Build and publish
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
run: |
python setup.py sdist bdist_wheel
twine upload dist/*

View File

@ -93,8 +93,11 @@ People automating CI for your project will be grateful for having a setup.py fil
### Why isn't this template made as a cookiecutter template?
I really like [cookiecutter](https://github.com/cookiecutter/cookiecutter) and it is a great way to create new projects,
but for this template I wanted to use the Github `Use this template` button,
to use this template doesn't require to install extra tooling such as cookiecutter.
Just click on [Use this template](https://github.com/rochacbruno/python-project-template/generate) and you are good to go.
The substituions are done using gitea actions and a simple sed script.
### Why `VERSION` is kept in a static plain text file?
@ -112,7 +115,7 @@ with module imports or anything else, it is useful for CI, logs and debugging.
### Why to include `tests`, `history` and `Containerfile` as part of the release?
The `MANIFEST.in` file is used to include the files in the release, once the
project is released to artifactory all the files listed on MANIFEST.in will be included
project is released to PyPI all the files listed on MANIFEST.in will be included
even if the files are static or not related to Python.
Some build systems such as RPM, DEB, AUR for some Linux distributions, and also

View File

@ -7,10 +7,10 @@ project_name welcomes contributions from the community.
This instructions are for linux base systems. (Linux, MacOS, BSD, etc.)
## Setting up your own fork of this repo.
- On gitea interface click on `Fork` button.
- Clone your fork of this repo. `git clone git@git.disi.dev:YOUR_GIT_USERNAME/project_urlname.git`
- On github interface click on `Fork` button.
- Clone your fork of this repo. `git clone git@github.com:YOUR_GIT_USERNAME/project_urlname.git`
- Enter the directory `cd project_urlname`
- Add upstream repo `git remote add upstream https://git.disi.dev/author_name/project_urlname`
- Add upstream repo `git remote add upstream https://github.com/author_name/project_urlname`
## Setting up your own virtual environment
@ -65,7 +65,7 @@ Run `git push origin my_contribution`
## Submit a pull request
On gitea interface, click on `Pull Request` button.
On github interface, click on `Pull Request` button.
Wait CI to run and one of the developers will review your PR.
## Makefile utilities
@ -94,8 +94,11 @@ init: ## Initialize the project based on an application template.
## Making a new release
This project uses [semantic versioning](https://semver.org/) and tags releases with `X.Y.Z`
Every time a new tag is created and pushed to the remote repo, gitea actions will
automatically create a new release on gitea.
Every time a new tag is created and pushed to the remote repo, github actions will
automatically create a new release on github and trigger a release on PyPI.
For this to work you need to setup a secret called `PIPY_API_TOKEN` on the project settings>secrets,
this token can be generated on [pypi.org](https://pypi.org/account/).
To trigger a new release all you need to do is.

View File

@ -76,7 +76,7 @@ virtualenv: ## Create a virtual environment.
.PHONY: release
release: ## Create a new tag for release.
@echo "WARNING: This operation will create a version tag and push to gitea"
@echo "WARNING: This operation will create s version tag and push to github"
@read -p "Version? (provide the next x.y.z semver) : " TAG
@echo "$${TAG}" > project_name/VERSION
@$(ENV_PREFIX)gitchangelog > HISTORY.md
@ -85,7 +85,7 @@ release: ## Create a new tag for release.
@echo "creating git tag : $${TAG}"
@git tag $${TAG}
@git push -u origin HEAD --tags
@echo "Gitea Actions will detect the new tag and release the new version."
@echo "Github Actions will detect the new tag and release the new version."
.PHONY: docs
docs: ## Build the documentation.

View File

@ -4,22 +4,27 @@
A low dependency and really simple to start project template for Python Projects.
See also
- [Flask-Project-Template](https://git.disi.dev/Templates/Flask/) for a full feature Flask project including database, API, admin interface, etc.
- [Flask-Project-Template](https://github.com/rochacbruno/flask-project-template/) for a full feature Flask project including database, API, admin interface, etc.
- [FastAPI-Project-Template](https://github.com/rochacbruno/fastapi-project-template/) The base to start an openapi project featuring: SQLModel, Typer, FastAPI, JWT Token Auth, Interactive Shell, Management Commands.
### HOW TO USE THIS TEMPLATE
1. Create a new repository from this template and choose a name for your project
(e.g. `my_awesome_project` - recommendation is to use all lowercase and underscores separation for repo names.)
2. Wait until the first run of CI finishes (Gitea Actions will process the template and commit to your new repo)
3. Read the file [CONTRIBUTING.md](CONTRIBUTING.md)
4. Then clone your new project and happy coding!
1. Choose a name for your project
(e.g. `my_awesome_project` recommendation is to use all lowercase and underscores separation for repo names.)
2. Replace all text instances of "project_name" in this repo with your new name
3. If you want Automatic Release to [PyPI](https://pypi.org)
On the new repository `settings->secrets` add your `PYPI_API_TOKEN` (get the tokens on PyPI website)
4. Read the file [CONTRIBUTING.md](CONTRIBUTING.md)
5. Then clone your new project and happy coding!
> **NOTE**: **WAIT** until first CI run on gitea actions before cloning your new project.
> **NOTE**: **WAIT** until first CI run on github actions before cloning your new project.
### What is included on this template?
- 🖼️ Templates for starting multiple application types:
**Run `make init` after cloning to generate a new project based on a template.**
* **Basic low dependency** Python program (default) [use this template](https://github.com/rochacbruno/python-project-template/generate)
* **Flask** with database, admin interface, restapi and authentication [use this template](https://github.com/rochacbruno/flask-project-template/generate).
**or Run `make init` after cloning to generate a new project based on a template.**
- 📦 A basic [setup.py](setup.py) file to provide installation, packaging and distribution for your project.
Template uses setuptools because it's the de-facto standard for Python packages, you can run `make switch-to-poetry` later if you want.
- 🤖 A [Makefile](Makefile) with the most useful commands to install, test, lint, format and release your project.
@ -29,10 +34,14 @@ See also
`Containerfile` is a more open standard for building container images than Dockerfile, you can use buildah or docker with this file.
- 🧪 Testing structure using [pytest](https://docs.pytest.org/en/latest/)
- ✅ Code linting using [flake8](https://flake8.pycqa.org/en/latest/)
- 🛳️ Automatic release to [PyPI](https://pypi.org) using [twine](https://twine.readthedocs.io/en/latest/) and github actions.
- 🎯 Entry points to execute your program using `python -m <project_name>` or `$ project_name` with basic CLI argument parsing.
- 🔄 Continuous integration using [Gitea Actions](.gitea/workflows/) with jobs to lint, test and release your project on Linux, Mac and Windows environments.
- 🔄 Continuous integration using [Github Actions](.gitea/workflows/) with jobs to lint, test and release your project on Linux, Mac and Windows environments.
> Curious about architectural decisions on this template? read [ABOUT_THIS_TEMPLATE.md](ABOUT_THIS_TEMPLATE.md)
> If you want to contribute to this template please open an [issue](https://github.com/rochacbruno/python-project-template/issues) or fork and send a PULL REQUEST.
[❤️ Sponsor this project](https://github.com/sponsors/rochacbruno/)
<!-- DELETE THE LINES ABOVE THIS AND WRITE YOUR PROJECT README BELOW -->
@ -41,6 +50,12 @@ See also
project_description
## Install it from PyPI
```bash
pip install project_name
```
## Usage
```py