syncable_cli/analyzer/hadolint/mod.rs
1//! Hadolint-RS: Native Rust Dockerfile Linter
2//!
3//! A Rust translation of the Hadolint Dockerfile linter.
4//!
5//! # Attribution
6//!
7//! This module is a derivative work based on [Hadolint](https://github.com/hadolint/hadolint),
8//! originally written in Haskell by Lukas Martinelli and contributors.
9//!
10//! **Original Project:** <https://github.com/hadolint/hadolint>
11//! **Original License:** GPL-3.0
12//! **Original Copyright:** Copyright (c) 2016-2024 Lukas Martinelli and contributors
13//!
14//! This Rust translation is licensed under GPL-3.0 as required by the original license.
15//! See THIRD_PARTY_NOTICES.md and LICENSE files for full details.
16//!
17//! # Features
18//!
19//! - Dockerfile parsing into an AST
20//! - Configurable linting rules (DL3xxx, DL4xxx)
21//! - ShellCheck-inspired RUN instruction analysis
22//! - Inline pragma support for ignoring rules
23//!
24//! # Example
25//!
26//! ```rust,ignore
27//! use syncable_cli::analyzer::hadolint::{lint, HadolintConfig, LintResult};
28//!
29//! let dockerfile = r#"
30//! FROM ubuntu:latest
31//! RUN apt-get update && apt-get install -y nginx
32//! "#;
33//!
34//! let config = HadolintConfig::default();
35//! let result = lint(dockerfile, &config);
36//!
37//! for failure in result.failures {
38//! println!("{}: {} - {}", failure.line, failure.code, failure.message);
39//! }
40//! ```
41
42pub mod config;
43pub mod formatter;
44pub mod lint;
45pub mod parser;
46pub mod pragma;
47pub mod rules;
48pub mod shell;
49pub mod types;
50
51// Re-export main types and functions
52pub use config::HadolintConfig;
53pub use formatter::{format_result, format_result_to_string, Formatter, OutputFormat};
54pub use lint::{lint, lint_file, LintResult};
55pub use types::{CheckFailure, RuleCode, Severity};