hull dependency update
hull dependency update re-resolves every layer and required package against
its source and rewrites hull.lock with the pinned versions and commits.
When to use it
- After editing
layers:orrequires:inhull.yaml, to refresh the lock. - To move a
git::or registry source forward to the latest ref or version its constraint allows.
What happens
hull reads hull.yaml and, for each layer and required package, resolves its
source:
- git sources are fetched and the exact commit is recorded as
resolvedCommit. - registry sources record the selected
resolvedVersion. - local sources are recorded by path.
hull then writes hull.lock with a fresh generated timestamp and one entry
per layer and require. This lock is what build,
install, and template read first, so every
later render uses the same pinned versions. On success hull prints
Layers updated successfully.
Usage
hull dependency update <package-path> [name]
The optional [name] argument updates a single legacy dependencies: entry;
for layers:/requires: packages, all entries are re-resolved together.
Flags
| Flag | Cause → effect |
|---|---|
--skip-refresh |
skip refreshing repository indexes first; resolve against the index already cached — faster, but may miss versions published since the last refresh |
Worked example
INPUT — ./web/hull.yaml with two layers and one required package, no
lock yet:
apiVersion: hull/v1
name: web
version: 0.3.0
layers:
- name: base-layer
source: ../base-layer
- name: common
source: ../common-layer
requires:
- name: redis
source: ../redis-req
Command:
hull dependency update ./web
OUTPUT:
Layers updated successfully.
./web/hull.lock that gets written:
apiVersion: hull/v1
generated: 2026-07-18T23:47:45.658955+02:00
layers:
- name: base-layer
source: ../base-layer
- name: common
source: ../common-layer
requires:
- name: redis
source: ../redis-req
Tracing each input to its lock entry:
hull.yaml entry |
hull.lock entry |
Why |
|---|---|---|
layers[0] base-layer |
layers: - name: base-layer |
resolved and pinned under layers: |
layers[1] common |
layers: - name: common |
second layer, pinned |
requires[0] redis |
requires: - name: redis |
requires are pinned in their own block |
A git:: source would add resolvedCommit:, and a registry source
resolvedVersion:, so the lock records the exact bits, not just the name.
Run dependency list afterward and every STATUS
reads locked.
See also
dependency build— download what this lock pinsdependency list— confirm entries are nowlockedinstall— install using the pinned versions