pub mod dependency;
pub mod hash;
pub mod license;
pub mod lockfile;
pub mod manifest;
pub mod relative_path;
pub mod signing;
mod strict_json;
pub mod symbolic_path;
pub mod tree;
pub mod version_requirement;
pub use crate::dependency::DependencyName;
pub use crate::dependency::DependencyNameError;
pub use crate::dependency::DependencySource;
pub use crate::dependency::DependencySourceError;
pub use crate::dependency::GitSelector;
pub use crate::hash::ContentHash;
pub use crate::hash::HashError;
pub use crate::hash::Hasher;
pub use crate::license::LicenseError;
pub use crate::license::LicenseExpression;
pub use crate::lockfile::DependencyEntry;
pub use crate::lockfile::DependencyMap;
pub use crate::lockfile::GitCommit;
pub use crate::lockfile::GitCommitError;
pub use crate::lockfile::LOCKFILE_VERSION;
pub use crate::lockfile::Lockfile;
pub use crate::lockfile::LockfileError;
pub use crate::lockfile::ResolvedSource;
pub use crate::manifest::Manifest;
pub use crate::manifest::ManifestError;
pub use crate::manifest::Readme;
pub use crate::manifest::Tool;
pub use crate::relative_path::RelativePath;
pub use crate::relative_path::RelativePathError;
pub use crate::signing::KeyError;
pub use crate::signing::ModuleSignature;
pub use crate::signing::Signature;
pub use crate::signing::SignatureError;
pub use crate::signing::SignatureFileError;
pub use crate::signing::SigningKey;
pub use crate::signing::VerifyError;
pub use crate::signing::VerifyingKey;
pub use crate::symbolic_path::SymbolicPath;
pub use crate::symbolic_path::SymbolicPathError;
pub use crate::tree::TreeError;
pub use crate::tree::validate_tree;
pub use crate::version_requirement::VersionRequirement;
pub use crate::version_requirement::VersionRequirementError;
pub const MANIFEST_FILENAME: &str = "module.json";
pub const LOCKFILE_FILENAME: &str = "module-lock.json";
pub const SIGNATURE_FILENAME: &str = "module.sig";
pub const DEFAULT_ENTRYPOINT_FILENAME: &str = "index.wdl";
pub const DEFAULT_README_FILENAME: &str = "README.md";
pub(crate) fn starts_with_windows_drive(s: &str) -> bool {
let mut bytes = s.bytes();
matches!(
(bytes.next(), bytes.next()),
(Some(b'A'..=b'Z' | b'a'..=b'z'), Some(b':'))
)
}