Skip to content

Releases: criteo/command-launcher

1.8.0

02 Jan 09:33
Compare
Choose a tag to compare
  • ✨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 registries
    • remote delete: delete specific remote registry
    • remote 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 commands
    • package install: install dropin packages from git repository or remote/local zip file
    • package 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 and hello@greeting@pkg2@repo2. These two commands have the same group name and command name (greeting hello). The first one will be registered as cola greeting hello, the second one will be registered as command cola greeting@@pkg2@repo2 hello. Note: greeting@@pkg2@repo2 is the full name of the group command greeting 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 the PACKAGE_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:

    1. repository/registry name (see remote command)
    2. package name
    3. command group name, or “default” if no group
    4. command name
    5. user partition
    6. command exit code
    7. command execution duration in nano seconds
    8. error message or “nil” if no error
    9. command start timestamp in seconds

1.7.0

13 Nov 19:17
Compare
Choose a tag to compare
  • ✨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

19 Sep 19:21
580860f
Compare
Choose a tag to compare
  • Add the PackageDir context variable to reference the package's directory, same as the Cache and Root context variables. Cache and Root 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 and bool. both type and default 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 when checkFlags=true
  • New command definition field in manifest: examples to customize the examples in help message. This field will take effect when checkFlags=true

1.5.2

05 Sep 17:19
0847482
Compare
Choose a tag to compare
  • 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

23 Aug 14:02
15bca46
Compare
Choose a tag to compare
  • 🐛 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

19 Aug 15:34
427b022
Compare
Choose a tag to compare
  • ✨ 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

10 Aug 12:56
Compare
Choose a tag to compare
  • 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

23 Jun 12:27
Compare
Choose a tag to compare
✨ 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

13 Jun 09:28
02222d0
Compare
Choose a tag to compare
  • 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

17 May 16:38
dcb52cf
Compare
Choose a tag to compare
  • 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