grammars.nix: use github type for fetchTree where possible (#1872)
This commit is contained in:
parent
511f37c736
commit
b63b37d5a0
1 changed files with 16 additions and 1 deletions
17
grammars.nix
17
grammars.nix
|
@ -10,16 +10,31 @@ let
|
||||||
isGitGrammar = (grammar:
|
isGitGrammar = (grammar:
|
||||||
builtins.hasAttr "source" grammar && builtins.hasAttr "git" grammar.source
|
builtins.hasAttr "source" grammar && builtins.hasAttr "git" grammar.source
|
||||||
&& builtins.hasAttr "rev" grammar.source);
|
&& builtins.hasAttr "rev" grammar.source);
|
||||||
|
isGitHubGrammar = grammar: lib.hasPrefix "https://github.com" grammar.source.git;
|
||||||
|
toGitHubFetcher = url: let
|
||||||
|
match = builtins.match "https://github\.com/([^/]*)/([^/]*)/?" url;
|
||||||
|
in {
|
||||||
|
owner = builtins.elemAt match 0;
|
||||||
|
repo = builtins.elemAt match 1;
|
||||||
|
};
|
||||||
gitGrammars = builtins.filter isGitGrammar languagesConfig.grammar;
|
gitGrammars = builtins.filter isGitGrammar languagesConfig.grammar;
|
||||||
buildGrammar = grammar:
|
buildGrammar = grammar:
|
||||||
let
|
let
|
||||||
source = builtins.fetchTree {
|
gh = toGitHubFetcher grammar.source.git;
|
||||||
|
sourceGit = builtins.fetchTree {
|
||||||
type = "git";
|
type = "git";
|
||||||
url = grammar.source.git;
|
url = grammar.source.git;
|
||||||
rev = grammar.source.rev;
|
rev = grammar.source.rev;
|
||||||
ref = grammar.source.ref or "HEAD";
|
ref = grammar.source.ref or "HEAD";
|
||||||
shallow = true;
|
shallow = true;
|
||||||
};
|
};
|
||||||
|
sourceGitHub = builtins.fetchTree {
|
||||||
|
type = "github";
|
||||||
|
owner = gh.owner;
|
||||||
|
repo = gh.repo;
|
||||||
|
inherit (grammar.source) rev;
|
||||||
|
};
|
||||||
|
source = if isGitHubGrammar grammar then sourceGitHub else sourceGit;
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
# see https://github.com/NixOS/nixpkgs/blob/fbdd1a7c0bc29af5325e0d7dd70e804a972eb465/pkgs/development/tools/parsing/tree-sitter/grammar.nix
|
# see https://github.com/NixOS/nixpkgs/blob/fbdd1a7c0bc29af5325e0d7dd70e804a972eb465/pkgs/development/tools/parsing/tree-sitter/grammar.nix
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue