
Fundle: A minimalist package manager for fish shell - tuvistavie
https://github.com/tuvistavie/fundle
======
gue5t
Why do people keep writing domain-specific package managers?

~~~
mitchtbaum
Agreed. From my research,
[peru]([https://github.com/buildinspace/peru](https://github.com/buildinspace/peru))
works very well as a unified, extensible application's package manager, plugin
manager, extension manager, addon manager, theme manager, etc.

~~~
tuvistavie
Correct me if I am wrong, but for fish, I think that would do half of the
work: fetching the packages. You still need to update `fish_function_path` and
`fish_complete_path`, then source the relevant files from the packages. If you
forget about the `install` command of fundle, you can just use peru or
whatever tool you like to fetch the packages and let fundle initialize
everything.

~~~
mitchtbaum
Exactly. So with peru, those post-fetch steps, in this case specific to fish,
could run as separate ~"features". (I put that in quotes with a tilde, because
I had trouble figuring out exactly how that works.) Here are a couple links to
see what I mean about adding additional functionality outside existing plugins
or as a new plugin:

[https://github.com/buildinspace/peru/blob/master/docs/archit...](https://github.com/buildinspace/peru/blob/master/docs/architecture.md#plugins)

[https://github.com/buildinspace/peru/tree/master/docs/make_e...](https://github.com/buildinspace/peru/tree/master/docs/make_examples)

Edit: As a possible concrete example, `extract_tar` runs in `curl_plugin.py`
based on `PERU_MODULE_UNPACK` setting in a yaml config.

~~~
tuvistavie
Thanks for the links!

What I meant was not a post-fetch (which if I understand, runs only once) step
but rather an init script that would load the scripts at each shell startup,
what pathogen would do for vim, for example.

I looked a little at peru docs and the links you gave me, and that is pretty
much the point I gave in my other comment:

> I would rather manage my packages using a simple fish shell script rather
> than making the setup more complex with something too general.

I know there are plenty of powerful tools that can manage pretty much
anything, I do use Ansible locally to setup my machine and could easily have
it download my fish packages as well. However, when it comes to a particular
software, especially when loading the downloaded resources is neither
automatic nor obvious (e.g. vim, emacs, fish), I find a simple and specialized
tool in the target much more pleasant to use, which was my motivation for this
one.

