| Crates.io | confignet |
| lib.rs | confignet |
| version | 0.0.3 |
| created_at | 2025-05-10 19:30:39.103207+00 |
| updated_at | 2025-05-11 09:27:02.055987+00 |
| description | Classifier to detect CI/CD config files based on file name and MIME label. |
| homepage | |
| repository | https://github.com/kurajo/confignet |
| max_upload_size | |
| id | 1668735 |
| size | 21,433 |
📁 A lightweight configuration file classifier for CI/CD tools — fast, pluggable, and embeddable.
Confignet is a Rust library and optional CLI tool that takes a file path and MIME type, then classifies whether the file is related to CI/CD tooling or not. It's designed for projects like Dodo that need to process config files across a wide variety of languages and tools.
Add it to your Cargo.toml:
[dependencies]
confignet = "0.1"
Use it in your Rust project:
use confignet::{ConfigClassifier, ClassifiedResult};
let classifier = ConfigClassifier::from_csv("data/labeled/ci_cd.csv")?;
let file_path = "path/to/Cargo.toml";
let mime_type = "text/plain";
if let Some(result) = classifier.classify(file_path, mime_type) {
println!("Is CI/CD: {}", result.is_ci_cd);
println!("File: {}", result.file_path);
}
You can run Confignet from the command line:
cargo run -- path/to/file.yaml application/x-yaml
This prints a structured JSON result:
{
"file_name": "file.yaml",
"file_path": "./file.yaml",
"is_ci_cd": true
}
Confignet reads a CSV like this:
file_name,mime_label,config_type
Cargo.toml,text/plain,ci_cd
.github/workflows/main.yml,application/x-yaml,ci_cd
Makefile,text/x-makefile,non_config
mime\_label: MIME type reported by file detectors like magikaconfig\_type: "ci_cd" or "non_config"Confignet is designed to be part of the Dodo system:
Magika → Confignet → Parser (for CI/CD files) → dodo.toml
Confignet handles whether a file is CI/CD-related based on name and MIME type, enabling smarter filtering before parsing begins.
./<file_name>.Run tests:
cargo test
Try the CLI:
cargo run -- path/to/file.rs text/plain
MIT and Apache 2.0
Built by Kurajo 🚀