The RepoPlone is a tool designed to manage mono repos containing a repository.toml configuration file at the repository root.
It provides various commands to streamline repository management, versioning, and release processes.
To use the latest version of this tool, run the command:
uvx repoploneWe use uv to make the release, please make sure authentication is in place by setting the environment variable UV_PUBLISH_TOKEN:
export UV_PUBLISH_TOKEN=<MYTOKEN>or by using the uv auth command, as explained here.
npm whoamiTo add releases to GitHub, you should have an environment variable GH_TOKEN set -- with a valid token -- before running this tool.
export GH_TOKEN='<token>'Ensure that your monorepo contains a repository.toml file. Below is an example of such a configuration:
[repository]
name = "fake-distribution"
changelog = "CHANGELOG.md"
version = "version.txt"
version_format = "semver"
compose = ["docker-compose.yml"]
[repository.towncrier]
section = "Project"
settings = "towncrier.toml"
[backend.package]
name = "fake.distribution"
path = "backend"
changelog = "backend/CHANGELOG.md"
towncrier_settings = "backend/pyproject.toml"
base_package = "Products.CMFPlone"
publish = false
[frontend.package]
name = "fake-distribution"
path = "frontend/packages/fake-distribution"
changelog = "frontend/packages/fake-distribution/CHANGELOG.md"
towncrier_settings = "frontend/packages/fake-distribution/towncrier.toml"
publish = falseTo see all available commands, run:
uvx repoploneTo check the installed version of the tool, use:
uvx repoplone --versionList current versions for:
- Repository
- Backend package
- Frontend package
uvx repoplone versions currentReport next version of all components of this repository:
- Repository
- Backend package
- Frontend package
uvx repoplone versions nextReport version information for major dependencies:
- Backend base package
- Frontend base package
- Frontend @plone/volto package
uvx repoplone versions dependenciesTo generate and display the draft changelog, run:
uvx repoplone changelogThe release command creates a new release and accepts the following arguments:
The version argument defines the new version to be used in the release. It can be a specific version number or a version segment. Below is a reference table showing how version segments modify an existing 1.0.0 version:
| Segment | New Version |
|---|---|
release |
1.0.0 |
major |
2.0.0 |
minor |
1.1.0 |
micro / patch / fix |
1.0.1 |
a / alpha |
1.0.0a0 |
b / beta |
1.0.0b0 |
c / rc / pre / preview |
1.0.0rc0 |
r / rev / post |
1.0.0.post0 |
dev |
1.0.0.dev0 |
Use this flag to simulate the release process without actually publishing the new version.
Example:
uvx repoplone release aThis will create an alpha release.
The following commands are available exclusively for projects managed by UV and with a base_package set in the [backend.package] section of repository.toml.
To check which is the current base package, run:
uvx repoplone deps infoTo check the current base package version, run:
uvx repoplone deps checkTo upgrade the base package to a specific version, use:
uvx repoplone deps upgrade 6.1.1We welcome contributions to RepoPlone.
You can create an issue in the issue tracker, or contact a maintainer.
Clone this repository:
git clone [email protected]:plone/repoplone.gitInstall UV, and create a local virtual environment with the following command.
make installuv run repoplonemake checkpytest is this package's test runner.
Run all tests with the following command.
make testRun all tests, but stop on the first error and open a pdb session with the following command.
uv run pytest -x --pdbRun only tests that match test_release_backend with the following command.
uv run pytest -k test_release_backendRun only tests that match test_release_backend, but stop on the first error and open a pdb session with the following command.
uv run pytest -k test_release_backend -x --pdbWe use mypy to run static type checking for this codebase.
Run the checker with the following command.
uv run mypy srcFor support, questions, or more detailed documentation, visit the official RepoPlone repository.
The project is released under the MIT License.