oceanpkg/drop/source/
mod.rs1use url::Url;
4
5pub mod git;
6
7pub use self::git::Git;
8
9use self::git::Ref;
10
11const OCEAN_REGISTRY: &str = "https://registry.oceanpkg.org";
12
13lazy_static! {
14 static ref OCEAN_REGISTRY_SOURCE: Source = Source::from_registry(
15 Url::parse(OCEAN_REGISTRY).unwrap()
16 );
17}
18
19#[derive(Clone, Debug, PartialEq, Eq)]
21pub struct Source {
22 url: Url,
23 kind: Kind,
24}
25
26impl Source {
27 #[inline]
29 pub fn main_registry() -> &'static Self {
30 &OCEAN_REGISTRY_SOURCE
31 }
32
33 #[inline]
35 pub const fn from_registry(url: Url) -> Self {
36 Source { url, kind: Kind::Registry }
37 }
38
39 #[inline]
41 pub fn from_git(url: Url) -> Self {
42 Self::from_git_at(url, Ref::master())
43 }
44
45 #[inline]
47 pub const fn from_git_at(url: Url, reference: Ref) -> Self {
48 Source { url, kind: Kind::Git(reference) }
49 }
50
51 #[inline]
53 pub const fn url(&self) -> &Url {
54 &self.url
55 }
56
57 #[inline]
59 pub const fn kind(&self) -> &Kind {
60 &self.kind
61 }
62}
63
64#[derive(Clone, Debug, PartialEq, Eq)]
66pub enum Kind {
67 Git(Ref),
70 Registry,
72}