e2c83dc
(#318 by @jbolda) Addexports
topackage.json
for improved capability and an enhanced experience when developed covector and testing locally.ce43ad7
(#319 by @jbolda) Add logger instance to allow custom loggers based on the usage context. It enables different structured logs for the CLI vs within a GitHub Action, as well as for local development and testing.
- Upgraded to
@covector/files@0.8.0
- Upgraded to
@covector/command@0.8.0
ce43ad7
(#319 by @jbolda) Switch to Vitest for the test runner. This improves speed and enables improved ability to update to current standards. Additionally, we usepino-test
with the changes to the logger to more specifically check log output. Along with this, we switch multiple test fixtures to run commands that would return more standard output across OS which reduces test flakiness.
9e111fc
(#304 by @jbolda) Add currentVersion property to more easily refer to the version before a bump.9202dca
(#307 by @jbolda) Use additional git log flags,--diff-filter=ACM --remove-empty
, to filter out previous versions of files with non-unique (across all shas) file names.
- Upgraded to
@covector/files@0.7.2
- Upgraded to
@covector/command@0.7.1
- Upgraded to
@covector/files@0.7.1
7498ecc
(#289) Implement zod for config file schema parsing and checking. It will throw an error if theconfig.json
has entries that do not match the schema.
- Upgraded to
@covector/files@0.7.0
- Upgraded to
@covector/files@0.6.2
- Upgraded to
@covector/command@0.7.0
7b6201c
(#264) Bump Typescript to v4.9, and deeply update types in the lower level functions to start.
- Package file objects now include the dependencies keyed by the name with an array including the dependency type. This information is now passed to the commands pipeline.
- Update multiple devDeps, semver, yargs, inquirer, and packages in our action. This is primarily internal upgrades and don't affect external APIs.
- When collecting
git log
metadata for change files, running it in parallel caused occasional no-op which increasingly became more flaky with more files. Adjust this to run it serially which should be a neglible difference. - Remove the
to-vfile
package as a dependency. This allows us to focus our file reference to our specific needs, and one less dependency to maintain. With this change, we also converted a handful of promises into generators for better compatibility and control with effection. - Upgrade to
effection
v2. This is primarily an internal improvement, but will enable future features such as fetching from an endpoint to check if a version of a package was published. It also brings an updated dependency to gracefully shutdown windows processes.
- Include a copy of the license in each package.
- The ability to adjust the Github Release git tag was previously added, and the fallback used only worked for JavaScript packages. This fix uses the package nickname instead which will work for any package manager.
- Allow one to specify the
releaseTag
that determines the Github Release tag used. This also let's you specifyfalse
to explicitly skip creating a Github Release for the package. resolves #203, resolves #204. - Extract out types into separate package to remove issues with circular dependencies.
- Adjust output from assemble and covector to expose the template that is piped into each command. This allows us to set it as an output in the github action.
- Assemble considers preMode and will return
pre*
bumps to be used in apply. - Implement
errorOnVersionRange
which allows one to set a range which, when satisfied, will fail acovector status
orcovector version
. This guardrail can help prevent a package from accidentally being bumped to the next major version. - Improve types on generator based shell commands. This won't affect the published assets, but improve use to downstream TS users (and covector).
- This switches to using Typescript project references to build (previously rollup). It should affect the underlying packages or use.
- Pass head branch name into covector for running preview in action Tag gets piped into template in assemble Fix published boolean bug in command
- Add support for yaml based package files. Add support for generic file whose only content is a version number.
- Throw an error if we receive a malformed change file or one that is otherwise missing any changes. Closes #201.
- Mock out full Github Release flow to help in testing the Github Action. Adjust command pipe to function to fix
undefined
being piped to Github Release body.
- Roll up bumps from children recursively to bump parents unlimited levels deep. These bumps are done as a
patch
bump as they are automatic. Any parent bumps that would result in aminor
ormajor
change will likely include breaking changes in the package itself. This would imply that a specific change file would be included for it as well, as opposed to relying on a bump from a child. - Split up config merge function into two functions, one for version and one for publish, et al. This makes the types easier to reason about.
- Convert covector to typescript.
- Fix additional bump types to be a no-op bump.
- Allow running functions as a command instead of assuming everything runs in a shell. This is mostly for internal use to be used within the Github Action.
- Throw a hard error on an invalid bump types. If you specify something other than
major
,minor
, orpatch
. You will receive an error in thestatus
andversion
commands. Also adds a new config option,additionalBumpTypes
, which allows specifying other bump types (that are ignored in versioning) but do not throw an error. This allows one to always require a change file even if the code does not require a version bump. This is generally easier to enforce then conditionally requiring a change file. - Some workflows require different actions for different packages. Most of this can be codified into config. However there are cases where you may need to run a command for a dynamic set of packages.
- Add missing workspace dependencies. These were likely only functioning due to hoisting.
- Allow multiple publish sequences. Any command beginning with
publish
will invoke the relatedgetPublishedVersion
, e.g.publishNPM
would look for and checkgetPublishedVersionNPM
. This allows separation of concerns and re-run-ability for multiple deploy targets.
- Deep clone changes that are getting passed into the changelog. We were editing references and those edits were showing up in erroneous places.
- Allow running commands from the cwd within the config.
- Stringify remaining portion of change file. Previously we were just looping on
paragraph
which would miss links.
- Throw an error if a change file is added that targets a package that does not exist in the config.
- Pass split versions through to pipe.
- Assemble process was async and the pkgFile needed a proper await. Switch to a generator to yield in the loop.
- Note in sub-bullets when a bump was due to a dependency (and that helps note where there summary text is from as well.)
- Pull and set git meta information on change files as an array of commits. This can then be piped into changelogs.
- Allow complex commands specified as an object. This let's one specify a dryRunCommand that is executed in --dry-run mode instead (so no accidental publishes!) or to set pipe to true that the output is returned from the main covector function. The pipe likely won't be used directly, but can be consumed within the action to create a Github Release, etc.
- Version commands used to only run on changes, but ignore parents. Reconfigure that we resolve the parents and run commands on both direct changes and changes through a dependency.
- Add config option to specify an asset that is uploaded on publish to the Github Release.
- Add option to execute commands in "--dry-run" mode which will output the anticipated commands without running them and additional relevant information (such as the command pipe).
- Allow use of any arbitrary command as defined in the configuration.
- Allow arrays for commands and run pre/post versions of each command.
- Pipe pkgFile to the publish commands. This let's one pull the version command (which is useful for git tags).
- Pass cwd down to assemble config merging. It reads package files and needs the dir.
- Package files should be referenced based on the "nickname" as noted in the config. The name in the package file is not a unique value.