* Looks for `$GITHUB_TOKEN` env var, and if not found, tries to run `gh
auth token` to get the token from the GitHub CLI.
* Made a conditional `start` method for the bar, which was previously
missed.
Tools are now stored in the `~/.pesde/bin/.tool_storage` directory, in
order to prevent naming conflicts with other tool linkers. An old
tool_storage directory gets migrated to the new path if present.
* Made bar related conditional operations get constructed by a
`makeCondBar` which returns a table of functions to conditionally handle
a progress bar.
* Moved progress bar boolean out of function args for `installTool` into
global state.
Formerly, we used metatables to get custom `Option` and `Result` objects
which were difficult to type properly, leading to a lot of `unknown` and
`any` casts.
This refactor fixes it by making extensions opt-in, where we import the
extension methods separately from the original implementations, thereby
allowing us to not have to typecast things everywhere.
* Updates the `update_tools` dev script to include logic for using the
GitHub API to fetch and write READMEs for bins.
* Also optionally accepts a GitHub token for authenticated requests
using the `$GITHUB_TOKEN` environment variable.
* Also moves dev script dependencies at root manifest into
`dev_dependencies`.
Previously, we assumed that the tools followed semver, and hence parsed
their versions for comparison. Some tools may not follow semver, and we
should not impose such a requirement as a toolchain management library.
Therefore, we now only check if the requested version string matches an
asset version tag. In order to ensure backwards compatibility, we strip
the leading `v` from the version if present.
* Also breaks down `GithubReleases` into array of `GithubRelease` type
* Adds a `Custom` operation type for internal `Github` class, allowing
user to mention custom request data