Skip to main content

Project Automation and Configuration Engine - A Python CLI tool for bulk management of C# .NET project ecosystems

Project description

PACE Logo

Project Automation and Configuration Engine

A Python CLI tool for bulk management of C# .NET project ecosystems — from single class libraries to complex multi-project hierarchies with MAUI applications.

Python .NET MAUI License


Overview

PACE eliminates the repetitive, error-prone manual work of managing .NET project ecosystems at scale. Rather than shelling into each project directory to run dotnet commands, manage git state, or manually update build configurations, PACE provides a unified interface to interact with all of them at once.

It understands your project topology — respecting dependency order, project hierarchy, and configuration context — so you can express intent once and apply it across your entire repository graph.

PACE is built for .NET library authors, platform teams, and SDK maintainers who manage production-grade codebases consisting of multiple interconnected components and need reliable, scriptable tooling to keep them in sync.


Target project types

Type Description
Class libraries Standalone or NuGet-published reusable packages
MAUI applications Cross-platform apps with platform image and build assets
Dependency trees Multi-library hierarchies with topological dependency ordering
Sample applications Reference and demo apps accompanying library suites

Capabilities

PACE Features


Design principles

Composability — individual commands can be piped, scripted, and combined into workflows. PACE is a good Unix citizen.

Topology-awareness — multi-project operations always respect inter-project dependencies. CoreLib is built before ExtensionLib before SampleApp, automatically.

Transparency — every operation emits clear, structured output suitable for both human review and CI log parsing. Nothing happens silently.

Reproducibility — configuration is declared in a manifest file that describes the project graph, repository layout, and per-project overrides. Behaviour is version-controllable alongside the code it manages.


Installation

TBD

Or install from source:

git clone https://github.com/Noremac11800/PACE.git
cd PACE
pip install -e .

Quick start

Initialize a manifest in your workspace root:

pace init

This generates a pace.toml describing your project graph. Edit it to reflect your repository layout, then run any command across the full graph:

# Build all projects in dependency order
pace dotnet build

# Build projects starting from a specific project
pace --from ProjectName dotnet build

# Check git status across every repo
pace git status

# Run all unit tests and show a summary
pace test

# Format and verify code style
pace format --check

Configuration

PACE is driven by a pace.toml manifest at your workspace root:

[workspace]
path = "C:\Applications\Melbourne"

[[project]]
name = "common-lib"
path = "./common-lib/src/CommonLib/CommonLib.csproj"
type = "classlib"

[[project]]
name = "feature-module"
path = "./feature-module/src/FeatureModule/FeatureModule.csproj"
type = "classlib"
depends_on = ["common-lib"]

[[project]]
name = "mobile-app"
path = "./mobile-app/src/MobileApp/MobileApp.csproj"
type = "maui"
depends_on = ["feature-module"]

Development

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest

# Format code
ruff format .

# Check code style
ruff check .

# or for safe fixes
ruff check --fix .

# Type check
pyright

License

MIT

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

pace_dotnet-0.1.1.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

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

pace_dotnet-0.1.1-py3-none-any.whl (24.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pace_dotnet-0.1.1.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pace_dotnet-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a18533ce87d613cd81874e1445729c13ada7d956ee6138026fc4a47daf08d5b5
MD5 201475d94593991a3d964a58a50a9cd0
BLAKE2b-256 1a1699d3d90cc0f743e532c6cf517d7257da1d779458b2228dba0d2b195071e0

See more details on using hashes here.

File details

Details for the file pace_dotnet-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pace_dotnet-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 24.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pace_dotnet-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9a26181dd6d1c4e3b69486420d1a322bd2ea21a5864180d26bbc82b4454cbc4b
MD5 a8ff791beb35f29a01da55b2051c0801
BLAKE2b-256 fbcfe4be49bcddbd475d85d4b71b767c00cc07ee173b7f00c23c27afdeb9a6b5

See more details on using hashes here.

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