crystal2nix: unstable-2018-07-31 -> 0.1.0
This commit is contained in:
parent
61626d70e5
commit
b8514a1727
@ -1,42 +0,0 @@
|
|||||||
require "yaml"
|
|
||||||
require "json"
|
|
||||||
|
|
||||||
class PrefetchJSON
|
|
||||||
JSON.mapping(sha256: String)
|
|
||||||
end
|
|
||||||
|
|
||||||
class ShardLock
|
|
||||||
YAML.mapping(
|
|
||||||
version: Float32,
|
|
||||||
shards: Hash(String, Hash(String, String))
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
File.open "shards.nix", "w+" do |file|
|
|
||||||
file.puts %({)
|
|
||||||
yaml = ShardLock.from_yaml(File.read("shard.lock"))
|
|
||||||
yaml.shards.each do |key, value|
|
|
||||||
owner, repo = value["github"].split("/")
|
|
||||||
url = "https://github.com/#{value["github"]}"
|
|
||||||
rev = if value["version"]?
|
|
||||||
"v#{value["version"]}"
|
|
||||||
else
|
|
||||||
value["commit"]
|
|
||||||
end
|
|
||||||
|
|
||||||
sha256 = ""
|
|
||||||
args = ["--url", url, "--rev", rev]
|
|
||||||
Process.run("@nixPrefetchGit@", args: args) do |x|
|
|
||||||
x.error.each_line { |e| puts e }
|
|
||||||
sha256 = PrefetchJSON.from_json(x.output).sha256
|
|
||||||
end
|
|
||||||
|
|
||||||
file.puts %( #{key} = {)
|
|
||||||
file.puts %( owner = "#{owner}";)
|
|
||||||
file.puts %( repo = "#{repo}";)
|
|
||||||
file.puts %( rev = "#{rev}";)
|
|
||||||
file.puts %( sha256 = "#{sha256}";)
|
|
||||||
file.puts %( };)
|
|
||||||
end
|
|
||||||
file.puts %(})
|
|
||||||
end
|
|
@ -1,22 +0,0 @@
|
|||||||
{ lib, crystal, nix-prefetch-git }:
|
|
||||||
|
|
||||||
crystal.buildCrystalPackage {
|
|
||||||
pname = "crystal2nix";
|
|
||||||
version = "unstable-2018-07-31";
|
|
||||||
|
|
||||||
nixPrefetchGit = "${lib.getBin nix-prefetch-git}/bin/nix-prefetch-git";
|
|
||||||
unpackPhase = "substituteAll ${./crystal2nix.cr} crystal2nix.cr";
|
|
||||||
|
|
||||||
format = "crystal";
|
|
||||||
|
|
||||||
crystalBinaries.crystal2nix.src = "crystal2nix.cr";
|
|
||||||
|
|
||||||
# it will blow up without a shard.yml file
|
|
||||||
doInstallCheck = false;
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Utility to convert Crystal's shard.lock files to a Nix file";
|
|
||||||
license = licenses.mit;
|
|
||||||
maintainers = with maintainers; [ manveru ];
|
|
||||||
};
|
|
||||||
}
|
|
36
pkgs/development/compilers/crystal2nix/default.nix
Normal file
36
pkgs/development/compilers/crystal2nix/default.nix
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
{ lib, fetchFromGitHub, fetchgit, crystal, makeWrapper, nix-prefetch-git }:
|
||||||
|
|
||||||
|
crystal.buildCrystalPackage rec {
|
||||||
|
pname = "crystal2nix";
|
||||||
|
version = "0.1.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "peterhoeg";
|
||||||
|
repo = "crystal2nix";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "sha256-K1ElG8VC/D0axmSRaufH3cE50xNQisAmFucDkV+5O0s=";
|
||||||
|
};
|
||||||
|
|
||||||
|
format = "shards";
|
||||||
|
|
||||||
|
shardsFile = ./shards.nix;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
wrapProgram $out/bin/crystal2nix \
|
||||||
|
--prefix PATH : ${lib.makeBinPath [ nix-prefetch-git ]}
|
||||||
|
'';
|
||||||
|
|
||||||
|
# temporarily off. We need the checks to execute the wrapped binary
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
# it requires an internet connection when run
|
||||||
|
doInstallCheck = false;
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Utility to convert Crystal's shard.lock files to a Nix file";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ manveru peterhoeg ];
|
||||||
|
};
|
||||||
|
}
|
14
pkgs/development/compilers/crystal2nix/shards.nix
Normal file
14
pkgs/development/compilers/crystal2nix/shards.nix
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
json_mapping = {
|
||||||
|
owner = "crystal-lang";
|
||||||
|
repo = "json_mapping.cr";
|
||||||
|
rev = "v0.1.0";
|
||||||
|
sha256 = "1qq5vs2085x7cwmp96rrjns0yz9kiz1lycxynfbz5psxll6b8p55";
|
||||||
|
};
|
||||||
|
yaml_mapping = {
|
||||||
|
owner = "crystal-lang";
|
||||||
|
repo = "yaml_mapping.cr";
|
||||||
|
rev = "v0.1.0";
|
||||||
|
sha256 = "02spz1521g59ar6rp0znnr01di766kknbjxjnygs39yn0cmpzqc1";
|
||||||
|
};
|
||||||
|
}
|
@ -9051,8 +9051,9 @@ in
|
|||||||
crystal_0_33
|
crystal_0_33
|
||||||
crystal_0_34
|
crystal_0_34
|
||||||
crystal_0_35
|
crystal_0_35
|
||||||
crystal
|
crystal;
|
||||||
crystal2nix;
|
|
||||||
|
crystal2nix = callPackage ../development/compilers/crystal2nix { };
|
||||||
|
|
||||||
icr = callPackage ../development/tools/icr { };
|
icr = callPackage ../development/tools/icr { };
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user