Codify

Change log

Codify CLI and plugin changelog

1.0.0 Linux support and multi-resource declarations

  • Added comprehensive Linux support across all resources
    • New package manager resources: apt, yum, dnf, and snap
    • Fixed compatibility issues for asdf, homebrew, aws-cli, vscode, git, python, and other resources
    • Improved shell compatibility across different Linux distributions
  • Multi-resource declaration support to reduce config verbosity
    • aliases resource now supports declaring multiple aliases in a single config
    • path resource supports multiple path entries in one declaration
    • git-repository resource supports cloning multiple repositories in a single config
  • New resources
    • npm-login resource for npm authentication
    • tart resource for VM/container management on macOS
  • Technical improvements
    • Migrated to Zod schema validation for better type safety
    • Updated to @codifycli scoped packages
    • Improved test infrastructure with persistent VMs for faster test execution

0.15.0 Added docker

  • Added docker resource to install docker

0.14.1 Added npm and macports support

  • Added npm resource for managing npm global packages
  • Added macports resource to install macports and install ports

0.14.0 Additional python support

  • Added additional support for various python tools
    • venv-project resource supports creating a virtual environment using python -m venv
    • pip resources allows the programmatic installations of PyPI dependencies via pip
    • pip-sync resource installs pip-tools and supports managing Python project dependencies using pip-sync
  • Fixed bugs in existing resources
    • xcode-tools did not automatically install the latest xcode-tools
    • homebrew casks and formulae sometimes broke with fully qualified names
    • homebrew uninstalled formulae and casks after installing them
    • alias did not parse properly if the aliased value had an equal sign
    • The cwd was not printed for certain commands.

0.13.0 New tools and verbosity changes

  • Added new resources to support virtualenv, virtualenv-project, pnpm, and wait-github-ssh-key.
    • virtualenv and virtualenv-project adds support for Python virtual environments. See here for more info.
    • pnpm adds support for installing and configuring pnpm. See here for more info.
    • wait-github-ssh-key is a new resource that makes creating new Github SSH keys easier. This resource will display a holding banner until a user has added their SSH key to Github. See here for more info.
  • Added verbosity level support. At the default verbosity, commands will only print the command that was run but not the output. This cleans up the terminal output and prevents sensitive data from being printed.
  • Various changes to support the new codify init command.

BREAKING CHANGES:

  • The git-clone resource was re-named to git-repository.

0.12.0 Import improvements

  • Improved results returned by importing. Parameters are transformed back to a more human-readable format and default values are removed.
  • Improved path, homebrew, jenv import results

0.11.0 Parallelization and massive performance gains on plans

  • Reworked internal architecture and switched to using a pty terminal.
  • Switched to a lightweight model of running commands and piping results back to avoid interactive shell start-up costs and process overheads.
  • Parallelized all plan commands
  • Bug fixes:
    • Asdf plan was not returning the right results
    • Brew casks parsing incorrect

0.10.0 Scripting capabilities

  • Added the action and file resources
  • action can perform any scripting action if the parameter condition is met
  • file can create and maintain files

0.9.0 Big stability improvements

  • Added double the amount of test coverage for all resources and fixed a lot of bugs along the way
  • Fixed ANSI escape character problems for certain terminals
  • List of fixes:
    • git-lfs Added missing git lfs install
    • path Fixed paths not parsing and saving correctly
    • alias Fixed alias not parsing and saving correctly
    • git-clone Fixed parent directory not working
    • aws-profile Fixed region and output parameters
    • homebrew Improved casks parameter to ignore any existing programs. This fixes an app already exists error thrown by brew. This behavior can be disabled using skipAlreadyInstalledCasks: false
    • ssh-config Improvements to internal structure
    • terraform Fixed error caused by ANSI escape characters

0.8.0 Added ssh resources

  • Adds resources for ssh key generation, ssh config setup and the ssh-add command.
  • Resource ssh-key:
    • Generates a new ssh key if it doesn't exist
    • This resource support customizing the encryption type, comments, the file name, and customizing the number of encryption bits
  • Resource ssh-config:
    • Sets up and maintains a user's ~/.ssh/config file. Almost all config options are supported.
  • Resource ssh-add:
    • Manages a user's ssh agent via the ssh-add command.
    • It has support for the macOS specific --apple-use-keychain
    • This resource is buggy in CLI versions below 0.3.1 when using the standard reporter. Please use CLI version 0.3.1 or greater.

0.7.0 Importing

  • Added importing. The import command allows users to automatically generate Codify configs based on the tools and programs already installed on their system. Just type codify import <type1> [type2] [type3].... Upgrade to codify cli >0.3.0 to use the import command.
  • Added filtering for resource array parameters in stateless mode.
  • Path resource fixes

BREAKING CHANGES:

  • Removed the remote parameter from git-clone. Use the existing repository parameter instead. This was done to simplify the logic since remote was only an alias of repository. This parameter may be added back in the future if alias support is added.

0.6.0 Asdf is now here

  • Added asdf resources including asdf, asdf-plugin, asdf-local, asdf-global and asdf-install. See the asdf resources page for more info.
  • Fixes for nvm resource.
  • Fixes for vscode resource.
  • Fixes for the pyenv resource.
  • Debugging improvements to improve developer productivity.

0.5.0 Major refactoring and improvements

  • Internal improvements and maintainability improvements.
  • Major code refactors enabling faster development in the future.
  • Performance improvements.
  • Adds the framework for stateful mode in the future.

0.4.0 Android studios

  • Adds a Android Studios resource.
  • The Android Studios resource supports fetching available versions directly from Google and allows the installation of previous Android Studio versions.
  • It also supports beta and preview versions of Android Studios.

0.3.0 Git git git

  • Adds a git resource.
  • The resource configures the global git email and username

0.2.0 Java and jenv

  • Adds a jenv resource.
  • The jenv resource allows the installation and configuration of jenv
  • Additionally the jenv resource adds the functionality to directly install LTS versions of the JDK. This is additional functionality on top of what jenv by default provides. Requires homebrew to be installed.

0.1.0 Alias and git clone

  • Adds an alias and git clone resource.

0.0.0 Initial release

  • Initial release of the core plugin;
  • Adds support for aws-cli, aws-profile, git-lfs, homebrew, nvm, path, pgcli, pyenv, terraform, vscode and xcode-tools;
  • Adds sudo handling.

1.0.0 Dashboard integration and cloud file support

  • Added dashboard integration with codify login, codify logout, and codify edit commands
    • Authenticate with the Codify dashboard directly from the CLI
    • Edit configurations in the browser-based editor
    • Connect local CLI to your cloud account
  • Added cloud file support to load configurations from remote sources
    • Use codify apply and codify plan with cloud-hosted files
    • Share configurations across teams without local file dependencies
  • New codify refresh command to refresh project state
  • New codify test command to test configurations before applying
  • Full Linux support with OS-specific parameter handling
    • Cross-platform shell compatibility improvements
    • Fixed sudo command execution across different shells
  • Security improvements
    • Support for sensitive parameters (these parameters are skipped in init and improts)
  • Bug fixes
    • Improved environment variable handling with sudo
    • Enhanced progress display and error handling

0.8.0 JSONC and JSON5

  • Adds support for the jsonc and json5 file types which allow commenting.
  • Jsonc is now the recommended file format for Codify.
  • Json5 is preferred if your editor supports it since it has looser syntax, multi-line strings, trailing commas, and allows keys to remain un-quoted. This makes it less verbose and easier to write by hand.

0.7.1 Add verbosity support

  • In version 0.7.0, the output was made less verbose.
  • Version 0.7.1 gives the option to increase verbosity using the --debug flag.

0.7.0 New init command!

  • A new command init was added to make it easier than ever to get started with Codify.
    • Unlike the import command no input is needed from the user. The init command will automatically try to import as many resources as possible.
  • Destroy command improvements! Now the destroy command will ask for additional information to be able to destroy resources previous that were not supported.
  • Verbosity changes. Now the output will only report the command that was run but not the output. This makes the output much more readable. Use the --verbose option to see the full output as well.
  • Improved help descriptions for all commands.
  • Cleaned up unused arguments and parameters for all commands.

0.6.0 Import overhaul!

  • The import system was overhauled to improve the first time experience using Codify and to make it easier to keep Codify files updated without active management.
  • Use the import command with no arguments to update an existing codify file with new changes on the system. No additional prompting is required.
  • Import results can now be smartly written to existing files following existing formatting.
  • Importing now support '*' and '?' matching to make it easier to import multiple resource types at the same time.
  • Updated import interface with easier to use UI.
  • Improved all resources to better support importing and return more accurate results.

0.5.1 Bug fix for import output

  • Fixed the import command to generate the correct output without the surrounding JSON.

0.5.0 Massive plan performance uplifts (7x to 9x)

  • Reworked internal architecture and switched to using a pty terminal.
  • Switched to a lightweight model of running commands and piping results back to avoid interactive shell start-up costs and process overheads.
  • Parallelized all plan commands
  • Improved plugin versioning + storage on the system.
  • Bug fixes:
    • Fixed the --path flag for all commands

0.4.0 Updates, updates, updates

  • Added codify update command to perform automated updates
  • Bug fixes for multiple named configs and destroy
  • Internal refactoring
  • Moved plugin cache to ~/.codify

0.3.1 TTY fixes

  • Bug fix for tty messages not showing up (for example SSH passphrase prompts). Now all tty messages will be shown to the user and not hidden.
  • Updated spinner style.

0.3.0 Importing is now live

  • Added importing. The import command allows users to automatically generate Codify configs based on the tools and programs already installed on their system. Just type codify import <type1> [type2] [type3].... Type1, type2, type3 represent the type ids of the resources to be imported such as homebrew, nvm, jenv, etc...
  • Added UI to allow imports to specify the required parameters to configure the import. For example when importing an alias, the name of the alias needs to be passed in.
  • Import will return a config of the current state of the resource on the system. If the resource is not found then an empty array will be returned.
  • Import is supported in all output modes (default, plain, debug)

BREAKING CHANGES:

  • Re-named uninstall command to destroy to match the name of the operation. The name destroy makes more sense in the context of creating and destroying resources which encompass more than tools and programs that can be installed or uninstalled.

0.2.0 Performance improvements

  • Build improvements, reduced binary size and performance improvements.
  • Removed unnecessary files from the final installer.

0.1.0 Error source mapping

  • Adds improved error handling.
  • Adds line numbers and code fragments for validation error messages to make it easier to pinpoint where an error is
  • Adds support for YAML file parsing

0.0.0 Initial release!

  • Initial release of Codify.
  • Support codify apply and codify plan commands
  • Adds plugin parsing and codify.jsonc parsing.
  • Adds plugin initialization, dependency resolution, and apply order sorting
  • Adds UI for displaying plans

On this page