pub struct Store { /* private fields */ }Expand description
Resolves and (lazily) creates the standard ~/.stryke/... layout.
Implementations§
Source§impl Store
impl Store
Sourcepub fn user_default() -> PkgResult<Store>
pub fn user_default() -> PkgResult<Store>
Construct a Store rooted at ~/.stryke/. Honors the STRYKE_HOME
environment variable for tests and CI sandboxes.
Sourcepub fn at(root: impl Into<PathBuf>) -> Store
pub fn at(root: impl Into<PathBuf>) -> Store
Construct a Store rooted at an explicit path (used by tests).
Sourcepub fn package_dir(&self, name: &str, version: &str) -> PathBuf
pub fn package_dir(&self, name: &str, version: &str) -> PathBuf
Path where a package extraction lives: ~/.stryke/store/{name}@{version}/.
Sourcepub fn ensure_layout(&self) -> PkgResult<()>
pub fn ensure_layout(&self) -> PkgResult<()>
Ensure the full directory layout exists. Idempotent. Called eagerly by
s install; tests exercise it directly.
Sourcepub fn has_package(&self, name: &str, version: &str) -> bool
pub fn has_package(&self, name: &str, version: &str) -> bool
True if a name@version extraction already exists in the store.
Sourcepub fn install_path_dep(
&self,
name: &str,
version: &str,
src: &Path,
_manifest: &Manifest,
) -> PkgResult<PathBuf>
pub fn install_path_dep( &self, name: &str, version: &str, src: &Path, _manifest: &Manifest, ) -> PkgResult<PathBuf>
Copy a path-dep into the store as name@version using the canonical
release-tarball layout, so s install -g . produces a byte-for-byte
equivalent on-disk shape to s install -g github.com/<owner>/<repo>.
Exactly three things land in the store and nothing else (no
target/, .git/, vendor/, tests/, root-level README* /
LICENSE* / CHANGELOG*, editor scratch, or out-of-tree [bin]
paths — the GitHub release tarball doesn’t ship those either):
stryke.toml(required)lib/subtree (recursive, if present)bin/subtree (recursive, if present)
Packages with [bin] entries pointing outside bin/ are rejected by
the release-tarball staging step (every shipped binary lives under
bin/<name>.stk); the path install enforces the same rule by simply
not copying anything outside the canonical subtrees, so an
out-of-tree [bin] path becomes a no-op at install time rather than
a store-layout divergence.
Existing destination is removed first so re-installs see fresh content.
Auto Trait Implementations§
impl Freeze for Store
impl RefUnwindSafe for Store
impl Send for Store
impl Sync for Store
impl Unpin for Store
impl UnsafeUnpin for Store
impl UnwindSafe for Store
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.Source§impl<U, T> ToOwnedObj<U> for Twhere
U: FromObjRef<T>,
impl<U, T> ToOwnedObj<U> for Twhere
U: FromObjRef<T>,
Source§fn to_owned_obj(&self, data: FontData<'_>) -> U
fn to_owned_obj(&self, data: FontData<'_>) -> U
T, using the provided data to resolve any offsets.