liferay-cli

module
v1.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 4, 2024 License: MIT

README

new

version status report license GitHub last commit

Liferay CLI

lfr is an unofficial CLI tool written in Go that helps you create & manage Liferay projects.

preview

Table of contents:

Motivation

I needed a subject to play with Go. Writing a CLI tool is fun - especially with Cobra - and I wanted to explore how to distribute it using GitHub Actions (and GoReleaser).

Also, I get sometimes frustrated by Blade and wanted to focus on providing:

  • Better performances (cf. benchmarks)
  • Better support for Maven
  • Shorter commands
  • More consistent commands names and ordering
  • Details after any command execution
  • Shell completion

I'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

Installation

For macOS or Linux, you can install it using Homebrew:

brew tap lgdd/homebrew-tap
brew install liferay-cli

For Windows, go to the release page 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.

Completions

Usage:

lfr completion [bash|zsh|fish|powershell]

To load completions for Bash, Zsh, fish and PowerShell:

Bash:
source <(lfr completion bash)
# To load completions for each session, execute once:
# Linux:
lfr completion bash > /etc/bash_completion.d/lfr
# macOS:
lfr completion bash > /usr/local/etc/bash_completion.d/lfr
Zsh:
# If shell completion is not already enabled in your environment,
# you will need to enable it.  You can execute the following once:

echo "autoload -U compinit; compinit" >> ~/.zshrc

# To load completions for each session, execute once:
lfr completion zsh > "${fpath[1]}/_lfr"

# You will need to start a new shell for this setup to take effect.
fish:
lfr completion fish | source

# To load completions for each session, execute once:
lfr completion fish > ~/.config/fish/completions/lfr.fish
PowerShell:
PS> lfr completion powershell | Out-String | Invoke-Expression

# To load completions for every new session, run:
PS> lfr completion powershell > lfr.ps1
# and source this file from your PowerShell profile.

Usage

diagnose

Run a diagnosis to verify your environment for Liferay development:

lfr diag
Aliases:
  diagnose, diag

The output of this command will list your installations of Java, Blade and Docker. It will also display how much space are being used by cached bundles and docker images.

Example: diag-example

create
workspace
lfr create workspace liferay-workspace
Aliases:
  workspace, ws

Flags:
  -b, --build string     build tool (gradle or maven) (default "gradle")
  -h, --help             help for workspace
  -i, --init             executes Liferay bundle initialization (i.e. download & unzip in the workspace)
  -v, --version string   Liferay major version (7.x) (default "7.4")
client-extension

Client extensions extend Liferay (7.4 U45+/GA45+) without using OSGi modules.

  lfr create client-extension
Aliases:
  client-extension, cx

Flags:
  -h, --help   help for client-extension

Since client extensions are available as samples in liferay-portal repo, it will checkout the subdirectory containing them under $HOME/.lfr/liferay-portal.

api

Creates a minimal OSGi module, with an Export-Package directive:

lfr create api my-api
Flags:
  -h, --help   help for api

Global Flags:
      --no-color         disable colors for output messages
  -p, --package string   base package name (default "org.acme")
service-builder
lfr create service-builder my-service-builder
Aliases:
  service-builder, sb

Flags:
  -h, --help   help for service-builder

Global Flags:
      --no-color         disable colors for output messages
  -p, --package string   base package name (default "org.acme")
rest-builder
lfr create rest-builder my-rest-service
Aliases:
  rest-builder, rb

Flags:
  -g, --generate   executes code generation
  -h, --help       help for rest-builder

Global Flags:
      --no-color         disable colors for output messages
  -p, --package string   base package name (default "org.acme")
mvc-portlet
lfr create mvc-portlet my-portlet
Aliases:
  mvc-portlet, mvc

Flags:
  -h, --help   help for mvc-portlet

Global Flags:
      --no-color         disable colors for output messages
  -p, --package string   base package name (default "org.acme")
spring-mvc-portlet
lfr create spring-mvc-portlet my-spring-mvc
Aliases:
  spring-mvc-portlet, spring

Flags:
  -h, --help              help for spring-mvc-portlet
  -t, --template string   template engine (thymeleaf or jsp) (default "thymeleaf")

Global Flags:
      --no-color         disable colors for output messages
  -p, --package string   base package name (default "org.acme")
docker

Creates Dockerfile (multi-stag or not) and docker-compose samples:

lfr create docker
Flags:
  -h, --help          help for docker
  -j, --java int      Java version (8 or 11) (default 11)
  -m, --multi-stage   use multi-stage build

Global Flags:
      --no-color         disable colors for output messages
  -p, --package string   base package name (default "org.acme")
exec

Execute Gradle or Maven task(s):

# Gradle
lfr exec build

# Maven
lfr exec clean install
Aliases:
  exec, x

Flags:
  -h, --help   help for exec

Global Flags:
      --no-color   disable colors for output messages
build

Shortcut to build your Liferay bundle:

lfr build
Aliases:
  build, b

Flags:
  -h, --help   help for build

Global Flags:
      --no-color   disable colors for output messages
deploy

Shortcut to deploy your modules using Gradle or Maven:

lfr deploy
Aliases:
  deploy, d

Flags:
  -h, --help   help for deploy

Global Flags:
      --no-color   disable colors for output messages
init

Shortcut to initialize your Liferay bundle:

lfr init
Aliases:
  init, i

Flags:
  -h, --help   help for init

Global Flags:
      --no-color   disable colors for output messages
start

Start the Liferay Tomcat bundle initialized in your workspace:

lfr start

It creates a file named .liferay-pid which is used by lfr status display if Tomcat is running or not (or it can be used to kill it if necessary).

Flags:
  -h, --help   help for start

Global Flags:
      --no-color   disable colors for output messages
stop

Stop the Liferay Tomcat bundle initialized in your workspace:

lfr stop

Flags: -h, --help help for stop

Global Flags: --no-color disable colors for output messages


#### status

Display the status (running or stopped) of Liferay Tomcat from your workspace:

```shell
lfr status
Flags:
  -h, --help   help for start

Global Flags:
      --no-color   disable colors for output messages
logs

Display and follow the logs from the running Liferay bundle:

lfr logs -f
Aliases:
  logs, l

Flags:
  -f, --follow   --follow
  -h, --help     help for logs

Global Flags:
      --no-color   disable colors for output messages
shell

Connect and get Liferay Gogo Shell:

lfr sh
Aliases:
  shell, sh

Flags:
  -h, --help          help for shell
      --host string   --host localhost (default "localhost")
  -p, --port int      --port 11311 (default 11311)

Global Flags:
      --no-color   disable colors for output message

The keyword exit can be safely used with this shell as it will disconnect instead of stopping the OSGi container. Ctrl+C also disconnect from the shell.

Known issue: The "shell" command is very slow to connect

Benchmarks

Using Hyperfine.

Create Workspace
Command Mean [s] Min [s] Max [s] Relative
blade init -v 7.4 liferay-workspace 1.837 ± 0.300 1.665 2.668 19.94 ± 5.69
lfr create ws liferay-workspace 0.092 ± 0.022 0.076 0.178 1.00
Create MVC Portlet
Command Mean [s] Min [s] Max [s] Relative
blade create -t mvc-portlet my-mvc-portlet 1.608 ± 0.021 1.570 1.647 59.70 ± 112.37
lfr create mvc my-mvc-portlet 0.027 ± 0.051 0.015 0.345 1.00
Create Service Builder
Command Mean [s] Min [s] Max [s] Relative
blade create -t service-builder my-service-builder 1.628 ± 0.057 1.573 1.772 82.00 ± 134.01
lfr create sb my-service-builder 0.020 ± 0.032 0.014 0.332 1.00

License

MIT

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL