Files
directory-content-scanner/pyproject.toml
Kevin Veen-Birkenbach 039481d3a9 This commit introduces a complete structural and architectural refactor of
Analysis-Ready Code (ARC). The project is now fully migrated to a modern
src/-based Python package layout, with proper packaging via pyproject.toml,
a clean Nix flake, and improved CLI entry points.

Major changes:

• Add `src/arc/` package with clean module structure:
  - arc/__init__.py now contains the main() dispatcher and clipboard helpers
  - arc/__main__.py provides a proper `python -m arc` entry point
  - arc/cli.py rewritten with full argparse-based interface
  - arc/code_processor.py modernized and relocated
  - arc/directory_handler.py rewritten with output_stream support
  - arc/tee.py added for multi-stream output (stdout + buffer)

• Remove legacy top-level modules:
  - cli.py
  - directory_handler.py
  - main.py

• Introduce fully PEP-517 compliant pyproject.toml with console script:
  - arc = arc.__main__:main

• Add Nix flake (`flake.nix`) providing:
  - buildPythonApplication package `arc`
  - `nix run .#arc` app
  - development shell with Python + xclip

• Add Makefile overhaul:
  - automatic detection of Nix vs Python installation
  - unified install/uninstall targets
  - Nix wrapper installation into ~/.local/bin
  - improved help text and shell safety

• Add GitHub CI pipelines:
  - ci-python.yml for Python builds + Makefile tests + arc --help
  - ci-nix.yml for Nix builds, flake checks, dev-shell tests, and `nix run .#arc`

• Refactor and extend unit tests:
  - test_arc.py updated for src/ imports
  - new tests: test_cli.py, test_main.py, test_tee.py
  - improved CodeProcessor and DirectoryHandler tests

• Add egg-info metadata for local builds

• Add build/lib/ tree for compatibility with setuptools (generated)

Overall, this commit modernizes ARC into a clean, robust, and fully packaged
Python/Nix hybrid tool, enabling reproducible builds, solid CLI behavior,
testable architecture, and CI automation.

https://chatgpt.com/share/693933a0-e280-800f-9cf0-26036d15be04
2025-12-10 09:47:19 +01:00

53 lines
1.3 KiB
TOML

[build-system]
requires = ["setuptools>=61", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "analysis-ready-code"
version = "0.1.0"
description = "A utility that recursively scans directories and transforms source code into an analysis-ready format, removing comments and optionally compressing content."
readme = "README.md"
license = { text = "AGPL-3.0" }
authors = [
{ name = "Kevin Veen-Birkenbach", email = "kevin@veen.world" }
]
requires-python = ">=3.8"
dependencies = [
# No dependencies needed for ARC
]
# Optional: define console script (if you ever want pip-installable CLI)
# ARC normally uses a symlink, but this keeps it compatible with pip.
[project.scripts]
arc = "arc.__main__:main"
[project.urls]
Homepage = "https://github.com/kevinveenbirkenbach/analysis-ready-code"
Source = "https://github.com/kevinveenbirkenbach/analysis-ready-code"
Issues = "https://github.com/kevinveenbirkenbach/analysis-ready-code/issues"
[tool.setuptools]
package-dir = {"" = "src"}
[tool.setuptools.packages.find]
where = ["src"]
include = ["arc*"]
[tool.setuptools.package-data]
# if you need non-Python files inside packages
arc = ["py.typed"]
[tool.coverage.run]
branch = true
source = ["src/arc"]
[tool.coverage.report]
show_missing = true
[tool.mypy]
python_version = "3.10"
warn_unused_configs = true
ignore_missing_imports = true