perl_lsp_tooling/lib.rs
1//! Tooling integration for Perl LSP
2//!
3//! This crate provides abstractions for integrating with external Perl tooling
4//! such as perltidy (formatting) and perlcritic (linting).
5//!
6//! ## Features
7//!
8//! - Subprocess execution abstraction
9//! - Mock implementations for testing
10//! - WASM compatibility
11//!
12//! ## Usage
13//!
14//! ```rust,ignore
15//! use perl_lsp_tooling::{SubprocessRuntime, OsSubprocessRuntime};
16//!
17//! let runtime = OsSubprocessRuntime::new();
18//! let output = runtime.run_command("perltidy", &["-st"], Some(b"code"))?;
19//! ```
20
21#![deny(unsafe_code)]
22#![cfg_attr(test, allow(clippy::panic, clippy::unwrap_used, clippy::expect_used))]
23#![warn(rust_2018_idioms)]
24#![warn(missing_docs)]
25#![warn(clippy::all)]
26#![allow(clippy::empty_line_after_outer_attr)]
27
28/// Performance optimizations for large projects.
29pub mod performance {
30 pub use perl_lsp_performance::*;
31}
32/// Perl::Critic integration for code quality analysis.
33pub mod perl_critic;
34/// Perltidy integration for code formatting.
35pub mod perltidy;
36
37pub use perl_subprocess_runtime::{SubprocessError, SubprocessOutput, SubprocessRuntime};
38
39#[cfg(not(target_arch = "wasm32"))]
40pub use perl_subprocess_runtime::OsSubprocessRuntime;
41
42/// Test mock implementations for subprocess runtimes.
43pub mod mock {
44 pub use perl_subprocess_runtime::mock::*;
45}