Skip to main content

Toolset for Plone mono repo maintainers.

Project description

RepoPlone

PyPI PyPI - Python Version PyPI - Wheel PyPI - License PyPI - Status

Code Quality

GitHub contributors GitHub Repo stars

Overview

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.

Setup

Installation

To install the latest version of this tool, run (on an isolated virtual environment):

pip install repoplone

Also, you can use uvx to run this tool, without the need to install it in your environment.

Authentications

PyPi

We use hatch to make the release, please make sure authentication is in place by running:

hatch publish --initialize-auth

GitHub

To 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>'

NPM

npm whoami

Usage

Prepare the repository

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 = false

List Available Commands

To see all available commands, run:

uvx repoplone

Check Installed Version

To check the installed version of the tool, use:

uvx repoplone --version

Check repository versions

Current versions

List current versions for:

  • Repository
  • Backend package
  • Frontend package
uvx repoplone versions current

Next versions

Report next version of all components of this repository:

  • Repository
  • Backend package
  • Frontend package
uvx repoplone versions next

Dependencies

Report version information for major dependencies:

  • Backend base package
  • Frontend base package
  • Frontend @plone/volto package
uvx repoplone versions dependencies

Preview Changelog

To generate and display the draft changelog, run:

uvx repoplone changelog

Releasing Monorepo Packages

The release command creates a new release and accepts the following arguments:

version

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

--dry-run

Use this flag to simulate the release process without actually publishing the new version.

Example:

uvx repoplone release a

This will create an alpha release.


Dependencies

Manage backend's base package

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.

Report the base package

To check which is the current base package, run:

uvx repoplone deps info

Check version

To check the current base package version, run:

uvx repoplone deps check

Upgrade version

To upgrade the base package to a specific version, use:

uvx repoplone deps upgrade 6.1.1

Contribute 🤝

We welcome contributions to RepoPlone.

You can create an issue in the issue tracker, or contact a maintainer.

Development requirements

Setup

Clone this repository:

git clone git@github.com:plone/repoplone.git

Install UV, and create a local virtual environment with the following command.

make install

Run the checked out branch of RepoPlone

uv run repoplone

Check and format the codebase

make check

Run tests

pytest is this package's test runner.

Run all tests with the following command.

make test

Run all tests, but stop on the first error and open a pdb session with the following command.

uv run pytest -x --pdb

Run only tests that match test_release_backend with the following command.

uv run pytest -k test_release_backend

Run 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 --pdb

Run type checker

We use mypy to run static type checking for this codebase.

Run the checker with the following command.

uv run mypy src

Support 📢

For support, questions, or more detailed documentation, visit the official RepoPlone repository.

This project is supported by

Plone Foundation Logo

License

The project is released under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

repoplone-1.0.0a5.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

repoplone-1.0.0a5-py3-none-any.whl (28.0 kB view details)

Uploaded Python 3

File details

Details for the file repoplone-1.0.0a5.tar.gz.

File metadata

  • Download URL: repoplone-1.0.0a5.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.13

File hashes

Hashes for repoplone-1.0.0a5.tar.gz
Algorithm Hash digest
SHA256 c47766531aac9e675e5c9a54b2f20d3382b6e6aa81efd9f75d8fd935960a3b6c
MD5 b150438446afaef33a9ea03f388993b6
BLAKE2b-256 272343d5e74c43bb6323e66d3a40f0898a709d47271f91bdf92ce79af26a1bdd

See more details on using hashes here.

File details

Details for the file repoplone-1.0.0a5-py3-none-any.whl.

File metadata

File hashes

Hashes for repoplone-1.0.0a5-py3-none-any.whl
Algorithm Hash digest
SHA256 126e1b7f5a2460deed2d8ea4a9a01e7b064dea9316b5c51f10a53336e3f3fedc
MD5 5508077dd263a3a11d61c49268f2d4d7
BLAKE2b-256 1f88a4d2a594601a8887434abd69ebce6f2ce1565875fea7e850070a4bf984e0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page