cpa is a cli tool for ultra fast setup of Rust & Python projects

Overview

CPA: Create-Python-App

CPA Logo

cpa is a cli tool for ultra fast setup of new Python & Rust projects. It automates the creation of config files like style & lint checks, gitignore, Dockerfile, dependency mangement, etc. An opinionated set of pre-commit hooks + Github Actions CI are included for enforcing best practices & reducing dev time.

Example outputs are provided in ./example

Installation

MacOS, Linux

Install via script below or get from Releases

curl -sSL https://raw.githubusercontent.com/ysawa0/create-python-app/main/install.sh | bash
# cpa will be installed to ~/bin/cpa
# The installer will add ~/bin to your PATH

Windows

Download latest binary from Releases

Building from source

cargo install --path .

Usage

To create a new project:

cpa create --name myproject

Optional params:

  • --preset: Specifies a preset for the project. Defaults to "python3.10". "pythonx.yz" and "rust" are supported.

Example:

cpa create --name myproject --preset python3.10
cpa create --name myproject --preset rust

Update current working directory with CPA preset.

cpa update --name myproject --preset python3.10
cpa update --name myproject --preset rust

Goals

  • Speed up Project Creation: Reduce the time spent on repetitive setup tasks
  • Best Practices: Encourage best practices for code quality, formatting, and style by including configs for tools like black, isort, and flake8.
  • Automation: Automate tasks such as generating .gitignore files, setting up pre-commit hooks, Github Action CI, configuring linters & formatters.
  • Supports Rust and Python.
  • Golang support planned

Contributions and Feedback

Users are welcome to contribute to the project by submitting pull requests or opening issues for bugs and feature requests. Feedback is also greatly appreciated to help improve the tool.

You might also like...
πŸš€ Supercharge your development with easy to setup package scripts

Mist πŸš€ Supercharge your development with easy to setup package scripts. Works with every codebase regardless of the language or framework used! Note:

Middleware/ios shortcut to setup alarms automatically based on the first class

Webuntis alarm This is a small little "middleware" / web server intended to connect to a webuntis timetable used in german schools which i wrote when

Quickly setup your development environment on your Chromebook/ChromeOS  or any Linux distribution 🐧 ❄️ πŸ’» πŸš€ ✨
Quickly setup your development environment on your Chromebook/ChromeOS or any Linux distribution 🐧 ❄️ πŸ’» πŸš€ ✨

Crosup 🐧 πŸ’» πŸš€ ✨ Crosup is a CLI tool to help you quickly setup your development environment on a new Chromebook (ChromeOS) or any Linux distribution

Rust Imaging Library's Python binding: A performant and high-level image processing library for Python written in Rust

ril-py Rust Imaging Library for Python: Python bindings for ril, a performant and high-level image processing library written in Rust. What's this? Th

PyO3 bindings and Python interface to skani, a method for fast fast genomic identity calculation using sparse chaining.

🐍 ⛓️ 🧬 Pyskani PyO3 bindings and Python interface to skani, a method for fast fast genomic identity calculation using sparse chaining. πŸ—ΊοΈ Overview

A simple CLI tool to create python project file structure, written in Rust
A simple CLI tool to create python project file structure, written in Rust

Ezpie Create python projects blazingly fast What Ezpie can do? It can create a python project directory What kind of directory can Ezpie create? For c

Little example projects for learning Rust and building awesome cli tools! ⭐️

rust-cli-examples Examples of clean and well-tested command line utilities, written in Rust. πŸ¦€ πŸ‘ What is this repo? This repo is a collection of man

CLI program for building generative projects

NFT image generator This is the project to help artists to generate NFT collection, which can be generated from layers of PNG images. Usage Get archiv

A simple CLI to build VEXCode V5 Pro projects and download them to the V5 brain.

vexer A simple CLI to build VEXCode V5 Pro projects and download them to the V5 brain. (WIP) This currently is only tested on and only works on window

Comments
  • ERROR: Expected newline or end of document after a statement

    ERROR: Expected newline or end of document after a statement

    I tried creating a test project using the tool and ran into this error (attaching a screenshot for better perspective):

    Expected newline or end of document after a statement

    image

    opened by rajtilakjee 3
  • `shfmt` installation fails on openSUSE Tumbleweed

    `shfmt` installation fails on openSUSE Tumbleweed

    OS: openSUSE Tumbleweed 20231115

    Steps to reproduce:

    1. Create a Python project with cpa. This is preset-agnostic.
    2. make setupppc

    Actual behaviour:

    [...]
    Setting up shfmt (Linux)...
    wget -qO shfmt "https://github.com/mvdan/sh/releases/download/v3.7.0/shfmt_v3.7.0_x86_64"
    make: *** [Makefile:7: setuppc] Error 8
    

    Additional info:

    • uname -m returns x86_64
    • uname -a returns Linux h1mm3l 6.6.1-1-default #1 SMP PREEMPT_DYNAMIC Thu Nov 9 05:27:56 UTC 2023 (1fcc265) x86_64 x86_64 x86_64 GNU/Linux
    opened by PythonTryHard 0
Releases(v0.1.0)
A simple cli to clone projects and fetch all projects in a GitHub org..

stupid-git A simple cli to clone projects and update all projects. get all repository from GitHub clone all pull all with git stash Usage create sgit.

Fengda Huang 5 Sep 15, 2022
qsv: Ultra-fast CSV data-wrangling toolkit

qsv is a command line program for indexing, slicing, analyzing, splitting, enriching, validating & joining CSV files. Commands are simple, fast & composable

Joel Natividad 398 Jan 3, 2023
A Command-line tool to create, manage and deploy your python projects

PPM A Command-line tool to create, manage and deploy your python projects Table of Contents PPM Main Features Create a Project project.ini file Projec

FUSEN 6 Aug 30, 2022
🐚+🦞 Ultra-portable Rust game engine suited for offline 2D games powered by WebAssembly

pagurus ?? + ?? Ultra-portable Rust game engine suited for offline 2D games powered by WebAssembly. Examples Snake Traditional snake game: examples/sn

Takeru Ohta 20 Mar 7, 2023
A Yocto setup and management tool that helps you keep your environment up-to-date and in-sync with your team

yb (Yocto Buddy) yb is designed to make it easy to setup and (perhaps more importantly) keep Yocto environments up-to-date and in-sync with your team.

null 13 Oct 31, 2022
Scriptable tool to read and write UEFI variables from EFI shell. View, save, edit and restore hidden UEFI (BIOS) Setup settings faster than with the OEM menu forms.

UEFI Variable Tool (UVT) UEFI Variable Tool (UVT) is a command-line application that runs from the UEFI shell. It can be launched in seconds from any

null 4 Dec 11, 2023
CLI tool to quickly create React + Typescript + Tailwind projects

QUICK INIT CLI Tool to quickly create React projects with Tailwind automatically configured for use. Typescript is selected as default. If JS is to be

Oscar 5 Nov 3, 2022
Dash is a CLI tool that rapidly sets up new projects by running a series of pre-defined commands.

Dash Dash is a CLI tool that rapidly sets up new projects by running a series of pre-defined commands. Features Quick Initialization: Initialize the c

Kunal Bagaria 4 Nov 7, 2023
A command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects.

CCake CCake is a command line tool written in Rust and designed to be a modern build tool + package manager for C/C++ projects. Goals To be easily und

Boston Vanseghi 4 Oct 24, 2022
Rust API Server: A versatile template for building RESTful interfaces, designed for simplicity in setup and configuration using the Rust programming language.

RUST API SERVER Introduction Welcome to the Rust API Server! This server provides a simple REST interface for your applications. This README will guid

Harry Nguyen 3 Feb 25, 2024