mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-01-22 14:45:27 +00:00
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_34
|
||||
crystal_0_35
|
||||
crystal
|
||||
crystal2nix;
|
||||
crystal;
|
||||
|
||||
crystal2nix = callPackage ../development/compilers/crystal2nix { };
|
||||
|
||||
icr = callPackage ../development/tools/icr { };
|
||||
|
||||
|
|
Loading…
Reference in a new issue