deps_go/lib.rs
1//! Go module ecosystem support for deps-lsp.
2//!
3//! This crate provides parsing, registry access, and LSP features for Go modules (go.mod files).
4//!
5//! # Features
6//!
7//! - Parse go.mod files with accurate position tracking
8//! - Fetch version data from proxy.golang.org
9//! - Generate LSP features (inlay hints, hover, completions)
10//! - Support for go.mod directives: require, replace, exclude
11//!
12//! # Example
13//!
14//! ```no_run
15//! use deps_go::parse_go_mod;
16//! use tower_lsp_server::ls_types::Uri;
17//!
18//! let content = r#"
19//! module example.com/myapp
20//!
21//! go 1.21
22//!
23//! require github.com/gin-gonic/gin v1.9.1
24//! "#;
25//!
26//! let uri = Uri::from_file_path("/test/go.mod").unwrap();
27//! let result = parse_go_mod(content, &uri).unwrap();
28//! assert_eq!(result.dependencies.len(), 1);
29//! ```
30
31pub mod ecosystem;
32pub mod error;
33pub mod formatter;
34pub mod lockfile;
35pub mod parser;
36pub mod registry;
37pub mod types;
38pub mod version;
39
40// Re-export commonly used types
41pub use ecosystem::GoEcosystem;
42pub use error::{GoError, Result};
43pub use formatter::GoFormatter;
44pub use lockfile::{GoSumParser, parse_go_sum};
45pub use parser::{GoParseResult, parse_go_mod};
46pub use registry::{GoRegistry, package_url};
47pub use types::{GoDependency, GoDirective, GoMetadata, GoVersion};
48pub use version::{
49 base_version_from_pseudo, compare_versions, escape_module_path, is_pseudo_version,
50};