lpkg/README.md

145 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🧬 LPKG Lightweight Package Manager
LPKG is a minimalistic package manager written in Rust, designed for fast and simple software management on Unix-like systems. It emphasizes reproducibility and declarative configuration, leveraging **Nix Flakes** for development and deployment.
---
## 🚀 Features
* **Fast & Lightweight** Minimal resource usage and quick operations.
* **Rust-Powered** Safe and concurrent code with Rust.
* **Cross-Platform** Works on Linux and macOS.
* **Declarative Builds** Fully reproducible with Nix Flakes.
* **Simple CLI** Intuitive commands for managing packages.
---
## ⚙️ Installation
### Using Cargo
```bash
cargo install lpkg
```
### Using Nix Flakes
If you have Nix with flakes enabled:
```bash
nix profile install github:lesbiannix/lpkg
```
Or to run without installing:
```bash
nix run github:lesbiannix/lpkg
```
---
## 🧰 Usage
Basic command structure:
```bash
lpkg [command] [package]
```
Common commands:
* `install` Install a package
* `remove` Remove a package
* `update` Update the package list
* `upgrade` Upgrade all installed packages
For detailed usage:
```bash
lpkg --help
```
---
## 🔧 Development with Flakes
Clone the repository:
```bash
git clone https://github.com/lesbiannix/lpkg.git
cd lpkg
```
Enter the flake development shell:
```bash
nix develop
```
Build the project:
```bash
cargo build
```
Run tests:
```bash
cargo test
```
You can also run the project directly in the flake shell:
```bash
nix run
```
### AI metadata tooling
The AI metadata store under `ai/metadata/` comes with a helper CLI to
validate package records against the JSON schema and regenerate
`index.json` after adding new entries:
```bash
cargo run --bin metadata_indexer -- --base-dir . validate
cargo run --bin metadata_indexer -- --base-dir . index
```
Use `--compact` with `index` if you prefer single-line JSON output.
To draft metadata for a specific book page, you can run the harvest mode.
It fetches the XHTML, scrapes the build commands, and emits a schema-
compliant JSON skeleton (pass `--dry-run` to inspect the result without
writing to disk):
```bash
cargo run --bin metadata_indexer -- \
--base-dir . harvest \
--book mlfs \
--page chapter05/binutils-pass1 \
--dry-run
```
Keep the jhalfs manifests current with:
```bash
cargo run --bin metadata_indexer -- --base-dir . refresh
```
Passing `--books mlfs,blfs` restricts the refresh to specific books, and
`--force` bypasses the local cache.
## 📚 Documentation
- [Architecture Overview](docs/ARCHITECTURE.md) high-level tour of the crate
layout, binaries, and supporting modules.
- [Metadata Harvesting Pipeline](docs/METADATA_PIPELINE.md) how the metadata
indexer produces and validates the JSON records under `ai/metadata/`.
- `ai/notes.md` scratchpad for ongoing research tasks (e.g., deeper jhalfs
integration).
---
## 📄 License
LPKG is licensed under the [MIT License](LICENSE).