hull dependency tree

hull dependency tree prints the composition chain of a package: every layer and required package, and recursively their own layers and requires.

When to use it

  • To see the full shape of a package that is more than one level deep — which layer pulls in which.
  • To tell layers ([layer], merged into your package) apart from requires ([requires], installed alongside) at a glance.

What happens

hull resolves each source to its package, reads that package’s version and its own dependencies, and prints an indented tree rooted at your package. Every node shows [kind] name@version (source):

  • [layer] — merged into the parent at render time.
  • [requires] — a co-deployed package.

The tree descends into each resolved package, so a layer that itself declares layers appears with its children nested beneath it. Resolving remote sources (git::, registry) fetches them into hull’s local cache; local paths are read in place.

Usage

hull dependency tree <package-path>

Flags

Inherits the global flags.

Worked example

INPUT — ./web/hull.yaml with two layers and one required package:

apiVersion: hull/v1
name: web
version: 0.3.0
layers:
  - name: base-layer
    source: ../base-layer     # base-layer/hull.yaml → version 1.0.0
  - name: common
    source: ../common-layer   # common-layer/hull.yaml → version 1.4.0
requires:
  - name: redis
    source: ../redis-req      # redis-req/hull.yaml → version 7.2.0

Command:

hull dependency tree ./web

OUTPUT:

web@0.3.0
├── [layer] base-layer@1.0.0 (/abs/path/to/base-layer)
├── [layer] common@1.4.0 (/abs/path/to/common-layer)
└── [requires] redis@7.2.0 (/abs/path/to/redis-req)

Tracing each input to its output line:

hull.yaml entry Output line Why
root package web@0.3.0 the tree root is your package’s name@version
layers[0] base-layer [layer] base-layer@1.0.0 resolved ../base-layer, read version 1.0.0 from its hull.yaml
layers[1] common [layer] common@1.4.0 resolved ../common-layer, version 1.4.0
requires[0] redis [requires] redis@7.2.0 a requires: entry → [requires] label; version 7.2.0

Each version comes from the resolved package’s hull.yaml, not from hull.yaml’s source line — that is how the tree confirms what a source actually points at.

See also