Commit Briefs

1d4fd61d62 Murilo Ijanc

fetch and propagate upstream link.mk to vendor/<stem>.mk (main)

Upstream libs that need native link flags or compile-time env vars ship a link.mk at the repository root. marmita now reads it on add and update, copies it into the consumer's vendor/ directory renamed to <stem>.mk, and removes it on rm. The consumer's Makefile picks the file up via -include $(wildcard vendor/*.mk).


909f9a264c Murilo Ijanc

initial import of marmita, a single-file dependency manager

marmita vendors a single source file from a remote git repository at a pinned commit and records the result in a plain-text vendor/VENDOR manifest. Subcommands are add, update, rm and list. All git operations go through libgit2 via an FFI binding declared inline in marmita.rs; SSH credentials come from the running agent or, as a fallback, from the default identity files under ~/.ssh.


Branches

Tags

This repository contains no tags

Tree

.gitignorecommits | blame
.rustfmt.tomlcommits | blame
LICENSEcommits | blame
Makefilecommits | blame
README.mdcommits | blame
marmita.1commits | blame
marmita.rscommits | blame

README.md

marmita - vendor single-file source dependencies from git
==========================================================
marmita is a minimal binary that vendors a single source file
from a remote git repository at a pinned commit, recording the
result in a plain-text manifest.


Requirements
------------
In order to build marmita you need rustc and libgit2.


Installation
------------
Edit Makefile to match your local setup (marmita is installed
into the /usr/local/bin namespace by default).

Afterwards enter the following command to build and install
marmita:

    make clean install


Running marmita
---------------
Add a dependency at the latest commit:

    marmita add ssh://ijanc@ijanc.org/json/jackson

Pin to a tag or branch:

    marmita add -r v1.3.0 ssh://ijanc@ijanc.org/json/jackson

Refresh every dependency:

    marmita update

Refresh one dependency:

    marmita update http.rs

Remove a dependency:

    marmita rm http.rs

List every recorded dependency:

    marmita list

Print the version:

    marmita -V


Manifest
--------
marmita stores its bookkeeping in vendor/VENDOR.  Each entry is
a header line with the file name followed by tab-indented
attribute lines, separated by blank lines:

    jackson.rs
        origin:	ssh://ijanc@ijanc.org/json/jackson
        ref:	v1.3.0
        commit:	a4e84f6d2f21d8a5f28d17a38ed9968251325714
        date:	2026-04-18

The commit field is the source of truth for what is vendored.
The ref field is optional and only present when add was given
a tag or branch with -r.

The manifest is plain text and may be edited by hand; running
marmita update afterwards is the recommended way to apply the
changes to the working copy.


Download
--------
    got clone ssh://ijanc@ijanc.org/marmita


License
-------
ISC -- see LICENSE.