Skip to main content

rustferry_core/
lib.rs

1//! Shared configuration, validation, paths, and diagnostics for cargo-ferry.
2
3mod artifact;
4mod assets;
5mod config;
6mod file_streams;
7mod filesystem_identity;
8mod naming;
9#[cfg(windows)]
10mod windows_environment;
11
12#[doc(hidden)]
13pub mod process_control;
14/// Atomic private-directory creation and handle validation on Windows.
15pub mod windows_private_directory;
16
17pub use artifact::{ArtifactDigest, ArtifactDigestError, ArtifactDigestKind, digest_artifact};
18pub use assets::{AssetError, PngMetadata, ProjectAssets};
19pub use config::{
20    AndroidAbi, AndroidConfig, AndroidLiveActivityFallback, AppConfig, AppWindowConfig,
21    BoolCapability, CapabilitiesConfig, ConfigError, DeepLinksCapability, ExtensionsConfig,
22    FerryConfig, IosConfig, LiveActivityConfig, NetworkCapability, NetworkMode,
23    NotificationCapability, Orientation, PermissionConfig, PermissionsConfig, TargetPlatform,
24    Theme, ValidationIssue, WidgetConfig,
25};
26pub use file_streams::{
27    RegularFileStreamError, RegularFileStreamErrorKind, verify_regular_file_has_no_named_streams,
28};
29#[cfg(unix)]
30#[doc(hidden)]
31pub use filesystem_identity::retained_directory_is_unlinked;
32pub use filesystem_identity::{
33    DirectoryFilesystemIdentity, DirectoryIdentityError, DirectoryIdentityErrorKind,
34    DirectoryIdentityOperation, RegularFileFilesystemIdentity, RetainedDirectoryIdentity,
35    RetainedRegularFileIdentity, directory_identity_from_file, regular_file_identity_from_file,
36    verify_directory_identity, verify_regular_file_identity,
37};
38#[cfg(windows)]
39pub use filesystem_identity::{ExactRegularFileRemoval, open_regular_file_for_exact_removal};
40pub use naming::{
41    NamingError, ProjectNames, derive_project_names, validate_application_identifier,
42};
43#[cfg(windows)]
44pub use windows_environment::windows_system_root;
45
46/// Current stable `ferry.toml` schema version.
47pub const CONFIG_SCHEMA_VERSION: u32 = 1;
48
49/// Product names live here so a future rename does not leak across generators.
50pub mod brand {
51    /// Cargo subcommand name.
52    pub const CLI_NAME: &str = "cargo-ferry";
53    /// User-facing product name.
54    pub const DISPLAY_NAME: &str = "RustFerry";
55    /// Build output directory below Cargo's target directory.
56    pub const TARGET_DIRECTORY: &str = "ferry";
57    /// Runtime library name used in Rust source.
58    pub const RUNTIME_CRATE: &str = "rustferry";
59    /// Unique registry package that provides [`RUNTIME_CRATE`].
60    pub const RUNTIME_PACKAGE: &str = "rustferry";
61}