VersionResolutionService

Struct VersionResolutionService 

Source
pub struct VersionResolutionService { /* private fields */ }
Expand description

Service for version resolution and worktree management.

Provides high-level orchestration for version constraint resolution, SHA resolution, and worktree preparation for Git-backed dependencies.

Implementations§

Source§

impl VersionResolutionService

Source

pub fn new(cache: Cache) -> Self

Create a new version resolution service with default concurrency.

Source

pub fn with_concurrency(cache: Cache, max_concurrency: usize) -> Self

Create a new version resolution service with explicit concurrency limit.

Source

pub async fn pre_sync_sources( &self, core: &ResolutionCore, deps: &[(String, ResourceDependency)], progress: Option<Arc<MultiPhaseProgress>>, ) -> Result<()>

Pre-sync all source repositories needed for dependencies.

This performs all Git network operations upfront:

  1. Clone/fetch source repositories
  2. Resolve version constraints to commit SHAs
  3. Create worktrees for resolved commits
§Arguments
  • core - The resolution core with cache and source manager
  • deps - All dependencies that need sources synced
  • progress - Optional progress tracker for UI updates
Source

pub fn get_prepared_version( &self, group_key: &str, ) -> Option<PreparedSourceVersion>

Get a prepared version by source and version.

§Arguments
  • group_key - The key in format “source::version”
§Returns

The prepared version info with worktree path and resolved commit (if Ready)

Source

pub fn prepared_versions(&self) -> &Arc<DashMap<String, PreparedVersionState>>

Get the prepared versions map (raw state).

Returns a reference to the DashMap of prepared source version states. Most callers should use prepared_versions_ready() instead.

Source

pub fn prepared_versions_arc( &self, ) -> Arc<DashMap<String, PreparedVersionState>>

Get a clone of the prepared versions map Arc (raw state).

Returns a cloned Arc to the DashMap of prepared source version states. Most callers should use prepared_versions_ready_arc() instead.

Source

pub fn prepared_versions_ready( &self, ) -> Arc<DashMap<String, PreparedSourceVersion>>

Get a snapshot of only the Ready prepared versions.

Creates a new DashMap containing only versions that are Ready (not Preparing). This is safe for use by other code that doesn’t need to participate in the synchronization protocol.

Source

pub fn prepared_versions_ready_arc( &self, ) -> Arc<DashMap<String, PreparedSourceVersion>>

Get a snapshot Arc of only the Ready prepared versions.

Alias for prepared_versions_ready() for compatibility.

Source

pub async fn get_or_prepare_version( &self, core: &ResolutionCore, source_name: &str, version: Option<&str>, ) -> Result<PreparedSourceVersion>

Get or prepare a version, coordinating concurrent requests.

This method ensures that only one task prepares a given version at a time. Other tasks requesting the same version will wait for the first task to complete. This prevents the race condition where multiple tasks simultaneously try to prepare the same version.

§Arguments
  • core - The resolution core with cache and source manager
  • source_name - Name of the source repository
  • version - Optional version constraint (None = HEAD)
§Returns

The prepared version info with worktree path and resolved commit

Source

pub async fn prepare_additional_version( &self, core: &ResolutionCore, source_name: &str, version: Option<&str>, ) -> Result<()>

Prepare an additional version on-demand without clearing existing ones.

This is a convenience wrapper around get_or_prepare_version that discards the result. Prefer using get_or_prepare_version directly when you need the prepared version info.

§Arguments
  • core - The resolution core with cache and source manager
  • source_name - Name of the source repository
  • version - Optional version constraint (None = HEAD)
Source

pub async fn get_available_versions( _core: &ResolutionCore, repo_path: &Path, ) -> Result<Vec<String>>

Get available versions (tags/branches) for a repository.

§Arguments
  • core - The resolution core with cache
  • repo_path - Path to bare repository
§Returns

List of available version strings

Source

pub fn get_bare_repo_path(&self, source: &str) -> Option<PathBuf>

Get the bare repository path for a source.

Returns None if the source hasn’t been synced yet.

§Arguments
  • source - Name of the source repository

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more