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.1.tar.gz (56.7 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.1-py3-none-any.whl (54.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: insurgent-0.1.1.tar.gz
  • Upload date:
  • Size: 56.7 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.1.tar.gz
Algorithm Hash digest
SHA256 40eaf961b206bbc74fad1c395d43e85f20c70869385f2442f6b858e1680da9ef
MD5 e51e33086f8cce5cfa05b57fe8c3bf29
BLAKE2b-256 1bb1dda86d107ef7e26e7910c80a8890c37c2b61ae58219ec247dea472740701

See more details on using hashes here.

Provenance

The following attestation bundles were made for insurgent-0.1.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: insurgent-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 54.5 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c48ba3261bf192e4e51e2aa9f7e252024efa0133275fc2809a79173963a5b24a
MD5 e56d6a9af3c99206ba2b70c43f674d9b
BLAKE2b-256 d6276c1602964cd998a998efea1e904dabef63b86a6a1924ccc68cb17ffd6348

See more details on using hashes here.

Provenance

The following attestation bundles were made for insurgent-0.1.1-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