How fuelup works
fuelup is largely inspired by rustup. It installs and manages multiple Fuel
toolchains and presents them all through a single set of tools within ~/.fuelup/bin.
Generally, it is not recommended to manually make changes to the fuelup directory, otherwise fuelup
might not function as expected. If you have made changes to the directory, we recommend removing
the entire directory and re-installing fuelup with fuelup-init.
Proxies
On the surface, the installed executables seem to live in ~/.fuelup/bin, but the forc, fuel-core
and other executables installed in ~/.fuelup/bin are actually not the real binaries
but are all just symlinks to fuelup itself! fuelup contains logic to act as a
proxy for the real binaries, so that it can change its behavior based on what component
is being called. This is how fuelup can switch between toolchains.
A common mistake is to directly move binaries into the bin directory, which would
break the behavior of fuelup.
Store
All actual executables are installed within the store. This is usually ~/.fuelup/store.
This is where the real binaries are installed and cached to be used in toolchains
and overrides through symlinks. fuelup will always check the store for existing components
before trying to install them - which means you can avoid the download entirely if something
is already cached within the store!
Example
To give an example of how this all works together: imagine typing forc build in your terminal.
This call invokes forc (which is actually fuelup) within the fuelup bin directory, which in
turn executes the correct version of forc based on either an override file (fuel-toolchain.toml)
or your currently active toolchain (in order of priority).