Class ProjectCascadeIo

java.lang.Object
network.ike.workspace.cascade.ProjectCascadeIo

public final class ProjectCascadeIo extends Object
Reads a project's own src/main/cascade/release-cascade.yaml into a ProjectCascade (IKE-Network/ike-issues#420).

Each foundation project version-controls this file in its own git tree, so resolution is a plain on-disk read of a fixed path — no artifact resolution, no central manifest. CascadeAssembler stitches the per-project files into the full ordered graph.

Parsing is lenient about unknown top-level keys (forward compatibility) but strict about edge shape.

  • Field Details

    • MANIFEST_NAME

      public static final String MANIFEST_NAME
      Conventional manifest file name.
      See Also:
    • MANIFEST_RELATIVE_PATH

      public static final String MANIFEST_RELATIVE_PATH
      Conventional manifest location relative to a repository root — src/main/cascade/release-cascade.yaml. Every foundation project carries the file at this same relative path.
      See Also:
  • Method Details

    • read

      public static ProjectCascade read(Path path)
      Parses a per-project manifest from a file path.
      Parameters:
      path - path to the YAML manifest
      Returns:
      the parsed manifest
      Throws:
      UncheckedIOException - if the file cannot be read
      IllegalArgumentException - if the manifest is malformed
    • read

      public static ProjectCascade read(Reader reader)
      Parses a per-project manifest from an open reader.
      Parameters:
      reader - the YAML source
      Returns:
      the parsed manifest
      Throws:
      IllegalArgumentException - if the manifest is malformed
    • load

      public static Optional<ProjectCascade> load(Path manifestPath)
      Loads a per-project manifest from a path, degrading gracefully when no manifest is present.
      Parameters:
      manifestPath - the manifest path; may be null
      Returns:
      the parsed manifest, or empty if manifestPath is null or does not point at a regular file
      Throws:
      IllegalArgumentException - if the manifest exists but is malformed