pub struct GradleParser;Expand description
Parses Gradle build files (build.gradle, build.gradle.kts).
Extracts dependencies from Gradle build scripts using a custom token-based lexer and recursive descent parser. Supports both Groovy and Kotlin DSL syntax.
§Supported Patterns
- String notation:
implementation 'group:name:version' - Named parameters:
implementation group: 'x', name: 'y', version: 'z' - Map format:
implementation([group: 'x', name: 'y']) - Nested functions:
implementation(enforcedPlatform("...")) - Project references:
implementation(project(":module")) - String interpolation:
implementation("group:name:${version}")
§Implementation
Uses a custom token-based lexer (870 lines) instead of tree-sitter for:
- Lighter binary size (no external parser dependencies)
- Easier maintenance for DSL-specific quirks
- Better error messages for malformed input
Typical usage is calling GradleParser::extract_first_package() on a
build.gradle or build.gradle.kts file and then inspecting the returned
dependency list.
Trait Implementations§
Source§impl PackageParser for GradleParser
impl PackageParser for GradleParser
Source§const PACKAGE_TYPE: PackageType = PackageType::Maven
const PACKAGE_TYPE: PackageType = PackageType::Maven
Package URL type identifier for this parser (e.g., PackageType::Npm, PackageType::Pypi).
Source§fn metadata() -> Vec<ParserMetadata>
fn metadata() -> Vec<ParserMetadata>
Returns documentation metadata for the file-format surfaces this parser handles. Read more
Source§fn is_match(path: &Path) -> bool
fn is_match(path: &Path) -> bool
Checks if the given file path matches this parser’s expected format. Read more
Source§fn extract_packages(path: &Path) -> Vec<PackageData>
fn extract_packages(path: &Path) -> Vec<PackageData>
Extracts all packages from the given file path. Read more
Source§fn extract_first_package(path: &Path) -> PackageData
fn extract_first_package(path: &Path) -> PackageData
Returns the first package from
extract_packages(),
or a default PackageData if the file contains no packages.Auto Trait Implementations§
impl Freeze for GradleParser
impl RefUnwindSafe for GradleParser
impl Send for GradleParser
impl Sync for GradleParser
impl Unpin for GradleParser
impl UnsafeUnpin for GradleParser
impl UnwindSafe for GradleParser
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<U, T> ToOwnedObj<U> for Twhere
U: FromObjRef<T>,
impl<U, T> ToOwnedObj<U> for Twhere
U: FromObjRef<T>,
Source§fn to_owned_obj(&self, data: FontData<'_>) -> U
fn to_owned_obj(&self, data: FontData<'_>) -> U
Convert this type into
T, using the provided data to resolve any offsets.