{"id":15056298,"url":"https://github.com/tsloughter/beamup","last_synced_at":"2025-07-06T20:33:41.369Z","repository":{"id":253519395,"uuid":"834768915","full_name":"tsloughter/beamup","owner":"tsloughter","description":"Install and control active BEAM languages and components","archived":false,"fork":false,"pushed_at":"2024-11-29T11:33:01.000Z","size":155,"stargazers_count":48,"open_issues_count":26,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-17T02:22:34.309Z","etag":null,"topics":["elixir","erlang","gleam"],"latest_commit_sha":null,"homepage":"https://tsloughter.github.io/beamup/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tsloughter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-28T09:57:03.000Z","updated_at":"2024-10-27T10:26:22.000Z","dependencies_parsed_at":"2024-08-17T11:27:49.484Z","dependency_job_id":"d7c8d6ef-98a4-4a7c-a6c6-70628fe332e2","html_url":"https://github.com/tsloughter/beamup","commit_stats":null,"previous_names":["tsloughter/beamup"],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsloughter%2Fbeamup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsloughter%2Fbeamup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsloughter%2Fbeamup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsloughter%2Fbeamup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsloughter","download_url":"https://codeload.github.com/tsloughter/beamup/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230537062,"owners_count":18241515,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elixir","erlang","gleam"],"created_at":"2024-09-24T21:49:47.743Z","updated_at":"2024-12-20T05:08:53.177Z","avatar_url":"https://github.com/tsloughter.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BEAMUp\n\n[![Release](https://github.com/tsloughter/beamup/actions/workflows/release.yml/badge.svg)](https://github.com/tsloughter/beamup/actions/workflows/release.yml)\n\n\u003cp align=\"center\"\u003e\n    \u003cimg alt=\"beamup logo\" src=\"https://github.com/user-attachments/assets/b1d7c5da-71f1-4c15-96fe-a01e3884d523\"\u003e\n\u003c/p\u003e\n\nA tool for installing languages (support for Gleam, Erlang and Elixir) that run\non the [Erlang VM](https://www.erlang.org/) (BEAM) and related components --\ncomponent support to come in the future.\n\n## Install\n\nAn install script is provided for both Linux/Mac:\n\n```\ncurl --proto '=https' --tlsv1.2 -LsSf https://github.com/tsloughter/beamup/releases/download/v0.6.0/beamup-installer.sh | sh\n```\n\nAnd Windows Powershell:\n\n```\npowershell -c \"irm\nhttps://github.com/tsloughter/beamup/releases/download/v0.6.0/beamup-installer.ps1\n| iex\"\n```\n\nBinaries can also be downloaded from the [releases on\nGithub](https://github.com/tsloughter/beamup/releases). Or install from source\nusing [cargo](https://doc.rust-lang.org/cargo/).\n\n## Usage\n\n`beamup` will store configuration at:\n\n- Linux: `~/.config/beamup/config.toml` \n- Mac: `~/Library/Application Support/beamup/config.toml`\n- Windows: `~\\AppData\\Local\\beamup\\config.toml`\n\nLocal configuration to set a language/component to use in a specific directory\nis in `./.beamup.toml`.\n\nHard links to the `beamup` executable for each language command, i.e. `gleam`,\n`erlc`, `erl`, `iex`, etc, is created in the following directory:\n\n- Linux: `$XDG_BIN_HOME` or `$XDG_DATA_HOME/../bin` or `$HOME/.local/bin`\n- Mac: `~/.beamup/bin`\n- Windows: `~\\.beamup\\bin`\n\nThis directory must be added to your `PATH` for `beamup` installs to work.\n\nInstalls are currently done to the applications data directory. This defaults\nto:\n\n- Linux: `~/.local/share/beamup/\u003clanguage\u003e/\u003cid\u003e`\n- Mac: `~/Library/Application Support/beamup/\u003clanguage\u003e/\u003cid\u003e`\n- Windows: `~\\AppData\\Local\\beamup\\\u003clanguage\u003e\\\u003cid\u003e`\n\nFor languages that support building from source you can pass additional build\noptions (like what is passed to `./configure` for Erlang) with either the\nenvironment variable `BEAMUP_BUILD_OPTIONS` or adding `default_build_options` to\nthe configuration under the language section:\n\n```\n[erlang]\ndefault_build_options = \"--enable-lock-counter\"\n```\n\nOr:\n\n```\nBEAMUP_BUILD_OPTIONS=\"--enable-lock-counter\" beamup build erlang -i latest-lock-counter latest\n```\n\n### Install Languages\n\nThe `build` command will compile a release and `install` will fetch a binary\nrelease. For Erlang at this time only `build` is supported and for Gleam and\nElixir only `install` is supported`.\n\nThe string `latest` can be used instead of a release name to get the release\nmarked latest in Github:\n\n```\n$ beamup build erlang latest\n```\n\n```\n$ beamup install gleam latest\n```\n\n```\n$ beamup install elixir latest\n```\n\nSee the `releases \u003clanguage\u003e` sub-command to see available releases to\nbuild/install.\n\n### Set Default Version\n\nAssuming you've built `OTP-25.3.2.7` you could set the default Erlang to use to\nit:\n\n```\n$ beamup default erlang OTP-25.3.2.7\n```\n\n### Switch Version Used in Directory\n\nUsing the `switch` sub-command either appends to or creates `./.beamup.toml`\nwith an entry like `erlang = \"OTP-25.3.2.7\"` and running an Erlang command like\n`erl` in that directory will use that version instead of the global default.\n\n### Other Commands\n\n- `releases \u003clanguage\u003e`: List the available releases that can be installed\n- `update-links`: Update the hard links that exists for each language executable\n\n### Install Components\n\nThe `component install` command can install binary releases of tools, currently\n[The Erlang Language\nPlatform](https://whatsapp.github.io/erlang-language-platform/) and\n[rebar3](https://rebar3.org/).\n\nThe same as with a language you can specify a version of the component to use in\nthe `.beamup.toml` file in a directory:\n\n```\nrebar3 = \"3.23.0\"\n```\n\n## Differences with Erlup\n\nBEAMUp is the successor to [erlup](https://github.com/tsloughter/erlup) and has\nimportant differences. First, the configuration is TOML and not INI, see `\n~/.config/beamup/config.toml` and commands require specifying a language to work on,\nfor example:\n\n```\n$ beamup install gleam v1.3.2\n```\n\nAnother key difference is `build` will work on the tarball of Github releases by\ndefault, not clones of tags. Use `-b` (not supported yet) to install a tag or\nbranch of a repository.\n\n\n\n## Acknowledgments\n\nInspiration for `erlup` is [erln8](https://github.com/metadave/erln8) by Dave\nParfitt. He no longer maintains it and I figured I could use writing my own as a\nway to learn Rust.\n\nThe switch to hardlinks instead of symlinks was taken from [rustup](https://rustup.rs/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsloughter%2Fbeamup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsloughter%2Fbeamup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsloughter%2Fbeamup/lists"}