OCI-only artifact catalog CLI
Project description
artifact-locker
artifact-locker stores a small local catalog of files and syncs that current
state through OCI with oras.
The installed CLI is available as both artifact-locker and the shorter
artlock.
The model is intentionally simple:
- every artifact is a real stored file
- the local catalog is the source of truth
pushmakes the remote match local current statepullrestores that current state on another machine
Commands
artifact-locker initartifact-locker add [source-or-url]artifact-locker list [query]artifact-locker find <query>artifact-locker show <query>artifact-locker remove <query>artifact-locker verify --catalog|--local|--allartifact-locker pushartifact-locker pull
Repo Layout
.
├── catalog/
│ ├── artifacts.json
│ └── checksums.txt
├── config.json
└── staging/
└── release-assets/
config.json stores the OCI repository and the local artifact directory. By
default the managed repo lives under ~/.local/share/artifact-locker/ and the
managed payload directory is ~/.local/share/artifact-locker/artifacts.
Managed payloads are stored by platform, category, and artifact ID:
~/.local/share/artifact-locker/artifacts/<platform>/<category>/<artifact_id>/<filename>
Registry authentication is external. For ECR Public:
aws ecr-public get-login-password --region us-east-1 | \
oras login -u AWS --password-stdin public.ecr.aws
Usage
artifact-locker init
artifact-locker add ./Seatbelt.exe --platform windows --category bin --no-input
artifact-locker add https://example.test/tool.zip --platform linux --category archive --no-input
artifact-locker find seatbelt
artifact-locker show Seatbelt.exe
artifact-locker remove seatbelt
artifact-locker push
artifact-locker pull
The OCI repository is treated as fully owned by artifact-locker. Any remote
tag not part of the current live state may be removed on push.
Development
python3 -m pytest
python3 -m build
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file artifact_locker-0.3.2.tar.gz.
File metadata
- Download URL: artifact_locker-0.3.2.tar.gz
- Upload date:
- Size: 27.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
724bf999bdc774ba44d9b8154ac09ba9fa6afd2d9d054c98b02bc59661ff041b
|
|
| MD5 |
ac44e365b14c2df40c125df245849239
|
|
| BLAKE2b-256 |
f748a5625afd14e9a37fd53cbb36ef5e9b98fb71f4c55378a65610bd810163b8
|
Provenance
The following attestation bundles were made for artifact_locker-0.3.2.tar.gz:
Publisher:
publish-pypi.yml on CameronCandau/Artifact-Locker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
artifact_locker-0.3.2.tar.gz -
Subject digest:
724bf999bdc774ba44d9b8154ac09ba9fa6afd2d9d054c98b02bc59661ff041b - Sigstore transparency entry: 1481014656
- Sigstore integration time:
-
Permalink:
CameronCandau/Artifact-Locker@f124513fbb38b2f46f3fb99856568b95fd0827a2 -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/CameronCandau
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@f124513fbb38b2f46f3fb99856568b95fd0827a2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file artifact_locker-0.3.2-py3-none-any.whl.
File metadata
- Download URL: artifact_locker-0.3.2-py3-none-any.whl
- Upload date:
- Size: 25.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d229e31074e763c95f1b23c3dbb70a972a2bc89a41f906296d288c1e1b8e1af8
|
|
| MD5 |
b98eeeb762c0557a290197c7d9d4c2be
|
|
| BLAKE2b-256 |
706d87f6e63e81d0dd84c3fa49f6365a06bf4bad326dff9a649678c4e277b887
|
Provenance
The following attestation bundles were made for artifact_locker-0.3.2-py3-none-any.whl:
Publisher:
publish-pypi.yml on CameronCandau/Artifact-Locker
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
artifact_locker-0.3.2-py3-none-any.whl -
Subject digest:
d229e31074e763c95f1b23c3dbb70a972a2bc89a41f906296d288c1e1b8e1af8 - Sigstore transparency entry: 1481014734
- Sigstore integration time:
-
Permalink:
CameronCandau/Artifact-Locker@f124513fbb38b2f46f3fb99856568b95fd0827a2 -
Branch / Tag:
refs/tags/v0.3.2 - Owner: https://github.com/CameronCandau
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@f124513fbb38b2f46f3fb99856568b95fd0827a2 -
Trigger Event:
release
-
Statement type: