Skip to main content

CLI utilities for csrd service generation and feature augmentation

Project description

csrd-utils

CLI and runtime helpers for generating csrd services and augmenting existing services with optional features.

Install

pip install "csrd-utils @ git+https://github.com/csrd-api/fastapi-common.git#subdirectory=packages/utils"

CLI

csrd --help
csrd --version

# Workspace-level generation (compose-based)
csrd generate                                     # interactive menu (context-aware)
csrd generate workspace --name my-ws              # create empty workspace
csrd generate preset --name my-ws                 # create workspace from preset
csrd generate add-service --name inventory        # add service to current workspace
csrd generate rename-service --service-name old-service --new-name new-service
csrd generate remove-service --service-name old   # remove service from spec
csrd generate add-infra --infra-type postgres     # add infra to workspace
csrd generate remove-infra --infra-type postgres  # remove infra from workspace
csrd generate add-augment                         # interactive augment selection
csrd generate list-augments                       # list available augments

# Feature augmentation
csrd feature list
csrd feature plan workers --service .
csrd feature plan workers --service . --json
csrd feature add workers --service .

# Diagnostics
csrd doctor --service .
csrd audit                                        # workspace-aware: scans all services
csrd audit --service .                            # explicitly audit one service path

# Shell completion
csrd completion bash                              # print bash completion script
csrd completion install                           # install to ~/.local/share/bash-completion/
csrd completion uninstall                         # remove installed completion

feature plan --json is useful for CI or tooling wrappers.

Bash tab completion

Install completion (one-time, persists across shells):

csrd completion install

This writes a completion script to ~/.local/share/bash-completion/completions/csrd, which bash auto-loads — no .bashrc edit needed. To remove: csrd completion uninstall.

Manual alternative:

source <(csrd completion bash)

Non-TTY mode

Set CSRD_NO_TTY=1 to force numbered-fallback prompts instead of the arrow-key TUI. Useful for manual testing or piping input:

CSRD_NO_TTY=1 csrd generate

Interactive generation behavior

  • csrd generate shows a context-aware menu (workspace actions when inside a workspace, workspace creation otherwise).
  • Services, augments, and infra are managed via csrd-compose.yaml (the workspace spec).
  • csrd generate rename-service renames the service in the spec, renames src/, tests/, and Dockerfile.*, and rewrites Python imports and string references.
  • All yes/no prompts default to No (y/N).

Typical workflow

# 0) Create a workspace and add services
csrd generate workspace --name local-dev
cd local-dev
csrd generate add-service --name inventory --features database --port 8081
csrd generate add-service --name pricing --port 8082

# 1) Verify service compatibility
csrd doctor --service .

# 1b) Audit for weak/insecure defaults
csrd audit

# 2) Inspect available bundled features
csrd feature list

# 3) Dry-run a feature
csrd feature plan workers --service .

# 4) Apply feature files/merges
csrd feature add workers --service .

# 5) Rename a service
csrd generate rename-service --service-name pricing-service --new-name billing-service

Bundled assets

  • features/workers/ feature manifests and fragments
  • templates/service/ template starter

Python API

from pathlib import Path
from csrd_utils import ServiceAugmentor
from csrd_utils.resources import features_path

with features_path() as feature_lib:
    augmentor = ServiceAugmentor(Path("."), feature_lib)
    ok, changes = augmentor.add_feature("workers", plan=True)

Documentation

  • docs/CLI_REFERENCE.md - full command/flag reference
  • docs/FEATURES.md - bundled feature catalog and behavior
  • docs/FUTURE_WORK.md - remaining provider-specific CI wiring work (Phase 5B)
  • docs/AGENT_SMOKE_TESTS.md - copy/paste validation flow for clean workspaces
  • docs/COMMAND_MATRIX.yaml - machine-readable command matrix for automation
  • AGENTS.md - package-local rules for autonomous agents

CLI-only agent mode

If an agent can only see the installed CLI (not source files), use this exploration sequence:

csrd --help
csrd generate --help
csrd feature --help
csrd doctor --help
csrd audit --help
csrd completion --help
csrd feature list
csrd generate list-augments

Then run a clean smoke flow:

mkdir -p /tmp/csrd-smoke && cd /tmp/csrd-smoke
csrd generate workspace --name ws
cd ws
csrd generate add-service --name demo-svc --port 8080
csrd doctor --service .
csrd audit
csrd feature plan workers --service .
csrd feature add workers --service .
csrd generate rename-service --service-name demo-svc-service --new-name renamed-svc

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

csrd_utils-0.5.12.tar.gz (94.8 kB view details)

Uploaded Source

Built Distribution

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

csrd_utils-0.5.12-py3-none-any.whl (131.5 kB view details)

Uploaded Python 3

File details

Details for the file csrd_utils-0.5.12.tar.gz.

File metadata

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

File hashes

Hashes for csrd_utils-0.5.12.tar.gz
Algorithm Hash digest
SHA256 4e8fd1940e6bcb113a08685dcfb9a775b3de8c80c2399e29ca1d7d61ac219232
MD5 32fb6492bbe1e0dfbf83a95116af6356
BLAKE2b-256 e5257b5e8a9fb746ca906c65b1ce535b571cf56a72f6f5a0846e5c30eb1bed2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for csrd_utils-0.5.12.tar.gz:

Publisher: release.yml on csrd-api/fastapi-common

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

File details

Details for the file csrd_utils-0.5.12-py3-none-any.whl.

File metadata

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

File hashes

Hashes for csrd_utils-0.5.12-py3-none-any.whl
Algorithm Hash digest
SHA256 9925569185cc6a5da0f83ee39ad4442c7abc8c04b47c9dabee57ea07c4d6cd75
MD5 1f497d235c082318a30b102eb34a4ae2
BLAKE2b-256 0acb972ef1ca581e831fa9bf11f43d8c4a0606725c6a40aa6c35463bec596aac

See more details on using hashes here.

Provenance

The following attestation bundles were made for csrd_utils-0.5.12-py3-none-any.whl:

Publisher: release.yml on csrd-api/fastapi-common

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