Skip to main content

A modern dev shell and build system for C/C++ projects

Project description

InsurgeNT ⚙️✨

Integrated Native Toolkit (InsurgeNT) – a beautiful, modern devshell + build system for C/C++ projects.

PyPI version

A clean, expressive, and fast workflow for native development.
Simple YAML configs. Stunning output. No boilerplate. No stress.

✨ Features

  • ⚡️ Incremental builds with parallel + async compilation
  • 📦 project.yaml-based config with automatic source/include detection
  • 🧠 Intelligent project layout and dependency tracking
  • 💻 Interactive shell with tab completion, history, and file ops
  • 🔧 Multi-compiler + cross-platform support (Linux, macOS, Windows)
  • 🎨 Beautiful TUI feedback with emoji, colors, and clean symbols

Getting Started

To start using InsurgeNT, run the shell:

python -m insurgent # or python -m int

Build Commands

InsurgeNT now supports parallel builds by default for maximum performance.

# Build all targets in parallel
build

# Build specific target
build myapp

# Build with debug symbols
build --debug mylib

# Build sequentially (non-parallel)
build --sequential

Unit tests (native harness)

Declare an optional unit_tests block in project.yaml (see docs/ProjectYAML.md). InsurgeNT compiles sources listed there into a separate executable and runs it when you execute:

insurgent test
# or: insurgent t

From the interactive shell:

test

Use test --silent / test --no-incremental in the shell, or insurgent test --silent / --no-incremental on the CLI. A non-zero exit code from the test binary is treated as failure.

For project_type: library, the main static library (output) is built first and linked into the test executable by default. Use unit_tests.link_project: false for a self-contained test binary, or unit_tests.libraries to add more archives (paths relative to the project root).

Creating a Project

InsurgeNT uses YAML configuration for project definitions. Here's an example:

project: example
description: An example project
authors: ["John Doe", "Jane Doe"]
license: MIT
version: 0.1.0
language: c++
standard: c++20
compiler: g++
compiler_flags:
  - global: "-fPIC"
  - common: "-O2 -Wall -Wextra"
  - cpp: "-std=c++20"
  - ld: "-lstdc++"
project_dirs: ["sources"]
project_type: executable
output: bin/example

# Optional bootstrap step
bootstrap:
  - task: prepare
  - command: "mkdir -p bin"

Installation

pip install insurgent

Development Setup

For development, InsurgeNT provides setup scripts to create a virtual environment and install dependencies:

On Linux/macOS:

# Setup development environment
./setup.sh

# With additional options
./setup.sh --venv=custom_venv --hooks --lint

On Windows:

# Setup development environment
setup.bat

# With additional options
setup.bat --venv=custom_venv --hooks --lint

Linting

To run linting tools on your code:

On Linux/macOS:

# Check and format code
./lint.sh

# Only check code (for CI)
./lint.sh --check

On Windows:

# Check and format code
lint.bat

# Only check code (for CI)
lint.bat --check

Usage

After installation, you can run the development shell by executing:

python -m insurgent

Available Commands

  • ls, cd, pwd - File navigation
  • mkdir, touch, rm, cp - File operations
  • build <project> [options] - Build a project
  • test [--silent] [--no-incremental] - Build and run the unit test executable
  • history - Show command history

Build System

InsurgeNT includes a powerful build system for C/C++ projects with features like:

  • Incremental builds
  • Dependency tracking
  • Multiple compiler support
  • Parallel and fully asynchronous compilation for maximum performance
  • Cross-platform compatibility

License

InsurgeNT is licensed under the MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

insurgent-0.1.0.tar.gz (54.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

insurgent-0.1.0-py3-none-any.whl (53.8 kB view details)

Uploaded Python 3

File details

Details for the file insurgent-0.1.0.tar.gz.

File metadata

  • Download URL: insurgent-0.1.0.tar.gz
  • Upload date:
  • Size: 54.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for insurgent-0.1.0.tar.gz
Algorithm Hash digest
SHA256 023013ca93cdb2c90f32765a1cd1aa115b476a5b8d2c412948425e8b643f7c53
MD5 2646e17cc4c524a71f025955d2632db6
BLAKE2b-256 c0876eea818bc56aa84db6daa5a3ec1be263bd205c43312a45d3680a9159bc1b

See more details on using hashes here.

Provenance

The following attestation bundles were made for insurgent-0.1.0.tar.gz:

Publisher: ci.yml on bumbelbee777/insurgent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file insurgent-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: insurgent-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 53.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for insurgent-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9dbde7697ae88752f3bd2b95b94e4daaea74286f5d0702056a860d812c2a8243
MD5 62213d206491dad9f4cd320e999e5420
BLAKE2b-256 feff7f1d46edba920e4194c0f91ea24c35dcd31c796fdbd15cdaf97122128945

See more details on using hashes here.

Provenance

The following attestation bundles were made for insurgent-0.1.0-py3-none-any.whl:

Publisher: ci.yml on bumbelbee777/insurgent

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page