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.