bau/features

Resolves feature selections and optional dependency enablement.

Types

FeatureSelection = object
  requested*: seq[string]    ## Feature names explicitly requested by the caller.
  enabled*: seq[string]      ## Non-default feature names enabled after expansion.
  enabledDeps*: seq[string]  ## Optional dependency names enabled by features.
Result of resolving requested and default features.

Procs

proc compilerFeatureFlags(selection: FeatureSelection): seq[string] {.
    ...raises: [], tags: [], forbids: [].}
Build Nim compiler -d: flags for enabled features.
proc dependencyEnabled(cfg: BauConfig; depName: string; dep: DepInfo;
                       features: FeatureSelection): bool {....raises: [], tags: [],
    forbids: [].}
Return whether a dependency is active under a feature selection.
proc enabledFeatureEnv(selection: FeatureSelection): Table[string, string] {.
    ...raises: [], tags: [], forbids: [].}
Build environment variables that expose enabled features to tasks.
proc featureExists(cfg: BauConfig; name: string): bool {....raises: [], tags: [],
    forbids: [].}
Return true when name is declared in the project's feature table.
proc normalizeFeatureDefine(name: string): string {....raises: [], tags: [],
    forbids: [].}
Convert a feature name into a Nim -d: compatible define suffix.
proc parseFeatureList(value: string): seq[string] {....raises: [], tags: [],
    forbids: [].}
Split a comma-separated feature option into normalized feature names.
proc resolveFeatures(cfg: BauConfig; requested: openArray[string];
                     allFeatures = false; noDefaultFeatures = false): FeatureSelection {.
    ...raises: [ValueError, KeyError], tags: [], forbids: [].}

Resolve requested, default, and transitive feature enablement.

Raises ValueError when a requested feature or referenced feature item is unknown.