Add support for sourcehut links (#517)
* Add support for SourceHut flakes * Update flake-info/README.md Co-authored-by: Naïm Favier <n@monade.li> Co-authored-by: Naïm Favier <n@monade.li>
This commit is contained in:
parent
087925bbb2
commit
9e5f095369
|
@ -63,7 +63,7 @@ application.
|
||||||
|
|
||||||
To add your own flakes to the search index edit [./flakes/manual.toml](./flakes/manual.toml).
|
To add your own flakes to the search index edit [./flakes/manual.toml](./flakes/manual.toml).
|
||||||
|
|
||||||
Possible types are `github`, `gitlab`, and `git` (which is the fallback for any kind of git repository but requires to set a revision key manually as of now).
|
Possible types are `github`, `gitlab`, `sourcehut`, and `git` (which is the fallback for any kind of git repository but requires to set a revision key manually as of now).
|
||||||
|
|
||||||
To test whether your flake is compatible with nix flake-info you can try running `flake-info` against it
|
To test whether your flake is compatible with nix flake-info you can try running `flake-info` against it
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,8 @@ The `<flake>` argument should contain a valid reference to a flake. It accepts a
|
||||||
|
|
||||||
> use git+<url> to checkout a git repository at <url>
|
> use git+<url> to checkout a git repository at <url>
|
||||||
> use /local/absolute/path or ./relative/path to load a local source
|
> use /local/absolute/path or ./relative/path to load a local source
|
||||||
> use gitlab:<user>/<repo>/github:<user>/<repo> to shortcut gitlab or github repositories
|
> use gitlab:<user>/<repo>/github:<user>/<repo>/sourcehut:<user>/<repo> to
|
||||||
|
> shortcut gitlab, github or sourcehut repositories
|
||||||
|
|
||||||
|
|
||||||
Optionally, analyzing can be done in a temporary store enabled by the `--temp-store` option.
|
Optionally, analyzing can be done in a temporary store enabled by the `--temp-store` option.
|
||||||
|
@ -97,7 +98,7 @@ $ flake-info nixpkgs nixos-21.05
|
||||||
|
|
||||||
to perform a bulk import grouping multiple inputs under the same name/index use the group command.
|
to perform a bulk import grouping multiple inputs under the same name/index use the group command.
|
||||||
|
|
||||||
It expects a json file as input that contains references to flakes or nixpkgs. If those resources are on github or gitlab they can be extended with more meta information including pinning the commit hash/ref.
|
It expects a JSON file as input that contains references to flakes or nixpkgs. If those resources are on GitHub, GitLab or SourceHut they can be extended with more meta information including pinning the commit hash/ref.
|
||||||
|
|
||||||
The second argument is the group name that is used to provide the index name.
|
The second argument is the group name that is used to provide the index name.
|
||||||
|
|
||||||
|
|
|
@ -33,19 +33,21 @@ impl Flake {
|
||||||
Repo::Git { .. } => Default::default(),
|
Repo::Git { .. } => Default::default(),
|
||||||
Repo::GitHub { repo, .. } => repo.clone(),
|
Repo::GitHub { repo, .. } => repo.clone(),
|
||||||
Repo::Gitlab { repo, .. } => repo.clone(),
|
Repo::Gitlab { repo, .. } => repo.clone(),
|
||||||
|
Repo::SourceHut { repo, .. } => repo.clone(),
|
||||||
};
|
};
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Information about the flake origin
|
/// Information about the flake origin
|
||||||
/// Supports (local/raw) Git, GitHub and Gitlab repos
|
/// Supports (local/raw) Git, GitHub, SourceHut and Gitlab repos
|
||||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||||
#[serde(tag = "type", rename_all = "lowercase")]
|
#[serde(tag = "type", rename_all = "lowercase")]
|
||||||
pub enum Repo {
|
pub enum Repo {
|
||||||
Git { url: PathBuf },
|
Git { url: PathBuf },
|
||||||
GitHub { owner: String, repo: String },
|
GitHub { owner: String, repo: String },
|
||||||
Gitlab { owner: String, repo: String },
|
Gitlab { owner: String, repo: String },
|
||||||
|
SourceHut { owner: String, repo: String },
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
|
@ -11,7 +11,7 @@ pub type Hash = String;
|
||||||
pub type FlakeRef = String;
|
pub type FlakeRef = String;
|
||||||
|
|
||||||
/// Information about the flake origin
|
/// Information about the flake origin
|
||||||
/// Supports (local/raw) Git, GitHub and Gitlab repos
|
/// Supports (local/raw) Git, GitHub, SourceHut and Gitlab repos
|
||||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||||
#[serde(tag = "type", rename_all = "lowercase")]
|
#[serde(tag = "type", rename_all = "lowercase")]
|
||||||
pub enum Source {
|
pub enum Source {
|
||||||
|
@ -27,6 +27,11 @@ pub enum Source {
|
||||||
repo: String,
|
repo: String,
|
||||||
git_ref: Option<Hash>,
|
git_ref: Option<Hash>,
|
||||||
},
|
},
|
||||||
|
SourceHut {
|
||||||
|
owner: String,
|
||||||
|
repo: String,
|
||||||
|
git_ref: Option<Hash>,
|
||||||
|
},
|
||||||
Git {
|
Git {
|
||||||
url: String,
|
url: String,
|
||||||
},
|
},
|
||||||
|
@ -66,6 +71,18 @@ impl Source {
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.map_or("".to_string(), |f| format!("?ref={}", f))
|
.map_or("".to_string(), |f| format!("?ref={}", f))
|
||||||
),
|
),
|
||||||
|
Source::SourceHut {
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
git_ref,
|
||||||
|
} => format!(
|
||||||
|
"sourcehut:{}/{}{}",
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
git_ref
|
||||||
|
.as_ref()
|
||||||
|
.map_or("".to_string(), |f| format!("?ref={}", f))
|
||||||
|
),
|
||||||
Source::Git { url } => url.to_string(),
|
Source::Git { url } => url.to_string(),
|
||||||
Source::Nixpkgs(Nixpkgs { git_ref, .. }) => format!(
|
Source::Nixpkgs(Nixpkgs { git_ref, .. }) => format!(
|
||||||
"https://api.github.com/repos/NixOS/nixpkgs/tarball/{}",
|
"https://api.github.com/repos/NixOS/nixpkgs/tarball/{}",
|
||||||
|
|
|
@ -1001,6 +1001,9 @@ decodeResolvedFlake =
|
||||||
"gitlab" ->
|
"gitlab" ->
|
||||||
Maybe.map (\repoPath_ -> ( "gitlab:" ++ repoPath_, "https://gitlab.com/" ++ repoPath_ )) repoPath
|
Maybe.map (\repoPath_ -> ( "gitlab:" ++ repoPath_, "https://gitlab.com/" ++ repoPath_ )) repoPath
|
||||||
|
|
||||||
|
"sourcehut" ->
|
||||||
|
Maybe.map (\repoPath_ -> ( "sourcehut:" ++ repoPath_, "https://sr.ht/" ++ repoPath_ )) repoPath
|
||||||
|
|
||||||
"git" ->
|
"git" ->
|
||||||
Maybe.map (\url_ -> ( url_, url_ )) url
|
Maybe.map (\url_ -> ( url_, url_ )) url
|
||||||
|
|
||||||
|
|
|
@ -270,6 +270,9 @@ decodeResolvedFlake =
|
||||||
"gitlab" ->
|
"gitlab" ->
|
||||||
Maybe.map (\repoPath_ -> "https://gitlab.com/" ++ repoPath_) repoPath
|
Maybe.map (\repoPath_ -> "https://gitlab.com/" ++ repoPath_) repoPath
|
||||||
|
|
||||||
|
"sourcehut" ->
|
||||||
|
Maybe.map (\repoPath_ -> "https://sr.ht/" ++ repoPath_) repoPath
|
||||||
|
|
||||||
"git" ->
|
"git" ->
|
||||||
url
|
url
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue