diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index c58efb0..0000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,19 +0,0 @@ -# Declare a new kubesplit issue - -## Metadata - -* kubesplit version: -* Python version: -* Operating System: - -## Description - -Describe what you were trying to get done. -Tell us what happened, what went wrong, and what you expected to happen. - -## What I Did - -```bash -Paste the command(s) you ran and the output. -If there was a crash, please include the traceback here. -``` diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..643004a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,48 @@ +--- +name: Bug report +description: Report a problem with kubesplit +labels: + - bug +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to report a bug! + - type: input + id: kubesplit-version + attributes: + label: kubesplit version + description: Output of `kubesplit --version` + placeholder: e.g. 0.6.0 + validations: + required: true + - type: input + id: python-version + attributes: + label: Python version + description: Output of `python --version` + placeholder: e.g. 3.12.4 + validations: + required: true + - type: input + id: os + attributes: + label: Operating System + placeholder: e.g. macOS 15.1, Ubuntu 24.04 + validations: + required: true + - type: textarea + id: description + attributes: + label: Description + description: What were you trying to do? What happened? What did you expect to happen? + validations: + required: true + - type: textarea + id: what-i-did + attributes: + label: What I did + description: Paste the command(s) you ran and the output. Include the full traceback if there was a crash. + render: shell + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..bd9dfe4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,2 @@ +--- +blank_issues_enabled: false diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..5dfc412 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,31 @@ +--- +name: Feature request +description: Suggest an idea or enhancement for kubesplit +labels: + - enhancement +body: + - type: markdown + attributes: + value: | + Thanks for suggesting an improvement! + - type: textarea + id: problem + attributes: + label: What problem are you trying to solve? + description: Describe the use case or limitation you're running into. + validations: + required: true + - type: textarea + id: solution + attributes: + label: Proposed solution + description: What would you like kubesplit to do? Include example CLI usage if relevant. + validations: + required: true + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: Any workarounds or alternative approaches you've tried. + validations: + required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..972d94a --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,33 @@ +# Pull Request + +## Description + + + +Fixes # + +## Changes + + + +- + +## How to test + + + +```bash +poe lint:all +poe test +make integration-tests +``` + +## Checklist + +- [ ] PR title follows [Conventional Commits](https://www.conventionalcommits.org/) with a scope (e.g. `feat(cli): ...`) +- [ ] `poe style` run (formatting) +- [ ] `poe lint:all` passes (ruff, pylint, pyright, ty) +- [ ] `poe test` (unit tests) passes +- [ ] `make integration-tests` passes +- [ ] Docs updated under `docs/` (tutorials/how-to/reference/explanation) and registered in `mkdocs.yml`, if this changes CLI flags, behavior, or concepts +- [ ] `pre-commit run --all-files` passes diff --git a/AGENTS.md b/AGENTS.md index aef6399..85da2f2 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,10 +1,10 @@ # Agent Instructions -This document provides context and instructions for AI agents working on this repository (`yamkix`). +This document provides context and instructions for AI agents working on this repository (`kubesplit`). ## Project Overview -- **Repository**: [looztra/yamkix](https://github.com/looztra/yamkix) +- **Repository**: [looztra/kubesplit](https://github.com/looztra/kubesplit) - **Language**: Python (managed via `uv`) - **Main Branch**: `main` @@ -79,9 +79,15 @@ This project uses `poethepoet` for task management. Common tasks: ## Specific Implementation Details -- **Configuration**: Managed in `src/yamkix/config.py`. -- **CLI**: Implemented using `typer` in `src/yamkix/_cli.py`. -- **YAML Handling**: Uses `ruamel.yaml` in `src/yamkix/yamkix.py` and `src/yamkix/yaml_writer.py`. +- **Configuration**: Managed in `src/kubesplit/config.py`. +- **CLI**: Implemented using `typer` in `src/kubesplit/_cli.py`. +- **Conversion**: Multidoc YAML input is split into per-resource descriptors in + `src/kubesplit/convert.py`, wrapped by `K8SDescriptor` in `k8s_descriptor.py`, + grouped by namespace in `namespaces.py`, and written to disk by `output.py`. +- **YAML Formatting**: Delegates the opinionated `ruamel.yaml` output to the + external [`yamkix`](https://github.com/looztra/yamkix) library + (`yamkix.config`, `yamkix.yaml_writer`, `yamkix.comments`) — a project + dependency, not part of this codebase. ## General Guidelines for Agents