nixpkgs-github-update: ensure attribute_exists is true/false

This commit is contained in:
worldofpeace 2019-12-22 14:07:16 -05:00
parent 95dfa8b8cf
commit b5b15d76f1

View File

@ -2,7 +2,7 @@ defmodule NixpkgsGitHubUpdate.Nix do
def executable do def executable do
nix = System.find_executable("nix") nix = System.find_executable("nix")
if nil === nix do if nix == nil do
raise RuntimeError, message: "missing executable for 'nix'" raise RuntimeError, message: "missing executable for 'nix'"
end end
@ -22,19 +22,29 @@ defmodule NixpkgsGitHubUpdate.Nix do
|> handle_eval |> handle_eval
end end
def handle_eval({eval_result, 0}) do defp handle_eval({eval_result, 0}) do
case eval_result do case eval_result do
"" -> eval_result "" -> eval_result
_ -> Poison.Parser.parse!(eval_result, %{}) _ -> Poison.Parser.parse!(eval_result, %{})
end end
end end
def handle_eval({eval_result, _}) do defp handle_eval({eval_result, _}) do
IO.puts("Error running nix eval: #{eval_result}") raise RuntimeError, message: "Error running nix eval: #{eval_result}"
end end
def attribute_exists?(attribute) do def attribute_exists?(attribute) do
eval!("(with import <nixpkgs> {}; lib.isDerivation #{attribute})") attr_exist_expression = """
with import <nixpkgs> {};
let
attrSet = pkgs.lib.attrByPath (pkgs.lib.splitString "." "#{attribute}") null pkgs;
in
if attrSet == null then false
else true
"""
eval!("(#{attr_exist_expression})")
end end
def update_source_version(attribute, version) do def update_source_version(attribute, version) do
@ -45,9 +55,9 @@ defmodule NixpkgsGitHubUpdate.Nix do
end end
def get_url_attr(attribute) do def get_url_attr(attribute) do
case eval!("nixpkgs.#{attribute}.src.fetchSubmodules") do case attribute_exists?("#{attribute}.src.fetchSubmodules") do
true -> "url" true -> "url"
_ -> "urls" false -> "urls"
end end
end end