bau/workspace

Loads workspace members and merges workspace defaults.

Types

WorkspaceMember = object
  path*: string              ## Member path relative to the workspace root.
  projectDir*: string        ## Absolute project directory for the member.
  name*: string              ## Package name or directory-derived fallback.
Resolved workspace member path and display name.
WorkspaceProject = object
  path*: string              ## Member path relative to the workspace root.
  projectDir*: string        ## Absolute project directory for the member.
  name*: string              ## Package name or directory-derived fallback.
  cfg*: BauConfig            ## Effective Bau configuration for this member.
Workspace member plus its effective config.
WorkspaceScope = enum
  wsDefaultMembers,         ## Load default members when configured.
  wsAllMembers               ## Load every configured workspace member.
Selection mode for workspace member loading.

Procs

proc isWorkspaceRoot(projectDir: string): bool {....raises: [],
    tags: [ReadDirEffect, ReadIOEffect, RootEffect, WriteIOEffect], forbids: [].}
Return true when projectDir contains a [workspace] config table.
proc loadWorkspaceProjects(root: string;
                           scope: WorkspaceScope = wsDefaultMembers): seq[
    WorkspaceProject] {....raises: [IOError, ValueError, OSError, TomlError,
                                 KeyError, Exception], tags: [ReadDirEffect,
    ReadIOEffect, RootEffect, WriteIOEffect, ReadEnvEffect], forbids: [].}

Load effective configs for the selected projects in a workspace.

When root is not a workspace, it is returned as a single project.

proc resolveWorkspaceMemberPaths(root: string; ws: WorkspaceConfig;
                                 defaultOnly = true): seq[string] {.
    ...raises: [ValueError, OSError], tags: [ReadDirEffect, RootEffect],
    forbids: [].}
Resolve member path patterns into sorted relative project paths.
proc resolveWorkspaceMembers(root: string; ws: WorkspaceConfig;
                             defaultOnly = true): seq[WorkspaceMember] {.
    ...raises: [ValueError, OSError, Exception],
    tags: [ReadDirEffect, RootEffect, ReadIOEffect, WriteIOEffect], forbids: [].}
Resolve configured workspace members and infer display names.