The Turbot Command Line Interface (CLI) is a unified tool to work with Turbot, develop mods and publish them to the registry.
- Invalid module reference fixed - this was causing
turbot template buildto fail.
template buildwas loading the lock-file from the base branch to determine the current template version. When using a work-in-progress (wip) branch, this could lead to identifying an incorrect current version, leading to rebasing errors. Fix by loading the lock file from the wip branch.
- Fixed CLI packaging error required for proper v1.28.0 installation.
turbot template buildnow cleans up branches after a rebase failure.
turbot template build --rebasecommand now cleans up the work in progress branch if the template render fails.
turbot template build --rebasecommand was failing to re-apply manual changes.
turbot template build --fleet-modewould stop building all branches if a single one failed.
turbot compose(used by all CLI commands that compose mods) now omits the
turbot.head.json. It is still included in
turbot templatehas a new
--unchanged-issue <issue_id>argument. When a template build operation commits changes to git, if no files have actually changed then the commit message will use this issue instead of the normal
--issue <issue_id>field. The commit message will also specify "no changes".
turbot publishhas a new
--timeout <secs>argument to customize the publish timeout. The default has been increased to 2 minutes.
turbot template build --issue 1234 --close-issuewill set the commit message to close the issue.
turbot testshould not fail with the the error
TypeError: tmod.parse is not a function.
turbot template build --patch --push-instance-rootcommand failed to push changes to the wip branch.
turbot publishwere failing to run pre-pack script when
--dirarg is used.
turbot inspectshould give a clear error message for invalid templates.
turbot inspect --format changelogshould properly escape CSV fields with commas.
turbot install- checks if a compatible version of each dependency is already installed. If so, it is does not install from the registry unless there is a newer version available.
turbot template build --rebaserebuilds templates while using rebase to better merge and preserve custom changes to the rendered files since the last build.
- Show a progress bar during long running operations.
- Improved error messages for failed queries like authentication, network connectivity, etc.
- Update credentials precedence to prioritise specific credentials (key, secretKey and workspace) over profile.
turbot configurefails when no command line credentials arguments are given but they set in environment
turbot workspace listshould ignore
TURBOT_PROFILEenv var and only filter profiles if one is given in command line.
turbot downloadshould fall back to use the production registry if the user is not logged in.
- Exceptions from the pre-pack script in
turbot packwere not caught and reported correctly.
- Improved error messages for
turbot publishfor faster troubleshooting.
turbot graphqlqueries for
policy-value, etc were not properly handling the
turbot configurewas failing for some Windows users when used in interactive mode.
turbot configurewas always failing validation when using interactive mode to enter credentials.
turbot install [mod]was not working. You can now install specific mods as expected.
turbot install [mod[@version]]to install a specific mod as a local dependency.
- Credentials passed to
turbot workspace configureare now validated before saving, so you can be confident they are good to go.
turbot workspace listto see a list of your currently configured workspaces.
turbot workspace configureadded, with the same behavior as
turbot testwas failing for some GCP controls due to an update in the GCP auth library package. This has been fixed.
turbot installwas attempting to install the latest version, which would fail if that version was not available or recommended. It will now install the latest recommended version, or if none are recommended, the latest available version.
- The build of v1.17.1 was not properly published, leading to confusion and mixed installs. This release is identical, but properly distributed.
- Remove the explicit default value for
force-recommendedas this causes issues when using the yargs
- Mod authors often want to set their new version as
RECOMMENDEDin the registry, telling users it's the best choice. Use
turbot publish --force-recommendedand
turbot modify --force-recommendedto mark this version as
RECOMMENDEDand set all currently recommended versions to
turbot testwas showing incorrect test data validation errors, due to a graphql schema change that had not been handled by the CLI.
turbot inspectnow enforces valid semantic versions in mod version numbers. We admire your creativity, but encourage you to express it elsewhere.
turbot up --zip, which broke during a dependency update.
turbot loginwas failing if the
~/.configfolder did not exist.
turbot template buildwas always expecting a
wip-*instance branch to exist. It's now correctly limited to runs where
- Proxy support via the
HTTPS_PROXYenvironment variable. Login, install mods and publish to our registry all via your favorite proxy. (Provided it's a
http://proxy, we don't support
- Manage published mods in the registry from the CLI, including their status
and description. For example
turbot registry modify --mod "@turbot/aws" --mod-version "5.0.0" --status RECOMMENDED --description "updated description".
- Usually a newly published version should be the recommended one. So now you
can do that automatically during
turbot publishusing the
turbot template buildnow supports instance root branch names with a random suffix, following the naming convention:
wip/<instance root name>/*. We've found scheme much more effective at scale.
- We now automatically include
RELEASE_NOTES.mdas well as
CHANGELOG.mdwhen building a mod. Release notes are intended for users while a changelog is intended for developers or others obsessed over details.
turbot testvalidates input query, but only works for a single query (not for the more advanced array of queries syntax). Previously the test would always fail for an array of queries, so we're now skipping the test in these cases until it can be fully supported.
turbot publish --dir <mod folder>did not work if run outside the mod folder - the function zips were not correctly created.
- Registry login using
turbot login(and similar) now requires both
--passwordor neither. They just can't live without each other.
turbot template build --patchcommand was failing without running the git command.
+schemadirective can now map from openApi format schema to valid JSON schema.
turbot template buildfleet operations were failing due to an error displaying the summary. This has been fixed.
turbot testto check GraphQL mutations (e.g.
updatePolicySetting) are called as expected from controls.
turbot composeno longer errors when a glob matches no source files.
turbot publish --waitwill wait for the mod to be
Availablein the registry.
- A new directive,
+schemahas been added for
turbot compose. This allows you to include a specific item from a schema file, including all definitions which are referenced.
turbot template buildwill now run even if there are changes on the local branch, if neither the
--use-instance-root-brancharguments are set. This is useful when running building templates for the first time with local config updated but not committed.
turbot inspect --format changelognow includes the uri of each control, policy, resource and action item.
turbot upwas broken in 1.7.0. This has been fixed.
turbot publishhad to be run out of the target mod directory. They can now be run out of any directory by passing the
turbot aws credentialsnow supports
--access-key <turbot_access_key> --secret-key <turbot_secret_key>combinations.
turbot testwas doing type coercion of input data before validation. It now expects correct types to be passed, matching the behavior of the Turbot server.
--no-colorto simplify the output of any command. Sometimes less is more.
turbot template build --git --branch <branch-name>allows you to specify the branch the build operations will be committed onto.
turbot template buildno longer supports the
turbot installwas not downloading files. Now it does.
turbot template buildwas creating
template.ymlfiles for every template instance. This is noisy and defeats the value of template inheritence, so has been stopped.
turbot template build --gitshould checkout the original git branch at the end of the build. Broken in v1.5.0.
turbot template build --gitnow skips instances without a template-lock file, which cannot be resolved anyway.
turbot publishwere stalling for large mods.
turbot template build --gitshould checkout the original git branch at the end of the build. Broken in v1.4.0.
- Clearer reporting of errors when running
turbot template build.
turbot template build --fleet-modenow defaults to
update, which is almost always the right choice.
- When running
turbot template build --gitit is no longer necessary to specify a base git branch, it sensibly assumes you want to use the current branch.
turbot pack --zip-file awesome.zipto output mods with any name you prefer.
turbot template outdatedfixed to work with specific template definition directories.
- Only save successful template operations to the branch when using
turbot template build --git. Previously we were polluting that goodness with failures as well.
template-lock.ymlto data that is absolutely necessary, removing noise from change logs.
turbot template update. Please use
turbot template buildinstead, as you probably already were.
turbot inspect --output-formatwill now accept either a file path to the template or the template string directly.
- Clearer output of the actions taken when running
turbot template build.
- Automatic code merging when doing updates with
turbot template buildwill now merge successful changes onto a single branch and write failed patches to the filesystem for easier review.
turbot template buildhas a special case "provider" field in the render context. Long term it will be removed. Short term, it should not break for vendor level mods like @turbot/aws or @turbot/linux.
- View and confirm
turbot template buildactions before they happen. (Add
--yesto keep the previous behavior.)
- Easily review success and failure after running
turbot template buildacross many instances.
turbot downloadwill now give up gracefully on failed downloads, relieving it of an eternity of failed retries.
turbot template buildcrash added by v1.1.0.
turbot aws credentials --account 123456789012 --profile my-accountto generate and save temporary AWS credentials into your local AWS profile. Easily work across many AWS accounts using your single Turbot profile.
turbot template buildto target all instances of a specific template, which is great when you are in the process of converting code to use the template (some code in template management, some still custom).
turbot testwas broken in v1.0.4 due to a missing dependency. Life is better with friends.
turbot templateshould allow rendering of the filename as well as folder names, e.g.
test.optionsare useful, but not required, so
turbot testshould not crash if they are not set for a test.
- Registry name validation should work for valid registries like turbot.com.
turbot testhas a
test.awsProfilefield to set the AWS profile to use when running tests locally. This has been moved into the generic, customizable
test.options.awsProilelocation since it's relevant to AWS mods specifically rather than a core feature of Turbot.
- The default registry is now turbot.com. Other development registries have been cleaned up to reduce noise.
- Cleaned up available commands and their descriptions.
- Easily manage Turbot credentials and profiles.
- Run graphql commands in scripts.
- Install and inspect mods.
- Build, compose & test Turbot mods.
- Upload mods to Turbot for internal testing or use.
- Publish mods to the Turbot registry for public sharing.
- Use templates to accelerate the development of mods.