rename flake_reference -> flakeref
This commit is contained in:
parent
9f90e0c323
commit
378569ff24
4 changed files with 107 additions and 110 deletions
|
|
@ -1,104 +0,0 @@
|
||||||
use std::ffi::{c_char, c_void};
|
|
||||||
use std::ptr::{NonNull, null_mut};
|
|
||||||
|
|
||||||
use super::{FetchersSettings, FlakeRefParseFlags, FlakeSettings};
|
|
||||||
use crate::NixideError;
|
|
||||||
use crate::errors::{ErrorContext, new_nixide_error};
|
|
||||||
use crate::sys;
|
|
||||||
use crate::util::wrap;
|
|
||||||
use crate::util::wrappers::AsInnerPtr;
|
|
||||||
|
|
||||||
pub struct FlakeRef {
|
|
||||||
inner: NonNull<sys::NixFlakeReference>,
|
|
||||||
fragment: String,
|
|
||||||
|
|
||||||
fetch_settings: FetchersSettings,
|
|
||||||
flake_settings: FlakeSettings,
|
|
||||||
}
|
|
||||||
|
|
||||||
// impl Clone for FlakeReference {
|
|
||||||
// fn clone(&self) -> Self {
|
|
||||||
// wrap::nix_fn!(|ctx: &ErrorContext| unsafe {
|
|
||||||
// sys::nix_gc_incref(ctx.as_ptr(), self.as_ptr() as *mut c_void);
|
|
||||||
// })
|
|
||||||
// .unwrap();
|
|
||||||
//
|
|
||||||
// Self {
|
|
||||||
// inner: self.inner.clone(),
|
|
||||||
// fragment: self.fragment.clone(),
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
impl Drop for FlakeRef {
|
|
||||||
fn drop(&mut self) {
|
|
||||||
unsafe {
|
|
||||||
sys::nix_flake_reference_free(self.as_ptr());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl AsInnerPtr<sys::NixFlakeReference> for FlakeRef {
|
|
||||||
#[inline]
|
|
||||||
unsafe fn as_ptr(&self) -> *mut sys::NixFlakeReference {
|
|
||||||
self.inner.as_ptr()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
unsafe fn as_ref(&self) -> &sys::NixFlakeReference {
|
|
||||||
unsafe { self.inner.as_ref() }
|
|
||||||
}
|
|
||||||
|
|
||||||
#[inline]
|
|
||||||
unsafe fn as_mut(&mut self) -> &mut sys::NixFlakeReference {
|
|
||||||
unsafe { self.inner.as_mut() }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl FlakeRef {
|
|
||||||
/// Parse a flake reference from a string.
|
|
||||||
/// The string must be a valid flake reference, such as `github:owner/repo`.
|
|
||||||
/// It may also be suffixed with a `#` and a fragment, such as `github:owner/repo#something`,
|
|
||||||
/// in which case, the returned string will contain the fragment.
|
|
||||||
pub fn parse<S: AsRef<str>>(reference: S) -> Result<FlakeRef, NixideError> {
|
|
||||||
let fetch_settings = FetchersSettings::new()?;
|
|
||||||
let flake_settings = FlakeSettings::new()?;
|
|
||||||
let parse_flags = FlakeRefParseFlags::new(&flake_settings)?;
|
|
||||||
|
|
||||||
let mut ptr: *mut sys::NixFlakeReference = null_mut();
|
|
||||||
let fragment = wrap::nix_string_callback!(
|
|
||||||
|callback, userdata: *mut __UserData, ctx: &ErrorContext| unsafe {
|
|
||||||
sys::nix_flake_reference_and_fragment_from_string(
|
|
||||||
ctx.as_ptr(),
|
|
||||||
fetch_settings.as_ptr(),
|
|
||||||
flake_settings.as_ptr(),
|
|
||||||
parse_flags.as_ptr(),
|
|
||||||
reference.as_ref().as_ptr() as *const c_char,
|
|
||||||
reference.as_ref().len(),
|
|
||||||
&mut ptr,
|
|
||||||
Some(callback),
|
|
||||||
userdata as *mut c_void,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
)?;
|
|
||||||
|
|
||||||
match NonNull::new(ptr) {
|
|
||||||
Some(inner) => Ok(FlakeRef {
|
|
||||||
inner,
|
|
||||||
fragment,
|
|
||||||
fetch_settings,
|
|
||||||
flake_settings,
|
|
||||||
}),
|
|
||||||
None => Err(new_nixide_error!(NullPtr)),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// XXX: TODO: is it possible to get the URI string itself? (minus the fragment part?)
|
|
||||||
/// Get a shared reference to the URI fragment part.
|
|
||||||
///
|
|
||||||
#[inline]
|
|
||||||
#[allow(unused)]
|
|
||||||
pub fn fragment(&self) -> &str {
|
|
||||||
&self.fragment
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,3 +1,104 @@
|
||||||
pub struct FlakeRef {}
|
use std::ffi::{c_char, c_void};
|
||||||
|
use std::ptr::{NonNull, null_mut};
|
||||||
|
|
||||||
impl FlakeRef {}
|
use super::{FetchersSettings, FlakeRefParseFlags, FlakeSettings};
|
||||||
|
use crate::NixideError;
|
||||||
|
use crate::errors::{ErrorContext, new_nixide_error};
|
||||||
|
use crate::sys;
|
||||||
|
use crate::util::wrap;
|
||||||
|
use crate::util::wrappers::AsInnerPtr;
|
||||||
|
|
||||||
|
pub struct FlakeRef {
|
||||||
|
inner: NonNull<sys::NixFlakeReference>,
|
||||||
|
fragment: String,
|
||||||
|
|
||||||
|
fetch_settings: FetchersSettings,
|
||||||
|
flake_settings: FlakeSettings,
|
||||||
|
}
|
||||||
|
|
||||||
|
// impl Clone for FlakeReference {
|
||||||
|
// fn clone(&self) -> Self {
|
||||||
|
// wrap::nix_fn!(|ctx: &ErrorContext| unsafe {
|
||||||
|
// sys::nix_gc_incref(ctx.as_ptr(), self.as_ptr() as *mut c_void);
|
||||||
|
// })
|
||||||
|
// .unwrap();
|
||||||
|
//
|
||||||
|
// Self {
|
||||||
|
// inner: self.inner.clone(),
|
||||||
|
// fragment: self.fragment.clone(),
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
impl Drop for FlakeRef {
|
||||||
|
fn drop(&mut self) {
|
||||||
|
unsafe {
|
||||||
|
sys::nix_flake_reference_free(self.as_ptr());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl AsInnerPtr<sys::NixFlakeReference> for FlakeRef {
|
||||||
|
#[inline]
|
||||||
|
unsafe fn as_ptr(&self) -> *mut sys::NixFlakeReference {
|
||||||
|
self.inner.as_ptr()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
unsafe fn as_ref(&self) -> &sys::NixFlakeReference {
|
||||||
|
unsafe { self.inner.as_ref() }
|
||||||
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
unsafe fn as_mut(&mut self) -> &mut sys::NixFlakeReference {
|
||||||
|
unsafe { self.inner.as_mut() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FlakeRef {
|
||||||
|
/// Parse a flake reference from a string.
|
||||||
|
/// The string must be a valid flake reference, such as `github:owner/repo`.
|
||||||
|
/// It may also be suffixed with a `#` and a fragment, such as `github:owner/repo#something`,
|
||||||
|
/// in which case, the returned string will contain the fragment.
|
||||||
|
pub fn parse<S: AsRef<str>>(reference: S) -> Result<FlakeRef, NixideError> {
|
||||||
|
let fetch_settings = FetchersSettings::new()?;
|
||||||
|
let flake_settings = FlakeSettings::new()?;
|
||||||
|
let parse_flags = FlakeRefParseFlags::new(&flake_settings)?;
|
||||||
|
|
||||||
|
let mut ptr: *mut sys::NixFlakeReference = null_mut();
|
||||||
|
let fragment = wrap::nix_string_callback!(
|
||||||
|
|callback, userdata: *mut __UserData, ctx: &ErrorContext| unsafe {
|
||||||
|
sys::nix_flake_reference_and_fragment_from_string(
|
||||||
|
ctx.as_ptr(),
|
||||||
|
fetch_settings.as_ptr(),
|
||||||
|
flake_settings.as_ptr(),
|
||||||
|
parse_flags.as_ptr(),
|
||||||
|
reference.as_ref().as_ptr() as *const c_char,
|
||||||
|
reference.as_ref().len(),
|
||||||
|
&mut ptr,
|
||||||
|
Some(callback),
|
||||||
|
userdata as *mut c_void,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)?;
|
||||||
|
|
||||||
|
match NonNull::new(ptr) {
|
||||||
|
Some(inner) => Ok(FlakeRef {
|
||||||
|
inner,
|
||||||
|
fragment,
|
||||||
|
fetch_settings,
|
||||||
|
flake_settings,
|
||||||
|
}),
|
||||||
|
None => Err(new_nixide_error!(NullPtr)),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// XXX: TODO: is it possible to get the URI string itself? (minus the fragment part?)
|
||||||
|
/// Get a shared reference to the URI fragment part.
|
||||||
|
///
|
||||||
|
#[inline]
|
||||||
|
#[allow(unused)]
|
||||||
|
pub fn fragment(&self) -> &str {
|
||||||
|
&self.fragment
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
mod fetchers_settings;
|
mod fetchers_settings;
|
||||||
mod flake_lock_flags;
|
mod flake_lock_flags;
|
||||||
mod flake_reference;
|
|
||||||
mod flake_reference_parse_flags;
|
|
||||||
mod flake_settings;
|
mod flake_settings;
|
||||||
|
mod flakeref;
|
||||||
|
mod flakeref_parse_flags;
|
||||||
mod locked_flake;
|
mod locked_flake;
|
||||||
|
|
||||||
use fetchers_settings::FetchersSettings;
|
use fetchers_settings::FetchersSettings;
|
||||||
use flake_lock_flags::{FlakeLockFlags, FlakeLockMode};
|
use flake_lock_flags::{FlakeLockFlags, FlakeLockMode};
|
||||||
use flake_reference::FlakeRef;
|
|
||||||
use flake_reference_parse_flags::FlakeRefParseFlags;
|
|
||||||
pub use flake_settings::FlakeSettings;
|
pub use flake_settings::FlakeSettings;
|
||||||
|
use flakeref::FlakeRef;
|
||||||
|
use flakeref_parse_flags::FlakeRefParseFlags;
|
||||||
pub use locked_flake::LockedFlake;
|
pub use locked_flake::LockedFlake;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue