{"id":26229883,"url":"https://github.com/lgdd/lfr-cli","last_synced_at":"2025-04-19T18:54:05.461Z","repository":{"id":64302906,"uuid":"358476628","full_name":"lgdd/lfr-cli","owner":"lgdd","description":"LFR is an unofficial CLI tool written in Go that helps you create \u0026 manage Liferay projects.","archived":false,"fork":false,"pushed_at":"2025-04-13T02:31:47.000Z","size":628021,"stargazers_count":11,"open_issues_count":5,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-13T03:32:20.548Z","etag":null,"topics":["cli","command-line","go","golang","liferay"],"latest_commit_sha":null,"homepage":"https://lgdd.github.io/lfr-cli","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/lgdd.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,"zenodo":null}},"created_at":"2021-04-16T04:37:22.000Z","updated_at":"2025-04-13T02:31:50.000Z","dependencies_parsed_at":"2023-01-15T09:45:42.008Z","dependency_job_id":"e574c050-1768-446e-8ab6-b732b3cdd55e","html_url":"https://github.com/lgdd/lfr-cli","commit_stats":null,"previous_names":["lgdd/liferay-cli"],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lgdd%2Flfr-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lgdd%2Flfr-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lgdd%2Flfr-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lgdd%2Flfr-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lgdd","download_url":"https://codeload.github.com/lgdd/lfr-cli/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249770118,"owners_count":21323067,"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":["cli","command-line","go","golang","liferay"],"created_at":"2025-03-12T22:18:12.037Z","updated_at":"2025-04-19T18:54:05.429Z","avatar_url":"https://github.com/lgdd.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![new](https://img.shields.io/badge/NEW-Supports%20Client%20Extension-blueviolet)](https://learn.liferay.com/web/guest/w/dxp/building-applications/client-extensions#types-of-client-extensions)\n\n[![version](https://img.shields.io/github/v/tag/lgdd/lfr-cli)](https://github.com/lgdd/lfr-cli/releases)\n[![status](https://img.shields.io/github/actions/workflow/status/lgdd/lfr-cli/test.yml)](https://github.com/lgdd/lfr-cli/actions/workflows/test.yml)\n[![report](https://goreportcard.com/badge/github.com/lgdd/lfr-cli)](https://goreportcard.com/report/github.com/lgdd/lfr-cli)\n[![license](https://img.shields.io/github/license/lgdd/lfr-cli)](https://github.com/lgdd/lfr-cli/blob/main/LICENSE)\n![GitHub last commit](https://img.shields.io/github/last-commit/lgdd/lfr-cli?color=teal\u0026label=latest%20commit)\n\n# LFR\n\n`lfr` is an unofficial CLI tool written in Go that helps you create \u0026 manage Liferay projects.\n\n![preview](https://github.com/lgdd/doc-assets/blob/main/liferay-cli/liferay-cli-preview.gif?raw=true)\n\n## Motivation\n\nI needed a subject to play with Go. Writing a CLI tool is fun - especially with [Cobra](https://github.com/spf13/cobra) - and I wanted to explore how to distribute it using GitHub Actions (and [GoReleaser](https://github.com/goreleaser/goreleaser)).\n\nAlso, I get sometimes frustrated by [Blade](https://github.com/liferay/liferay-blade-cli) and wanted to focus on providing:\n\n- Better performances (cf. [benchmarks](benchmarks))\n- Better support for Maven\n- Shorter commands\n- More consistent commands names and ordering\n- Details after any command execution\n- Shell completion\n\nI'm not the only one motivated to help Liferay developpers with new dev tools. If you're looking for something to help you with Client Extensions development, definitely checkout this tool: https://github.com/bnheise/ce-cli\n\n## Installation\n\nFor macOS or Linux, you can install it using [Homebrew](https://brew.sh):\n\n```shell\nbrew tap lgdd/homebrew-tap\nbrew install lfr-cli\n```\n\u003e if you already installed it using `brew install liferay-cli`, make sure to run `brew update` to be able to update to the latest version matching the new name. \n\nFor Windows, go to the [release page](https://github.com/lgdd/lfr-cli/releases) and download the zip file corresponding to your architecture. Then extract `lfr.exe` from the archive and move to the folder of your choice. **Make sure that the chosen folder is included in the `%PATH%` environment variable.**\n\n## Usage\n\nCheckout the [documentation](https://lgdd.github.io/lfr-cli/) (work in progress).\n\n## Benchmarks\n\nUsing [Hyperfine](https://github.com/sharkdp/hyperfine) with 5 warmup runs and the following setup:\n- `blade version 6.0.0.202404102137`\n- `lfr version v3.0.0`\n\n### Create Workspace (Gradle)\n\n| Command                               |      Mean [s] | Min [s] | Max [s] |     Relative |\n| :------------------------------------ | ------------: | ------: | ------: | -----------: |\n| `lfr c ws liferayws`                  | 179.5 ± 17.2  | 165.9   | 237.1   | 1.00         |\n| `blade init -v 7.4 liferayws`         | 719.6 ± 7.2   | 709.5   | 728.9   | 4.01 ± 0.39  |\n\u003e Summary: `lfr c ws liferayws` ran 4.01 ± 0.39 times faster than `blade init -v 7.4 liferayws`\n\n### Create MVC Portlet\n\n| Command                                      |      Mean [s] | Min [s] | Max [s] |       Relative |\n| :------------------------------------------- | ------------: | ------: | ------: | -------------: |\n| `lfr c mvc my-mvc-portlet`                   | 23.0 ± 4.4    | 20.5    | 47.0    | 1.00           |\n| `blade create -t mvc-portlet my-mvc-portlet` | 710.3 ± 6.1   | 703.6   | 720.5   | 30.82 ± 5.94   |\n\u003e Summary: `lfr c mvc my-mvc-portlet` ran 30.82 ± 5.94 times faster than `blade create -t mvc-portlet my-mvc-portlet`\n\n### Create Service Builder\n\n| Command                                              |      Mean [s] | Min [s] | Max [s] |       Relative |\n| :--------------------------------------------------- | ------------: | ------: | ------: | -------------: |\n| `lfr create sb my-service-builder`                   | 19.8 ± 2.8    | 17.6    | 31.2    | 1.00           |\n| `blade create -t service-builder my-service-builder` | 723.8 ± 11.0  | 708.9   | 738.8   | 36.65 ± 5.17   |\n\u003e Summary: `lfr create sb my-service-builder` ran 36.65 ± 5.17 times faster than `blade create -t service-builder my-service-builder`\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flgdd%2Flfr-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flgdd%2Flfr-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flgdd%2Flfr-cli/lists"}