{"id":13765640,"url":"https://github.com/mah0x211/lenv","last_synced_at":"2026-03-11T01:32:17.567Z","repository":{"id":31762415,"uuid":"35328635","full_name":"mah0x211/lenv","owner":"mah0x211","description":"Lua Version Manager","archived":false,"fork":false,"pushed_at":"2025-04-14T10:32:04.000Z","size":111,"stargazers_count":44,"open_issues_count":1,"forks_count":8,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-12-17T05:36:19.284Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mah0x211.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"zenodo":null}},"created_at":"2015-05-09T12:58:16.000Z","updated_at":"2025-04-14T10:30:36.000Z","dependencies_parsed_at":"2022-09-17T11:02:22.828Z","dependency_job_id":"43e414af-31ab-4f38-b43a-6bd5c34399e3","html_url":"https://github.com/mah0x211/lenv","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/mah0x211/lenv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mah0x211%2Flenv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mah0x211%2Flenv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mah0x211%2Flenv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mah0x211%2Flenv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mah0x211","download_url":"https://codeload.github.com/mah0x211/lenv/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mah0x211%2Flenv/sbom","scorecard":{"id":612215,"data":{"date":"2025-08-11","repo":{"name":"github.com/mah0x211/lenv","commit":"017d68858afffd19e5c6d2475ed87d68703b9a09"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/14 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/mah0x211/lenv/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/mah0x211/lenv/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/mah0x211/lenv/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/mah0x211/lenv/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/mah0x211/lenv/test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/mah0x211/lenv/test.yml/master?enable=pin","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.9.1 not signed: https://api.github.com/repos/mah0x211/lenv/releases/212167656","Warn: release artifact v0.9.0 not signed: https://api.github.com/repos/mah0x211/lenv/releases/210895096","Warn: release artifact v0.8.1 not signed: https://api.github.com/repos/mah0x211/lenv/releases/210358080","Warn: release artifact v0.8.0 not signed: https://api.github.com/repos/mah0x211/lenv/releases/210147794","Warn: release artifact v0.7.0 not signed: https://api.github.com/repos/mah0x211/lenv/releases/149890699","Warn: release artifact v0.9.1 does not have provenance: https://api.github.com/repos/mah0x211/lenv/releases/212167656","Warn: release artifact v0.9.0 does not have provenance: https://api.github.com/repos/mah0x211/lenv/releases/210895096","Warn: release artifact v0.8.1 does not have provenance: https://api.github.com/repos/mah0x211/lenv/releases/210358080","Warn: release artifact v0.8.0 does not have provenance: https://api.github.com/repos/mah0x211/lenv/releases/210147794","Warn: release artifact v0.7.0 does not have provenance: https://api.github.com/repos/mah0x211/lenv/releases/149890699"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yml:9"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 27 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-21T02:55:40.110Z","repository_id":31762415,"created_at":"2025-08-21T02:55:40.110Z","updated_at":"2025-08-21T02:55:40.110Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30366051,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T21:41:54.280Z","status":"ssl_error","status_checked_at":"2026-03-10T21:40:59.357Z","response_time":106,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-08-03T16:00:43.239Z","updated_at":"2026-03-11T01:32:17.544Z","avatar_url":"https://github.com/mah0x211.png","language":"Go","funding_links":[],"categories":["Go","Version Managers"],"sub_categories":["Lua"],"readme":"lenv\n=========\n\n[![test](https://github.com/mah0x211/lenv/actions/workflows/test.yml/badge.svg)](https://github.com/mah0x211/lenv/actions/workflows/test.yml)\n\nLua Version Manager.\n\n---\n\n## Installation\n\n1. download a binary release from the [releases](https://github.com/mah0x211/lenv/releases) page.\n2. extract and place the `lenv` command in your PATH (e.g. `/usr/local/bin/lenv`).\n3. run a `lenv setup` command to set up the required files and directories.\n    - For default (`$HOME/.lenv`) setup: `lenv setup`\n    - For global (`/usr/local/lenv`) setup: `lenv -g setup`\n    - For project-local (`current directory`) setup: `lenv -p setup`\n\n### Shell configuration\n\n1. run `lenv path \u003e ~/.lenvrc` command to create the `lenvrc` file.\n    - if you set up the required files and directories in the `/usr/local/lenv` directory, you should run a `lenv -g path \u003e ~/.lenvrc` command.\n2. add the following to your `.bashrc` or `.bash_profile` file.\n    ```sh\n    source ~/.lenvrc\n    ```\n\n\n## Commands\n\nplease run a `help` command to show the help message.\n\n```\n$ lenv help\n\nlenv - lua version manager\n\nUsage:\n  lenv \u003coption\u003e \u003ccommand\u003e [\u003cargs\u003e...]\n\nOptions:\n  -g, --global                   Use /usr/local/lenv as installation directory\n  -p, --project                  Use current directory as installation directory\n\n  Note:\n    The lenv command searches for a .lenv directory in the current directory,\n    then recursively in each parent directory up to the root. If found, that\n    becomes the install directory.\n    If it finds no .lenv directory, it uses /usr/local/lenv if it exists;\n    otherwise, it uses $HOME/.lenv (e.g., /home/foo/.lenv). The default\n    directory is used even if it doesn't exist yet.\n\n    For example, with this directory structure:\n\n      /\n      ├── home\n      │   └── foo\n      │       ├── .lenv\n      │       └── bar\n      │           └── baz\n      │               └── .lenv\n      └── qux\n\n    If you run lenv:\n    - in baz, it uses baz/.lenv.\n    - in bar, it uses foo/.lenv.\n    - in qux, it finds no .lenv directory, so it uses /usr/local/lenv if it\n      exists; otherwise, $HOME/.lenv (i.e., /home/foo/.lenv).\n\nCommands:\n  help                           Show this message\n  setup                          Set up required files and directories\n  path \u003ctarget\u003e                  Show the configured paths\n\n  Note:\n    The \u003ctarget\u003e specifier of the above commands can be specified as follows;\n\n    lenv path bin     ; show the PATH of the current lua environment\n    lenv path lualib  ; show the LUA_PATH of the current lua environment\n    lenv path luaclib ; show the LUA_CPATH of the current lua environment\n\n    if \u003ctarget\u003e is not specified, all the above paths of the current lua\n    environment will be shown.\n\n  current \u003ctarget\u003e               Show the current used version of lua/luarocks\n\n  Note:\n    The \u003ctarget\u003e specifier of the above commands can be specified as follows;\n\n    lenv current          ; show the current used version of lua and luarocks\n    lenv current lua      ; show the current used version of lua\n    lenv current luarocks ; show the current used version of luarocks\n\n  fetch                          Fetch remote versions\n  vers                           List available versions\n  ls                             List installed versions\n  install \u003cversion\u003e \u003copt...\u003e     Install and use a \u003cversion\u003e of lua\n  use \u003cversion\u003e                  Use a \u003cversion\u003e of lua\n  uninstall \u003cversion\u003e            Uninstall a \u003cversion\u003e of lua\n\n  Note:\n    The \u003cversion\u003e specifier of the above commands can be specified as follows;\n\n    lenv install latest  ; that picks the latest version\n    lenv install 5       ; that picks the latest minor version and patch version\n    lenv install 5.4     ; that picks the latest patch version\n    lenv install lj-v2.1 ; that picks the version of luajit\n\n    lenv install latest:latest ; that picks the the latest version of lua and\n                               ; luarocks in current lua environment\n    lenv install :latest       ; that picks the the latest version of luarocks\n                                 in current lua environment\n\n    If the version of luarocks is specified along with the version of lua, the\n    operation will target the specified version of the lua environment.\n    Otherwise, the operation will target the current lua environment.\n\n    In the case of the 'uninstall' command, the version specifier must match the\n    target version exactly. Also, if the version of luarocks is specified along\n    with the version of lua, the version specifier of luarocks is ignored.\n\n```\n\n**NOTE: you must run a `fetch` command at the first. that command will crawling the version files of `Lua`, `LuaJIT` and `LuaRocks` immediately.**\n\n```sh\n$ lenv fetch\n...snip...\n$ lenv vers\n...snip...\n```\n\n**Package URLs**\n\nthe following URLs are used to download the version files and source files.\n\n- Lua: https://lua.org/ftp/\n- LuaJIT: https://github.com/LuaJIT/LuaJIT.git\n- LuaRocks: https://luarocks.github.io/luarocks/releases/\n\n\n## Usage\n\nthe following example are installing the Lua 5.1.5.\n\n```sh\n$ lenv install 5.1.5 macosx\n...snip...\n$ lua -v\nLua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio\n```\n\nthe following example are installing the LuaJIT v2.1.\n\n```sh\n$ lenv install lj-v2.1\n...snip...\n$ lua -v\nLuaJIT 2.1.1710088188 -- Copyright (C) 2005-2023 Mike Pall. https://luajit.org/\n```\n\nthe following example are installing the LuaRocks 3.5.0 for Lua 5.1.5.\n\n```sh\n$ lenv use 5.1.5\nuse lua version 5.1.5 (\"lua/5.1.5\")\n$ lenv install-rocks 3.5.0\n...snip...\n$ luarocks --version\n/Users/mah/.lenv/current/lua_modules/bin/luarocks 3.5.0\nLuaRocks main command-line interface\n```\n\nthe following example are installing the lua and luarocks at same time.\n\n```sh\n$ lenv install 5.1.:latest\n...snip...\n$ lua -v\nLua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio\n$ luarocks --version\n/Users/mah/.lenv/current/lua_modules/bin/luarocks 3.9.2\nLuaRocks main command-line interface\n```\n\n\n### Installation Locations\n\nlenv manages the following directories.\n\n```\n~/.lenv\n├── current                 -\u003e symlink to the `lua/\u003cver\u003e or `luajit/\u003cver\u003e` directory\n├── lua/\u003cver\u003e               -\u003e lua installation directory\n│   ├── lua_modules         -\u003e symlink to `luarocks/\u003cver\u003e/lua_modules`\n│   └── luarocks/\u003cver\u003e      -\u003e luarocks installation directory for lua/\u003cver\u003e\n│       └── lua_modules\n│           ├── bin         -\u003e symlink to `luarocks/\u003cver\u003e/bin`\n│           ├── lualib/     -\u003e symlink to LUA_PATH/LUA_CPATH directories under \n│           └── luaclib/       the luarocks/\u003cver\u003e directory\n│\n├── luajit/\u003cver\u003e            -\u003e luajit installation directory\n│   │\n│   :: same layout as the lua/\u003cver\u003e directory ::\n│\n└── src\n    └── \u003ccache\u003e.tar.gz\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmah0x211%2Flenv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmah0x211%2Flenv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmah0x211%2Flenv/lists"}