pub trait SyncProvider: Send + Sync {
// Required methods
fn name(&self) -> &'static str;
fn description(&self) -> &'static str;
fn has_config(&self, manifest: &Base) -> bool;
fn sync_path<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
path: &'life1 Path,
ctx: &'life2 SyncContext<'life3>,
) -> Pin<Box<dyn Future<Output = Result<SyncResult>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait;
fn sync_all<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 SyncContext<'life2>,
) -> Pin<Box<dyn Future<Output = Result<SyncResult>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait;
}Expand description
Trait for sync providers.
Each provider (ignore, cubes, codeowners, ci) implements this trait to handle synchronization of its specific file type.
§Implementors
cuenv-ignore: Generates .gitignore, .dockerignore, etc.cuenv-codeowners: Generates CODEOWNERS filescuenv-codegen: Generates files from CUE codegen templatescuenv-ci: Generates CI workflow files
Required Methods§
Sourcefn name(&self) -> &'static str
fn name(&self) -> &'static str
Name of the sync provider (e.g., “ignore”, “codegen”).
Used as the CLI subcommand name.
Sourcefn description(&self) -> &'static str
fn description(&self) -> &'static str
Description for CLI help.
Sourcefn has_config(&self, manifest: &Base) -> bool
fn has_config(&self, manifest: &Base) -> bool
Check if this provider has configuration for the given manifest.
Used to determine which providers to run when syncing all.
Sourcefn sync_path<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
path: &'life1 Path,
ctx: &'life2 SyncContext<'life3>,
) -> Pin<Box<dyn Future<Output = Result<SyncResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn sync_path<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
path: &'life1 Path,
ctx: &'life2 SyncContext<'life3>,
) -> Pin<Box<dyn Future<Output = Result<SyncResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Sync files for a single path within the module.
The path should be relative to the module root.
Sourcefn sync_all<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 SyncContext<'life2>,
) -> Pin<Box<dyn Future<Output = Result<SyncResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn sync_all<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
ctx: &'life1 SyncContext<'life2>,
) -> Pin<Box<dyn Future<Output = Result<SyncResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Sync all applicable paths in the module.
Iterates through all instances in the module that have configuration for this provider and syncs each one.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".