diff --git a/.github/workflows/publish_gh_pages.yml b/.github/workflows/publish_gh_pages.yml deleted file mode 100644 index 1908f1b..0000000 --- a/.github/workflows/publish_gh_pages.yml +++ /dev/null @@ -1,47 +0,0 @@ -name: Publish to GitHub Pages -on: - workflow_dispatch: - release: - types: [created] - push: - branches: - - main - -concurrency: - group: github-pages - cancel-in-progress: false -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write -jobs: - publish_gh_pages: - runs-on: ubuntu-latest - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - steps: - - name: Checkout repository - uses: actions/checkout@v6 - - name: Configure Pages - uses: actions/configure-pages@v5 - - name: Install Node.js - uses: actions/setup-node@v6 - with: - node-version: "24" - - name: Install Antora - run: npm i antora - - name: Install Asciidoctor Kroki extension - run: npm i asciidoctor asciidoctor-kroki - - name: Generate Site - run: npx antora docs/antora-playbook.yml - - name: Create site folders - run: mkdir -p docs/build/site - - name: Upload Artifacts - uses: actions/upload-pages-artifact@v4 - with: - path: docs/build/site - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..2e2341c --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,25 @@ +# Contributing to reqstool-python-hatch-plugin + +Thank you for your interest in contributing! + +For DCO sign-off, commit conventions, and code review process, see the organization-wide [CONTRIBUTING.md](https://github.com/reqstool/.github/blob/main/CONTRIBUTING.md). + +## Prerequisites + +- Python 3.13+ +- [Hatch](https://hatch.pypa.io/) (`pip install hatch`) + +## Setup + +```bash +git clone https://github.com/reqstool/reqstool-python-hatch-plugin.git +cd reqstool-python-hatch-plugin +hatch env create +``` + +## Build & Test + +```bash +hatch build +hatch run test +``` diff --git a/README.md b/README.md index 41de0f1..bfaa1a6 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,28 @@ - [![Commit Activity](https://img.shields.io/github/commit-activity/m/reqstool/reqstool-python-hatch-plugin?label=commits&style=for-the-badge)](https://github.com/reqstool/reqstool-python-hatch-plugin/pulse) [![GitHub Issues](https://img.shields.io/github/issues/reqstool/reqstool-python-hatch-plugin?style=for-the-badge&logo=github)](https://github.com/reqstool/reqstool-python-hatch-plugin/issues) [![License](https://img.shields.io/github/license/reqstool/reqstool-python-hatch-plugin?style=for-the-badge&logo=opensourceinitiative)](https://opensource.org/license/mit/) [![Build](https://img.shields.io/github/actions/workflow/status/reqstool/reqstool-python-hatch-plugin/build.yml?style=for-the-badge&logo=github)](https://github.com/reqstool/reqstool-python-hatch-plugin/actions/workflows/build.yml) -[![Static Badge](https://img.shields.io/badge/Documentation-blue?style=for-the-badge&link=docs)](https://reqstool.github.io/reqstool-python-hatch-plugin/reqstool-python-hatch-plugin/0.0.2/index.html) - - +[![Documentation](https://img.shields.io/badge/Documentation-blue?style=for-the-badge&link=docs)](https://reqstool.github.io) -## Description +# Reqstool Python Hatch Plugin -This documentation provides information on how to use the Reqstool Hatch Plugin. The plugin is designed to be used with the Hatch build tool and facilitates the integration of the Reqstool Decorators in your project. +Hatch build hook plugin for [reqstool](https://github.com/reqstool/reqstool-client) that collects decorated code and generates `annotations.yml` during `hatch build`. ## Installation -To use the Reqstool Hatch Plugin, follow these steps: - -- Update your project dependencies in the `pyproject.toml` file and -ensure that the Reqstool Decorators' dependency is listed as follows; +Add to your `pyproject.toml`: ```toml -dependencies = ["reqstool-python-decorators=="] +[build-system] +requires = [ + "hatchling", + "reqstool-python-hatch-plugin==", +] ``` -When you declare this in the pyproject.toml file, you are specifying the required versions for the dependency of the Reqstool Decorators. This ensures that the correct version of the dependencies are used when installing and running your project. - - - ## Usage -### Configuration - -The plugin can be configured through the `pyproject.toml` file. Configure plugin in `pyproject.toml`as follows; +Configure the plugin in `pyproject.toml`: ```toml [tool.hatch.build.hooks.reqstool] @@ -40,17 +32,16 @@ dataset_directory = "docs/reqstool" output_directory = "build/reqstool" ``` -And under `requires` in `[build-system]` you need to add the plugin with the version, see example; +The plugin uses [reqstool-python-decorators](https://github.com/reqstool/reqstool-python-decorators) for processing. -```toml -[build-system] -requires = [ - "hatchling", - "reqstool-python-hatch-plugin==", -] -``` +## Documentation + +Full documentation can be found [here](https://reqstool.github.io). + +## Contributing +See the organization-wide [CONTRIBUTING.md](https://github.com/reqstool/.github/blob/main/CONTRIBUTING.md). -It specifies that the reqstool-python-hatch-plugin is a dependency for the build process, and it should be of a specific version. +## License -Further it defines the paths where the plugin should be applied. In this case, it specifies that the plugin should be applied to files in the src and tests directories. +MIT License. diff --git a/docs/antora-playbook.yml b/docs/antora-playbook.yml index 1e37bbd..9fa40c1 100644 --- a/docs/antora-playbook.yml +++ b/docs/antora-playbook.yml @@ -1,4 +1,5 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/asciidoctor/asciidoctor-intellij-plugin/main/src/main/resources/jsonSchemas/antoraPlaybookSchema.json +# For local development only. Published site: https://reqstool.github.io site: title: Reqstool Hatch Plugin Documentation diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index ccbcafa..cfb3122 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -1,2 +1,3 @@ -* xref:index.adoc[Start] -* xref:usage.adoc[Usage] \ No newline at end of file +* xref:index.adoc[Overview] +* xref:configuration.adoc[Configuration] +* xref:usage.adoc[Usage] diff --git a/docs/modules/ROOT/pages/configuration.adoc b/docs/modules/ROOT/pages/configuration.adoc new file mode 100644 index 0000000..4d239f3 --- /dev/null +++ b/docs/modules/ROOT/pages/configuration.adoc @@ -0,0 +1,70 @@ +== Configuration + +The plugin is configured in your `pyproject.toml` file under `[tool.hatch.build.hooks.reqstool]`. + +=== Complete Configuration Example + +[source,toml] +---- +[tool.hatch.build.hooks.reqstool] +# Build hook dependency +dependencies = ["reqstool-python-hatch-plugin"] + +# Directories to scan for decorators +# Default: ["src", "tests"] +sources = ["src", "tests"] + +# Test result file pattern(s) +# Default: "build/junit.xml" +test_results = "build/junit.xml" + +# Directory containing requirements.yml and optional files +# Default: "docs/reqstool" +dataset_directory = "docs/reqstool" + +# Output directory for generated annotations +# Default: "build/reqstool" +output_directory = "build/reqstool" +---- + +=== Configuration Parameters + +==== sources + +Directories to scan for `@Requirements` and `@SVCs` decorators. +Defaults to `["src", "tests"]`. + +[source,toml] +---- +sources = ["src", "tests"] +---- + +==== test_results + +Path or pattern for test result files (JUnit XML). +Defaults to `"build/junit.xml"`. + +[source,toml] +---- +test_results = "build/junit.xml" +---- + +==== dataset_directory + +Directory containing `requirements.yml` and optional reqstool files (`software_verification_cases.yml`, `manual_verification_results.yml`). +Defaults to `"docs/reqstool"`. + +[source,toml] +---- +dataset_directory = "docs/reqstool" +---- + +==== output_directory + +Output directory for the generated `annotations.yml`. +Defaults to `"build/reqstool"`. + +[source,toml] +---- +output_directory = "build/reqstool" +---- diff --git a/docs/modules/ROOT/pages/description.adoc b/docs/modules/ROOT/pages/description.adoc deleted file mode 100644 index fd0634d..0000000 --- a/docs/modules/ROOT/pages/description.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== Description - -This documentation provides information on how to use the Reqstool Python Hatch Plugin. The plugin is designed to be used with the Hatch build tool and facilitates the integration of the Reqstool Python Decorators in your project. diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc index 036ed3f..b074784 100644 --- a/docs/modules/ROOT/pages/index.adoc +++ b/docs/modules/ROOT/pages/index.adoc @@ -1,7 +1,57 @@ -= Reqstool Python Hatch Plugin += reqstool Python Hatch Plugin -include::description.adoc[] +This Hatch build hook generates annotations and assembles reqstool data during `hatch build`. It collects decorated code using https://github.com/reqstool/reqstool-python-decorators[reqstool-python-decorators] and packages everything for consumption by the reqstool CLI. -include::installation.adoc[] +== Features -include::license.adoc[] \ No newline at end of file +* *Hatch integration*: Runs automatically as a build hook during `hatch build` +* *Combines annotations*: Collects `@Requirements` and `@SVCs` decorators from source and test code +* *Assembles package data*: Includes requirements, test results, and annotations in the built package +* *Generates config*: Creates a `reqstool_config.yml` with correct paths for the package structure + +== Quick Start + +== Add the Plugin + +Add the build hook dependency to your `pyproject.toml`: + +[source,toml] +---- +[tool.hatch.build.hooks.reqstool] +dependencies = ["reqstool-python-hatch-plugin"] +---- + +== Default Behavior + +The plugin automatically: + +1. Runs during `hatch build` +2. Scans source and test directories for `@Requirements` and `@SVCs` decorators +3. Generates an `annotations.yml` file in `build/reqstool/` +4. Creates a `reqstool_config.yml` with paths for the package structure +5. Includes reqstool data in the built package (sdist/wheel) + +== Minimal Setup + +[source] +---- +my-project/ +├── pyproject.toml +├── docs/ +│ └── reqstool/ +│ └── requirements.yml (mandatory) +├── src/ +└── tests/ +---- + +Run `hatch build` and the annotations will be generated automatically. + +== Prerequisites + +* Python 3.13+ +* https://hatch.pypa.io/[Hatch] +* https://github.com/reqstool/reqstool-python-decorators[reqstool-python-decorators] as a project dependency + +== License + +MIT License. diff --git a/docs/modules/ROOT/pages/installation.adoc b/docs/modules/ROOT/pages/installation.adoc deleted file mode 100644 index aebd353..0000000 --- a/docs/modules/ROOT/pages/installation.adoc +++ /dev/null @@ -1,20 +0,0 @@ -== Installation - -To use the Reqstool Python Hatch Plugin, follow these steps: - -- Update your project dependencies in the `pyproject.toml` file and -ensure that the Reqstool Decorators' dependency is listed as follows; -``` -dependencies = ["reqstool-python-decorators == "] -``` - -When you declare this in the pyproject.toml file, you are specifying the required versions for the dependency of the Reqstool Decorators. This ensures that the correct version of the dependencies are used when installing and running your project. - - - - - - - - - diff --git a/docs/modules/ROOT/pages/license.adoc b/docs/modules/ROOT/pages/license.adoc deleted file mode 100644 index 51e84f1..0000000 --- a/docs/modules/ROOT/pages/license.adoc +++ /dev/null @@ -1,3 +0,0 @@ -== License - -This project is licensed under the MIT License - see the LICENSE.md file for details. diff --git a/docs/modules/ROOT/pages/usage.adoc b/docs/modules/ROOT/pages/usage.adoc index f693cf2..7550f75 100644 --- a/docs/modules/ROOT/pages/usage.adoc +++ b/docs/modules/ROOT/pages/usage.adoc @@ -1,18 +1,44 @@ == Usage +=== Basic Usage -=== Configuration +Add the build hook to your `pyproject.toml`: -The plugin can be configured through the `pyproject.toml` file. Configure plugin in `pyproject.toml`as follows; - -```toml +[source,toml] +---- [tool.hatch.build.hooks.reqstool] -dependencies = ["reqstool-python-hatch-plugin == "] +dependencies = ["reqstool-python-hatch-plugin"] sources = ["src", "tests"] test_results = "build/junit.xml" dataset_directory = "docs/reqstool" output_directory = "build/reqstool" -``` -It specifies that the reqstool-python-hatch-plugin is a dependency for the build process, and it should be of a specific version. +---- + +=== Decorator Dependency + +To use `@Requirements` and `@SVCs` decorators in your code, add the decorators package as a dependency: + +[source,toml] +---- +[project] +dependencies = ["reqstool-python-decorators"] +---- + +See https://github.com/reqstool/reqstool-python-decorators[reqstool-python-decorators] for decorator usage. + +=== Running the Build + +[source,bash] +---- +hatch build +---- + +=== Default Lifecycle + +The plugin integrates into the Hatch build process: -Further it defines the paths where the plugin should be applied. In this case, it specifies that the plugin should be applied to files in the src and tests directories. \ No newline at end of file +1. `hatch build` is invoked +2. The build hook scans `sources` directories for decorated code +3. An `annotations.yml` is generated in the `output_directory` +4. A `reqstool_config.yml` is created with paths for the package structure +5. reqstool data is included in the built sdist/wheel package