// SPDX-License-Identifier: AGPL-3.0-only // SPDX-FileCopyrightText: Copyright (C) 2026 Catcrafts® export module Crafter.Review:Core; import std; export namespace Crafter::Review { // The release this binary was built from, as project.cpp stamped it: // CRAFTER_REVIEW_VERSION, else `git describe`, else 0.0.0-dev. std::string_view Version(); // Bumped only when clean results stored under the earlier number must not // be reused: a text change a lens reads that changes what a clean pass // proves. It is one of the inputs of every reuse key, so a bump retires // every stored result at once. A change that leaves what a lens reads the // same — a layout change, a reworded log line — does not bump it. constexpr std::int32_t PromptVersion = 1; // `crafter-review (prompt v)`: the dump's `driver` field, // the first log line of a run and `--version`. std::string DriverLine(); // How a person runs this binary, for the command lines it prints: `flatpak // run net.catcrafts.CrafterReview` in the Flatpak, the binary's absolute // path otherwise. std::string Invocation(); // Where the lens texts, the procedure and the templates are: the // directory that holds process/. In this order: // - CRAFTER_REVIEW_HOME, natively only: a host setting must not swap the // Flatpak's lens texts for a checkout's, which would change every reuse // key without a word; // - /../share/crafter-review, which in the Flatpak is // /app/share/crafter-review; // - the checkout the binary was built in, when it runs from // /bin/crafter.review-exe-*/. // Throws std::runtime_error when none of them holds process/lenses. const std::filesystem::path& Home(); // For tests, which run from neither place. void SetHome(std::filesystem::path home); // Home()/process/lenses. std::filesystem::path LensDir(); // The sha256 of each lens file — the text read with universal newlines, // as UTF-8 — keyed by file name. Every charter's is part of its lens's // reuse keys, so --version and the run log print them: a stale home shows // up there before it shows up as nothing being reused. std::vector> CharterHashes(); }