We need to add support for various subcommands to tink in order to make it a more featureful package manager. I want to start with a few ancillary subcommands that should be more straightforward to implement and will help lay the groundwork towards implementing the more advanced ones.
All of these commands can also get implemented through
libnpm, which is now a dependency of tink if you pull from
latest. Check the
libnpm docs for links to the documentation for the library version of the subcommands, and you can use
lib/<command>.js from the main CLI repository as a reference for how each command is currently implemented.
Be prepared to iterate a little bit, because I’m treating “set down good practices early on” as a priority, so I might be asking folks to refactor the code they submit a few times before it gets accepted, and it might seem arbitrary, but I want to make sure the architecture looks good from 10k feet and I hugely appreciate your patience with that process as it happens.
Also keep in mind that these commands may be re-evaluated as part of a UX pass over the way tink itself does things, so they’re initially just doing what npm does, and may be thrown away entirely later, so if you want the code you contribute to last forever, this isn’t necessarily what you want to contribute to. I’ll do my best to be helpful and constructive!
One last thing: It is 100% ok to directly copy-paste any of these commands straight out of the npm CLI and add them to tink. We’ll take care of any license-related shenanigans on our end.
Once you’ve claimed a command (be replying here), head over to the tink repository and clone it, then file a PR with the implementation! That’s it! Please take one command at a time, so others get to have fun too! Don’t worry about tests – more setup needs to be done before they can be done consistently, and the related libraries are already well-tested so the window of failure is small. tink is a prototype, so it’s fine!
These libraries all use some part of
libnpm subcommands, under the same name as the command itself. So
tink profile uses
tink profile(npm version) (PR by @alopezsanchez)
tink hook(npm version) (claimed by @mike)
tink team(npm version) (PR by @darking360)
tink org(npm version) (done by @zkat)
tink access(npm version) (PR by @BeniCheni)
These subcommands are basic enough that they only use
libnpm.fetch() calls directly, or the subcommand is simply not in