bau/ops

Search:
Group by:

Exposes Bau operations behind CLI and MCP entry points.

Types

CompileCommandsMemberResult = object
  path*: string              ## Workspace member path.
  name*: string              ## Workspace member package name.
  entries*: int              ## Number of compile command entries written.
Per-member compile commands summary.
CompileCommandsResult = object
  workspace*: bool           ## True when multiple workspace members were processed.
  root*: string              ## Workspace or project root.
  path*: string              ## Single-project compile commands path.
  entries*: int              ## Single-project entry count.
  members*: seq[CompileCommandsMemberResult] ## Workspace member summaries.
Result of generating compile commands.
OperationOptions = object
  profile*: string           ## Build or documentation profile.
  features*: seq[string]     ## Explicit feature names requested by the caller.
  allFeatures*: bool         ## Enable every non-default feature.
  noDefaultFeatures*: bool   ## Skip the default feature.
  since*: string             ## Git revision or ref for affected analysis.
  taskName*: string          ## Task name for task-oriented operations.
  queryKind*: string         ## Query mode such as `deps` or `why`.
  queryName*: string         ## Target, task, feature, or dependency being queried.
  runArgs*: seq[string]      ## Arguments passed through to `run`.
  filter*: string            ## Optional dependency or test filter.
  precise*: string           ## Exact dependency revision for update operations.
  verbose*: bool             ## Whether nested commands should print details.
  allTargets*: bool          ## Select all eligible targets.
  update*: bool              ## Request dependency update rather than sync.
  force*: bool               ## Allow overwriting or bypass cached state.
  dryRun*: bool              ## Plan the operation without writing when supported.
  targetName*: string        ## Explicit build or install target name.
  installAction*: string     ## Install action text such as `install` or `remove`.
  installDir*: string        ## Installation directory override.
  depName*: string           ## Dependency name for add/remove operations.
  depVersion*: string        ## Dependency version requirement.
  depGit*: string            ## Dependency Git URL.
  depTag*: string            ## Dependency Git tag.
  depBranch*: string         ## Dependency Git branch.
  depRev*: string            ## Dependency exact Git revision.
  depPath*: string           ## Dependency local path.
  depRegistry*: string       ## Dependency registry source.
  depOptional*: bool         ## Whether the dependency is optional.
  initName*: string          ## Package name for project initialization.
  initKind*: string          ## Project kind for initialization.
  initDir*: string           ## Directory for project initialization.
  convertPath*: string       ## Nimble file or directory to convert.
  formatVersion*: int        ## Metadata JSON format version.
  docOutDir*: string         ## Documentation output directory override.
  docEntrypoints*: seq[string] ## Additional documentation entrypoints.
  docSkipExamples*: bool     ## Skip compiling runnable examples during docs.
  docIncludePrivate*: bool   ## Include private symbols in docs.
  docNoIndex*: bool          ## Suppress generated docs index.
  depsAction*: string        ## Dependency action such as `sync`, `lock`, or `vendor`.
  cacheAction*: string       ## Task cache action such as `list`, `clean`, or `explain`.
  affectedAction*: string    ## Affected action such as `list`, `check`, `test`, or `build`.
  list*: bool                ## Request list output for operations that support it.
  write*: bool               ## Write discovered changes when supported.
  keepGoing*: bool           ## Continue independent task dependencies after failures.
  taskArgs*: seq[string]     ## Arguments passed to the root task.
  offline*: bool             ## Avoid network dependency operations.
  locked*: bool              ## Require an up-to-date lockfile before dependency work.
  bumpKind*: string          ## Version component to bump.
  ciKind*: string            ## CI template kind such as `github` or `gitlab`.
  shellName*: string         ## Shell name for shell initialization.
  testChanged*: bool         ## Limit tests to changed files.
  testFull*: bool            ## Run the full configured test matrix.
  testFast*: bool            ## Run the fast local test mode.
  testNoMatrix*: bool        ## Run one test profile instead of the matrix.
  testNoRunner*: bool        ## Discover test files instead of using a runner.
  testShowOutput*: string    ## Test output mode override.
  jobs*: int                 ## Maximum parallel jobs for operations that support it.
  jobsExplicit*: bool        ## True when jobs was provided explicitly.
  agentTargets*: seq[string] ## Agent hosts to configure for MCP setup.
Shared options accepted by CLI and MCP operations.
OperationResult = object
  ok*: bool                  ## True when the operation succeeded.
  json*: JsonNode            ## Machine-readable result payload.
  output*: string            ## Human-readable or compiler output.
Standard result returned by operation APIs.

Procs

proc addDependencyOperation(projectDir: string; opts: OperationOptions): OperationResult {.
    ...raises: [Exception, IOError, ValueError, OSError, TomlError, KeyError], tags: [
    ReadIOEffect, RootEffect, WriteIOEffect, WriteDirEffect, ReadDirEffect,
    ReadEnvEffect, ExecIOEffect, TimeEffect], forbids: [].}
Add a dependency to config, sync it, and refresh the lockfile.
proc affectedOperation(projectDir: string;
                       opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    WriteDirEffect, ExecIOEffect, TimeEffect, WriteEnvEffect], forbids: [].}
Return or run affected targets, tests, tasks, and source files.
proc agentSetupOperation(projectDir: string;
                         opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [], tags: [ReadDirEffect, ReadIOEffect, WriteDirEffect,
                       WriteIOEffect, RootEffect], forbids: [].}
Write project-local MCP and skill setup for coding agents.
proc buildOperation(projectDir: string;
                    opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    WriteEnvEffect, WriteDirEffect, ExecIOEffect, TimeEffect], forbids: [].}
Build project targets.
proc bumpOperation(projectDir: string;
                   opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [Exception], tags: [ReadIOEffect, RootEffect, WriteIOEffect,
                                WriteDirEffect, ReadDirEffect], forbids: [].}
Increment Package version intent.
proc cacheExplainOperation(projectDir: string; opts: OperationOptions): OperationResult {....raises: [
    IOError, ValueError, OSError, TomlError, KeyError, Exception, LibraryError,
    SslError], tags: [ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect,
                      ReadEnvEffect, TimeEffect], forbids: [].}
Explain local and remote task-cache lookup state for one task.
proc cacheOperation(projectDir: string;
                    opts: OperationOptions = defaultOperationOptions()): OperationResult {....raises: [
    IOError, ValueError, OSError, TomlError, KeyError, Exception, LibraryError,
    SslError], tags: [ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect,
                      ReadEnvEffect, WriteDirEffect, TimeEffect], forbids: [].}
List, clean, or explain task cache entries.
proc checkOperation(projectDir: string;
                    opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    ExecIOEffect, TimeEffect], forbids: [].}
Run nim check against configured main files.
proc ciOperation(projectDir: string;
                 opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    ExecIOEffect, TimeEffect, WriteDirEffect], forbids: [].}
Run validation-oriented CI checks without rewriting source files.
proc ciTemplateOperation(projectDir: string;
                         opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [OSError, IOError],
    tags: [WriteDirEffect, ReadDirEffect, WriteIOEffect], forbids: [].}
Write a CI template file.
proc cleanOperation(projectDir: string;
                    opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [OSError], tags: [ReadDirEffect, WriteDirEffect], forbids: [].}
Remove the project's build directory.
proc compileCommandEntries(projectDir: string; cfg: BauConfig; profile: string;
                           selection: FeatureSelection): seq[JsonNode] {.
    ...raises: [ValueError, KeyError, OSError, IOError],
    tags: [ReadEnvEffect, ReadDirEffect, ReadIOEffect], forbids: [].}
Build compile command entries for source and test Nim files.
proc compileCommandsOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    WriteDirEffect], forbids: [].}
Write compile_commands.json for a project or workspace.
proc convertOperation(projectDir: string; opts: OperationOptions): OperationResult {.
    ...raises: [ValueError, OSError],
    tags: [ReadDirEffect, ReadIOEffect, WriteDirEffect, WriteIOEffect],
    forbids: [].}
Convert a Nimble project into Bau configuration.
proc defaultOperationOptions(): OperationOptions {....raises: [], tags: [],
    forbids: [].}
Return default operation options shared by CLI and MCP callers.
proc dependencyStatusOperation(projectDir: string; opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    ExecIOEffect, TimeEffect], forbids: [].}
Return dependency status data for a project or workspace.
proc dependencyTreeOperation(projectDir: string;
                             opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect],
    forbids: [].}
Return dependency tree data for a project or workspace.
proc depsOperation(projectDir: string; opts: OperationOptions): OperationResult {.
    ...raises: [Exception], tags: [ReadDirEffect, ReadIOEffect, RootEffect,
                                WriteIOEffect, ReadEnvEffect, ExecIOEffect,
                                TimeEffect, WriteDirEffect], forbids: [].}
Run dependency sync, lock, update, verify, vendor, or patch operations.
proc depsVerifyOperation(projectDir: string; opts: OperationOptions): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    ExecIOEffect, TimeEffect], forbids: [].}
proc docOperation(projectDir: string;
                  opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    WriteDirEffect, ExecIOEffect, TimeEffect], forbids: [].}
Build API documentation for a project or workspace.
proc doctorOperation(projectDir: string;
                     opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [Exception], tags: [ReadDirEffect, ReadIOEffect, RootEffect,
                                WriteIOEffect, ReadEnvEffect, ExecIOEffect,
                                TimeEffect], forbids: [].}
Check configured toolchain requirements.
proc envOperation(projectDir: string;
                  opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [Exception, ValueError, KeyError, OSError, IOError], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect],
    forbids: [].}
Return the resolved Build Environment summary.
proc explainOperation(projectDir: string;
                      opts: OperationOptions = defaultOperationOptions()): OperationResult {....raises: [
    IOError, ValueError, OSError, TomlError, KeyError, Exception,
    JsonParsingError], tags: [ReadDirEffect, ReadIOEffect, RootEffect,
                              WriteIOEffect, ReadEnvEffect], forbids: [].}
Explain build fingerprint state for a project or workspace.
proc fmtOperation(projectDir: string;
                  opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [OSError, IOError, ValueError], tags: [ReadDirEffect, ReadEnvEffect,
    ReadIOEffect, ExecIOEffect, RootEffect, TimeEffect, WriteIOEffect],
    forbids: [].}
Format Nim source files under src with nimpretty.
proc graphOperation(projectDir: string;
                    opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect],
    forbids: [].}
Return project or workspace graph data.
proc initOperation(projectDir: string; opts: OperationOptions): OperationResult {.
    ...raises: [ValueError, OSError, IOError],
    tags: [ReadDirEffect, WriteDirEffect, WriteIOEffect], forbids: [].}
Initialize a new Bau project.
proc installOperation(projectDir: string;
                      opts: OperationOptions = defaultOperationOptions()): OperationResult {....raises: [
    IOError, ValueError, OSError, TomlError, KeyError, Exception, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    WriteDirEffect, WriteEnvEffect, ExecIOEffect, TimeEffect], forbids: [].}
Install, update, or remove built binary targets.
proc lintOperation(projectDir: string;
                   opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    ExecIOEffect, TimeEffect], forbids: [].}
Check Nim source style without rewriting files.
proc metadataOperation(projectDir: string;
                       opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect],
    forbids: [].}
Return effective configuration metadata for a project or workspace.
proc packageOperation(projectDir: string;
                      opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [Exception], tags: [ReadDirEffect, ReadIOEffect, RootEffect,
                                WriteIOEffect, ReadEnvEffect, WriteDirEffect],
    forbids: [].}
Validate Package Contents and optionally write a package manifest output.
proc publishOperation(projectDir: string;
                      opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [Exception], tags: [ReadDirEffect, ReadIOEffect, RootEffect,
                                WriteIOEffect, ReadEnvEffect, WriteDirEffect,
                                ExecIOEffect, TimeEffect], forbids: [].}
Validate or submit a Package Publication.
proc queryOperation(projectDir: string; opts: OperationOptions): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect],
    forbids: [].}
Run dependency and explanation queries.
proc removeDependencyOperation(projectDir: string; opts: OperationOptions): OperationResult {.
    ...raises: [Exception, IOError, ValueError, OSError, TomlError, KeyError], tags: [
    ReadIOEffect, RootEffect, WriteIOEffect, WriteDirEffect, ReadDirEffect,
    ReadEnvEffect, TimeEffect, ExecIOEffect], forbids: [].}
Remove a dependency from config and refresh the lockfile.
proc resultJson(node: JsonNode): OperationResult {....raises: [], tags: [],
    forbids: [].}
Wrap a JSON node in a successful operation result.
proc runOperation(projectDir: string;
                  opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    WriteEnvEffect, WriteDirEffect, ExecIOEffect, TimeEffect], forbids: [].}
Build and run a project target.
proc shellInitOperation(projectDir: string;
                        opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [], tags: [ReadEnvEffect, ReadIOEffect, ReadDirEffect,
                       WriteDirEffect, WriteIOEffect], forbids: [].}
Add Bau's binary directory to the selected shell startup file.
proc tailorOperation(projectDir: string;
                     opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    WriteDirEffect], forbids: [].}
Discover or write missing target declarations.
proc taskOperation(projectDir: string;
                   opts: OperationOptions = defaultOperationOptions()): OperationResult {....raises: [
    IOError, ValueError, OSError, TomlError, KeyError, Exception, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    WriteEnvEffect, WriteDirEffect, ExecIOEffect, TimeEffect], forbids: [].}
List or run project tasks.
proc testOperation(projectDir: string;
                   opts: OperationOptions = defaultOperationOptions()): OperationResult {.
    ...raises: [IOError, ValueError, OSError, TomlError, KeyError, Exception], tags: [
    ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect,
    WriteDirEffect, ExecIOEffect, TimeEffect], forbids: [].}
Compile and run project tests, returning aggregate counts.