diff --git a/CLAUDE.md b/CLAUDE.md index 97caec9..ef042c7 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,6 +2,10 @@ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. +## Versioning rule + +Every merge into `main` is a release. Before committing any change to `mdcms.py`, ask: "Is this intended to be merged to main immediately?" If yes, bump `CLI_VERSION` and `CLI_RELEASE_DATE` in `mdcms.py` and `version` in `pyproject.toml` before committing. If the work is exploratory or not yet ready to merge, leave the version unchanged and ask again when the merge is imminent. + ## Branching convention - **Code changes** (`mdcms.py`, `pyproject.toml`, `app/`, `.github/`) — use branch `mdcms_claude` (create from `main` if it doesn't exist), PR to `main`. diff --git a/mdcms.py b/mdcms.py index 62ee3a6..ee7cf84 100644 --- a/mdcms.py +++ b/mdcms.py @@ -1,11 +1,11 @@ #!/usr/bin/env python3 # -# mdcms v0.3 — CLI companion +# mdcms v0.3.2 — CLI companion # # Copyright 2026 Kristian Benestad # Apache License, Version 2.0 — https://www.apache.org/licenses/LICENSE-2.0 -"""MD-CMS v0.3 — CLI tool for managing and building MD-CMS sites.""" +"""MD-CMS v0.3.2 — CLI tool for managing and building MD-CMS sites.""" import json import os @@ -20,7 +20,8 @@ import certifi import click import yaml -CLI_VERSION = "0.3" +CLI_VERSION = "0.3.2" +CLI_RELEASE_DATE = "16 May 2026" MIN_SUPPORTED_VERSION = "0.3" MARKER_RE = re.compile(r"mdcms v(\d+\.\d+)", re.IGNORECASE) @@ -467,8 +468,29 @@ def download_template(dest: Path): # ─── CLI commands ───────────────────────────────────────────── +def _version_callback(ctx, param, value): + if not value or ctx.resilient_parsing: + return + click.echo(f"mdcms v{CLI_VERSION} (released {CLI_RELEASE_DATE})") + url = f"https://raw.githubusercontent.com/kbenestad/mdcms/refs/heads/main/docs/banner/v{CLI_VERSION}.txt" + try: + ssl_ctx = ssl.create_default_context(cafile=certifi.where()) + req = urllib.request.Request(url, headers={"User-Agent": f"mdcms/{CLI_VERSION}"}) + with urllib.request.urlopen(req, context=ssl_ctx, timeout=5) as resp: + click.echo(resp.read().decode("utf-8").strip()) + except urllib.error.HTTPError as e: + if e.code == 404: + click.echo("There is no online information defined for this version.") + else: + click.echo("There is no online information defined for this version.") + except Exception: + click.echo("There is no online information defined for this version.") + ctx.exit() + + @click.group() -@click.version_option(CLI_VERSION, prog_name="mdcms") +@click.option("--version", is_flag=True, is_eager=True, expose_value=False, + callback=_version_callback, help="Show version and exit.") def cli(): """MD-CMS — Markdown-based CMS companion CLI. diff --git a/pyproject.toml b/pyproject.toml index 340a347..0f90b71 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "mdcms" -version = "0.3.0" +version = "0.3.2" description = "MD-CMS — Markdown-based CMS companion CLI" readme = "README.md" license = { text = "Apache-2.0" }