Checksum-verified MoonBit CLI binary installer using GitHub Releases
Dependencies
moon install f4ah6o/moon-binstall/cmd/main@0.1.3
mv "$HOME/.moon/bin/main" "$HOME/.moon/bin/moon-binstall"
export PATH="$HOME/.moon/bin:$PATH"
moon binstall --versionmoon binstall turtlesmoon update
moon install
moon test --target native
moon build --release --target native
moon run cmd/main --target native -- --helpmoon update
moon install
moon build cmd/main --target native --release
mkdir -p "${MOON_HOME:-$HOME/.moon}/bin"
binary=$(find _build/native/release/build -type f -name main.exe -print)
test -n "$binary"
install -m 755 "$binary" "${MOON_HOME:-$HOME/.moon}/bin/moon-binstall"
export PATH="${MOON_HOME:-$HOME/.moon}/bin:$PATH"
moon binstall --version
moon binstall turtles
moon binstall hotpath
moon binstall dsh
moon binstall turtles@v0.4.0moon run cmd/main --target native -- turtles --dry-run
moon run cmd/main --target native -- turtles@v0.4.0 --bin-dir "$HOME/.local/bin"
moon run cmd/main --target native -- gpui-mbt/turtles.mbt
moon run cmd/main --target native -- hotpath
moon run cmd/main --target native -- f4ah6o/dsh.mbt| Alias | Repository | Installed executable |
|---|---|---|
| turtles | gpui-mbt/turtles.mbt | turtles |
| hotpath | gpui-mbt/hotpath.mbt | hotpath-report (example executable only) |
| dsh | f4ah6o/dsh.mbt | dsh |
moon binstall f4ah6o/moon-binstall/cmd/main@0.1.3 \
--target linux-x86_64 --dry-run \
--pkg-fmt bin \
--pkg-url 'https://github.com/f4ah6o/moon-binstall/releases/download/v{version}/moon-binstall-{target}'
moon binstall owner/module/cmd/first@1.2.0 owner/module/cmd/second@2.0.0 \
--bin-dir "$HOME/.local/bin"
moon binstall --module owner/module cmd/first cmd/second@2.0.0{
"repository": "https://github.com/owner/repo",
"packages": [
{
"package": "cmd/main",
"binary": "tool",
"pkg-url": "{repo}/releases/download/v{version}/{bin}-{target}{archive-suffix}",
"pkg-fmt": "tgz",
"bin-path": "{package}/{bin}",
"overrides": {
"darwin-aarch64": {
"pkg-url": "{ repo }/releases/download/v{ version }/{ bin }-{ target }{ archive-suffix }",
"pkg-fmt": "zip"
}
}
}
]
}moon login
moon update
moon install
moon package --list
moon publishpub struct ArtifactConfig {
package_path : String
binary : String
pkg_url : String?
pkg_fmt : String?
bin_path : String?
}pub struct BatchOptions {
coordinates : Array[InstallCoordinate]
directory : String?
dry_run : Bool
force : Bool
target : String?
version : String?
pkg_url : String?
pkg_fmt : String?
bin_path : String?
module_path : String?
manifest_path : String?
}pub struct MooncakesPackage {
module_path : String
package_path : String
binary : String
version : String?
}pub struct Package {
owner : String
repo : String
binary : String
version : String?
}pub struct RegistryRelease {
module_path : String
version : String
repository : String
checksum : String
}pub struct ReleaseAsset {
url : String
digest : String
name : String
tag : String
}pub struct ResolvedInstall {
asset : ReleaseAsset
binary : String
format : String
bin_path : String?
}pub struct StagedInstall {
destination : String
staging : String
staging_dir : String
}fn artifact_url_asset_name(url : String, owner : String, repo : String, tag : String) -> String raisefn default_archive_member_candidates(module_name : String, package_path : String, binary : String, version : String, target : String) -> Array[String] raisefn default_artifact_names_for_format(binary : String, version : String, target : String, format : String?) -> Array[String] raisefn expand_artifact_template(template : String, owner : String, repo : String, module_name : String, package_path : String, binary : String, version : String, target : String, archive_suffix : String) -> String raiseasync fn install_from_asset_file(asset_path : String, digest : String, format : String, bin_path : String?, binary : String, bin_dir : String, force : Bool) -> Unitfn manifest_repository(payload : String, module_path : String) -> String raisefn mooncakes_manifest_url(module_path : String, version : String?) -> String raisefn mooncakes_source_url(module_path : String, version : String) -> String raisefn parse_artifact_config(payload : String, package_path : String, default_binary : String) -> ArtifactConfig? raisefn parse_github_repository(repository : String) -> (String, String) raisefn platform_key(os : String, cpu : String) -> String raiseasync fn read_artifact_binary(archive_path : String, format : String, member_path : String?) -> Bytesasync fn read_artifact_binary_from_candidates(archive_path : String, format : String, candidates : Array[String]) -> Bytesasync fn read_artifact_binary_from_candidates_with_limit(archive_path : String, format : String, candidates : Array[String], max_binary_bytes : Int) -> Bytesasync fn read_artifact_binary_with_limit(archive_path : String, format : String, member_path : String?, max_binary_bytes : Int) -> Bytesasync fn read_zip_member_optional(archive_path : String, wanted : String) -> Bytes?async fn read_zip_member_optional_with_limit(archive_path : String, wanted : String, max_member_bytes : Int) -> Bytes?fn resolve_registry_release(payload : String, expected_module : String, expected_version : String?) -> RegistryRelease raisefn resolve_release_names(payload : String, owner : String, repo : String, expected_names : Array[String], expected_tag : String?) -> ReleaseAsset raisefn resolve_release_names_optional(payload : String, owner : String, repo : String, expected_names : Array[String], expected_tag : String?) -> ReleaseAsset? raisefn validate_artifact_template(template : String) -> Unit raisefn validate_member_path(path : String) -> Unit raiseInstall
Download zipChecksum-verified MoonBit CLI binary installer using GitHub Releases
Dependencies