Releases: criteo/command-launcher
1.8.0
-
✨Support multiple remote registry. From version 1.8.0, you are able to define multiple remote registries. Command launcher synchronizes the commands with all these remote registries at the end of each command execution. This is useful for several scenarios: for example, supporting internal or experimental commands, different teams target their commands to different group of audience.
-
✨Built-in command
remote
command to mange multiple remote registries.remote list
: list all remote registriesremote delete
: delete specific remote registryremote add
: add a new remote registry
-
✨Built-in package management related commands are regrouped into
package
command:package list
: list installed local and dropin packages and remote packages. It also provides the possibility to show the installed commandspackage install
: install dropin packages from git repository or remote/local zip filepackage delete
: delete installed dropin packages
-
✨New command name conflict resolution system: Each command now has a unique full name in form of [regitry]@[package]@[group]@[name]. When two commands register to the same group and name. One of them will be registered with its full group name.
For example, two command
hello@greeting@pkg1@repo1
andhello@greeting@pkg2@repo2
. These two commands have the same group name and command name (greeting hello). The first one will be registered ascola greeting hello
, the second one will be registered as commandcola greeting@@pkg2@repo2 hello
. Note:greeting@@pkg2@repo2
is the full name of the group commandgreeting
defined in pkg2 and repo2. -
✨New built-in
rename
command. Now it is possible to rename both group and sub command to a different name. -
✨New resource
PACKAGE_DIR
. Each command now can access its package's absolute path through thePACKAGE_DIR
resource. This resource doesn't require user consent. -
🔥Metrics system hook interface change. Now the metrics system hook accepts two new parameters: repo/registry name, package name. The full list of parameters:
- repository/registry name (see remote command)
- package name
- command group name, or “default” if no group
- command name
- user partition
- command exit code
- command execution duration in nano seconds
- error message or “nil” if no error
- command start timestamp in seconds
1.7.0
- ✨New mechanism to access resources with user consent, resources required user consent:
- username
- password
- auth_token
- log_level
- ✨New system package with system command. Now supports two types of system command:
- login: extends the built-in login command
- metrics: extends the built-in metrics
- ✨New package management with new built-in commands:
- list: list installed local and dropin packages and remote packages. It also provides the possibility to show the installed commands
- install: install dropin packages from git repository or remote/local zip file
- delete: delete installed dropin packages
- ✨New URL convention for command launcher self update. You can now use the Github release file as the latest version
- ✨New configurations:
- enable_user_consent
- user_consent_life
- system_package
- system_package_public_key
- system_package_public_key_file
- verify_package_checksum
- verify_package_signature
- 🔒️Enable package checksum verification
- ♻️Refactor local repository management and remote management
- 🔨Default local build version now takes the current branch name: [branch name]-dev. See build.sh
1.6.0
- Add the
PackageDir
context variable to reference the package's directory, same as theCache
andRoot
context variables.Cache
andRoot
variables are deprecated. - Extend the format of the flag definition. Now it is possible to add bool type flags:
[name] \t [shorthand] \t [description] \t [type] \t [default]
. Currently, two types are supported:string
andbool
. bothtype
anddefault value
are optional, by default, the type is "string", and the default value is the empty string. - New command definition field in manifest,
checkFlags
. The default value is false, when it is true, before executing the command, the arguments will be parsed, and the parsed flags and args will be passed to the command in the form of an environment variable:[APP_NAME]_FLAG_[FLAG_LONG_NAME]
and[APP_NAME]_ARG_[ARG_INDEX_STARTS_FROM_1]
. - New command definition field in manifest:
argsUsage
to customize the one-line help message. This field will take effect whencheckFlags=true
- New command definition field in manifest:
examples
to customize the examples in help message. This field will take effect whencheckFlags=true
1.5.2
- bump cobra version to 1.5
- use custom completion command to fix bash completion freeze issue on windows bash
- fix config command long description format
- add build.sh script and update README
- fix bug in package version comparison and sorting algorithm
1.5.1
- 🐛 fix a bug that command launcher can't find the local configuration file
- 🐛 load lock file during initialization when ci is enabled
1.5.0
- ✨ New command environment variable [APP NAME]_LOG_LEVEL. Command can read this environment variable to get the command launcher global log level
- ✨ Package manifest.mf file now supports YAML format. JSON format is still supported.
1.4.0
- All backslash in the interpolated path in manifest.mf are replaced by slash
- Two internal configs (internal_command_enabled and experimental_command_enabled) are exposed as public config. They are accessible directly from the built-in config command
- The configuration file search order is changed: first search for env variable
[APP_NAME]_CONFIG_FILE
, then search for[APP_NAME].json
file in working dir, and continue search in parent folder until root folder, finally use the default one in$HOME/.[APP_NAME]/config.json
- Remote repository index now accepts a url of the package. It enables the package provider to distribute packages in different servers.
- Properly handle the command exit code
1.3.0
✨ Use slashes only in path interpolation Allows to reference the dropin cache folder path using slashes only regardless the OS, which is convenient for running bash commands on windows
1.2.0
- support autocomplete directives for validArgsCmd output
- interpolate the variables in validArgsCmd's arguments
- fix remote config override issue, now the existing local config is merged instead of overridden by remote config
1.1.0
- remote config load is based on time now. By defaut, once per 24 hours
- introduce remote_config_check_cycle to config the remote config check period
- introduce remote_config_check_time to indicate next remote check time
- rename config enable_ci to ci_enabled
- patch two new variables from upstream repo:
- variable #SCRIPT# is mapped to the command name with extension .bat in windows, .sh in linux
- variable #SCRIPT_EXT# is mapped to .bat in windows, .sh in linux