Manage multiple IPFS installs (multiple implementations and multiple versions).
Provide a virtual ipfs command that launches the correct IPFS version (downloading it if necessary).
Requirements
V1:
Fetch IPFS over IPFS, when possible.
Fallback on fetching IPFS over HTTPs.
Support rolling back to a previous release.
V2:
Support both js-ipfs and go-ipfs.
V3:
Support auto update.
User Story
The user must be able to:
Run ipfs $ARBITRARY_COMMAND and have that command run on the correct version of IPFS.
Run an ipfs update [latest] command to update to the latest stable version of their chosen IPFS implementation (go or js).
Run ipfs update vX.Y.Z to update to a specific version of their chosen IPFS dist.
Run ipfs update $lang-vX.Y.Z to switch to update to a specific version of $lang.
Run ipfs update $lang-latest to switch to the latest IPFS version in $lang.
Pass --transport={ipfs,https,auto} to ipfs update to force a specific transport.
V1 Design
Like rustup, this project should provide a virtual ipfs command that downloads the correct IPFS version/distribution and runs it. Unlike rustup, it should support downloading IPFS over IPFS if a working version of IPFS is already installed.
When the ipfs command is run:
If ipfs is installed:
Run it.
Otherwise:
Download IPFS over https from dist.ipfs.io.
When the ipfs update command is run:
If ipfs is installed:
Use it to check for an update by checking ipfs cat /ipns/dist.ipfs.io/go-ipfs/latest.
If there's an update available, fetch the correct build with IPFS.
Idea: rustup but for IPFS!
This tool would:
ipfs
command that launches the correct IPFS version (downloading it if necessary).Requirements
V1:
V2:
V3:
User Story
The user must be able to:
ipfs $ARBITRARY_COMMAND
and have that command run on the correct version of IPFS.ipfs update [latest]
command to update to the latest stable version of their chosen IPFS implementation (go or js).ipfs update vX.Y.Z
to update to a specific version of their chosen IPFS dist.ipfs update $lang-vX.Y.Z
to switch to update to a specific version of$lang
.ipfs update $lang-latest
to switch to the latest IPFS version in$lang
.--transport={ipfs,https,auto}
toipfs update
to force a specific transport.V1 Design
Like
rustup
, this project should provide a virtualipfs
command that downloads the correct IPFS version/distribution and runs it. Unlikerustup
, it should support downloading IPFS over IPFS if a working version of IPFS is already installed.ipfs
command is run:ipfs
is installed:ipfs update
command is run:ipfs
is installed:ipfs cat /ipns/dist.ipfs.io/go-ipfs/latest
.$IPFS_PATH/releases/$VERSION/$ARCHITECTURE
.Update.Version
.ipfs update $VERSION
command is run, do the same thing but use the specified version.