An open API service indexing awesome lists of open source software.

https://github.com/matteoguadrini/psp

psp (Python Scaffolding Projects)
https://github.com/matteoguadrini/psp

inquirer-prompt prompt prompts python python3 rust rust-lang scaffold scaffolder scaffolding

Last synced: about 1 month ago
JSON representation

psp (Python Scaffolding Projects)

Awesome Lists containing this project

README

        

Logo **psp** (Python Scaffolding Projects)
======

`psp` is a blazing fast command line utility to scaffold your _Python_ project, written in Rust.

- โšก๏ธ 1-100x faster compared to other scaffolding tools
- ๐Ÿ› ๏ธ `pyproject.toml` support
- ๐Ÿค Python 3.13 compatibility
- ๐Ÿ—ƒ Scaffolding file and folder structures for your Python project
- ๐Ÿ“ฆ Unit-test and [pytest](https://docs.pytest.org/) support
- ๐Ÿงช Create a virtual environment
- ๐Ÿ”ง Automagically dependencies installation
- ๐Ÿช› Add build and deploy dependencies to distribute the package
- ๐Ÿ“ [tox](https://tox.wiki/en/stable/) configuration supports and remotes CI like [CircleCI](https://circleci.com/) and [TravisCI](https://www.travis-ci.com/)
- โŒจ๏ธ [MkDocs](https://www.mkdocs.org/) and [Sphinx](https://www.sphinx-doc.org/) documentation support
- ๐Ÿงฐ Initialize git repository and `gitignore` file
- ๐ŸŒŽ GitHub and Gitlab remote repository support
- ๐Ÿ“‘ Create `README`, `LICENSE`, `CONTRIBUTING`, `CODE_OF_CONDUCT` and `CHANGES` files
- ๐Ÿณ Create `Dockerfile` and `Containerfile` for your project
- ๐Ÿ’ก Can use _quick_, _simple_ and _full_ argument for rapid configuration
- ๐Ÿ’พ Create `$HOME/.psp.env` and `$PWD/.env` files with your customizations
- ๐ŸŽ›๏ธ Can use some `PSP_` variables to control your defaults

## ๐Ÿš€ Get Started in 30 Seconds

[![asciicast](https://asciinema.org/a/707474.svg)](https://asciinema.org/a/707474)

psp

The result is:

```console
$> tree test/ --filelimit=19 -a
test # Project folder
โ”œโ”€โ”€ LICENSE.md # License file
โ”œโ”€โ”€ pyproject.toml # Python package configuration file
โ”œโ”€โ”€ README.md # Readme file
โ”œโ”€โ”€ CHANGES.md # List of changes
โ”œโ”€โ”€ .circleci # CI folder
โ”‚ โ””โ”€โ”€ config.yml # CI configuration file
โ”œโ”€โ”€ CODE_OF_CONDUCT.md # Code of Conduct
โ”œโ”€โ”€ CONTRIBUTING.md # Contributing guide lines
โ”œโ”€โ”€ Containerfile # Standard container file for build image
โ”œโ”€โ”€ Dockerfile # Docker container file for build image
โ”œโ”€โ”€ Makefile # Makefile for command make; make help
โ”œโ”€โ”€ requirements.txt # Dependencies list used by third programs
โ”œโ”€โ”€ docs # Documentation folder: Sphinx/MKDocs
โ”‚ โ”œโ”€โ”€ build
โ”‚ โ”œโ”€โ”€ make.bat
โ”‚ โ”œโ”€โ”€ Makefile
โ”‚ โ””โ”€โ”€ source
โ”‚ โ”œโ”€โ”€ conf.py
โ”‚ โ”œโ”€โ”€ index.rst
โ”‚ โ”œโ”€โ”€ _static
โ”‚ โ””โ”€โ”€ _templates
โ”œโ”€โ”€ .git # Git folder
โ”‚ โ”œโ”€โ”€ branches
โ”‚ โ”œโ”€โ”€ config
โ”‚ โ”œโ”€โ”€ description
โ”‚ โ”œโ”€โ”€ HEAD
โ”‚ โ”œโ”€โ”€ hooks [14 entries exceeds filelimit, not opening dir]
โ”‚ โ”œโ”€โ”€ info
โ”‚ โ”‚ โ””โ”€โ”€ exclude
โ”‚ โ”œโ”€โ”€ objects
โ”‚ โ”‚ โ”œโ”€โ”€ info
โ”‚ โ”‚ โ””โ”€โ”€ pack
โ”‚ โ””โ”€โ”€ refs
โ”‚ โ”œโ”€โ”€ heads
โ”‚ โ””โ”€โ”€ tags
โ”œโ”€โ”€ .github # Github issue and merge templates
โ”‚ โ”œโ”€โ”€ ISSUE_TEMPLATE
โ”‚ โ”‚ โ”œโ”€โ”€ bug.yml
โ”‚ โ”‚ โ”œโ”€โ”€ config.yml
โ”‚ โ”‚ โ””โ”€โ”€ feature.yml
โ”‚ โ””โ”€โ”€ PULL_REQUEST_TEMPLATE
โ”‚ โ””โ”€โ”€ pull_request_template.md
โ”œโ”€โ”€ .gitignore # Git ignore file
โ”œโ”€โ”€ test # Python package
โ”‚ โ””โ”€โ”€ __init__.py
โ”œโ”€โ”€ tests # Tests package for modules
โ”‚ โ”œโ”€โ”€ __init__.py
โ”‚ โ””โ”€โ”€ test_test.py # Test module "test_"
โ”œโ”€โ”€ tox.ini # Tox configuration files
โ””โ”€โ”€ venv # Virtual environment
โ”œโ”€โ”€ bin [33 entries exceeds filelimit, not opening dir]
โ”œโ”€โ”€ include
โ”‚ โ””โ”€โ”€ python3.13
โ”œโ”€โ”€ lib
โ”‚ โ””โ”€โ”€ python3.13
โ”‚ โ””โ”€โ”€ site-packages [68 entries exceeds filelimit, not opening dir]
โ”œโ”€โ”€ lib64 -> lib
โ””โ”€โ”€ pyvenv.cfg

29 directories, 44 files
```

And `git` status is:

```console
$> git status
On branch main

No commits yet
...
$> git remote get-url origin
[email protected]:MatteoGuadrini/test.git
```

## ๐Ÿ”Œ Prerequisites

`psp` has four prerequisetes installed on own machine:
- `git`
- `python3`
- `pip`
- `curl`

### Ubuntu based prerequisites installation

```console
sudo apt install -y python3 python3-pip git curl
```

### Red Hat based prerequisites installation

```console
sudo dnf install -y python3 python3-pip git curl
```

### Arch based prerequisites installation

```console
sudo pacman -Qi python3 python3-pip git curl
```

## ๐Ÿ’ฟ Installation

To install compiled file into your machine, download it:

### Linux

For all users:
```console
sudo -i
curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.2.0/psp_linux -o /usr/bin/psp
chmod +x /usr/bin/psp
```

For current user:
```console
curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.2.0/psp_linux -o $HOME/.local/bin/psp
chmod +x $HOME/.local/bin/psp
```

### MacOS

```console
sudo su -
curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.2.0/psp_macos -o /usr/bin/psp
chmod +x /usr/bin/psp
```

### Packages

If you want install OS package, follow instructions for your Operating System:

For **Debian/Ubuntu**:

```console
curl -L https://github.com/MatteoGuadrini/psp/releases/download/v0.2.0/psp.deb -o psp.deb
sudo dpkg -i psp.deb
```

For **Fedora/Mageia/OpenSuse**:

```console
sudo rpm -i https://github.com/MatteoGuadrini/psp/releases/download/v0.2.0/psp.rpm
```

### Compile as your own

Instead, if you compile this project as own, follow this steps:

```console
git clone https://github.com/MatteoGuadrini/psp.git
cd psp && cargo build --release && sudo cp -v target/release/psp /usr/bin/psp && chmod +x /usr/bin/psp
```

## Open source
_psp_ is an open source project. Any contribute, It's welcome.

**A great thanks**.

For donations, press this

For me

[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.me/guos)

For [Telethon](http://www.telethon.it/)

The Telethon Foundation is a non-profit organization recognized by the Ministry of University and Scientific and Technological Research.
They were born in 1990 to respond to the appeal of patients suffering from rare diseases.
Come today, we are organized to dare to listen to them and answers, every day of the year.

[Adopt the future](https://www.ioadottoilfuturo.it/)

## Treeware

This package is [Treeware](https://treeware.earth). If you use it in production,
then we ask that you [**buy the world a tree**](https://plant.treeware.earth/matteoguadrini/mkpl) to thank us for our work.
By contributing to the Treeware forest youโ€™ll be creating employment for local families and restoring wildlife habitats.

[![Treeware](https://img.shields.io/badge/dynamic/json?color=brightgreen&label=Treeware&query=%24.total&url=https%3A%2F%2Fpublic.offset.earth%2Fusers%2Ftreeware%2Ftrees)](https://treeware.earth)

## Acknowledgments

Thanks to Jim Blandy, Jason Orendorff and Nora Tindall for writing the _Programming Rust_ book that make up my Rust foundation.

Thanks to Tim McNamara for writing the _Rust in Action_ book.

Thanks to [Zed IDE](https://zed.dev/) and for license of [RustRover](https://www.jetbrains.com/rust/) offered by Jetbrains.

Special thanks go to my wife, who understood the hours of absence for this development.
Thanks to my children, for the daily inspiration they give me and to make me realize, that life must be simple.

Thanks, Rust Community!