Packages
nerves
1.4.4
1.15.0
1.14.3
1.14.2
1.14.1
1.14.0
1.13.2
1.13.1
1.13.0
1.12.0
1.11.3
1.11.2
1.11.1
1.11.0
1.10.5
1.10.4
1.10.3
1.10.2
1.10.1
1.10.0
1.9.3
1.9.2
retired
1.9.1
1.9.0
1.8.0
1.7.17
1.7.16
1.7.15
1.7.14
retired
1.7.13
1.7.12
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
retired
1.7.1
retired
1.7.0
retired
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.5
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.1
1.2.0
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.11.0
0.10.1
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.3
0.8.2
0.8.1
0.8.0
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.4.0-rc.0
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
Craft and deploy bulletproof embedded software
Current section
Files
Jump to
Current section
Files
lib/nerves/utils/file.ex
defmodule Nerves.Utils.File do
def untar(file, destination \\ nil) do
destination = destination || File.cwd!()
cmd("tar", ["xf", file, "--strip-components=1", "-C", destination])
|> result()
end
@doc """
Create a tar of the contents of the path and specified output file
"""
def tar(path, file) do
working_dir = Path.dirname(path)
path = Path.basename(path)
cmd("tar", ["-czf", file, "-C", working_dir, path])
|> result()
end
def validate(file) do
Path.extname(file)
|> ext_cmd()
|> cmd(["-t", file])
|> result()
end
def ext_cmd(".xz"), do: "xz"
def ext_cmd(".gz"), do: "gzip"
def ext_cmd(".tar"), do: "tar"
defp result({"", 0}), do: :ok
defp result({reason, _}), do: {:error, reason}
defp cmd(cmd, args) do
if System.find_executable(cmd) do
System.cmd(cmd, args, stderr_to_stdout: true)
else
raise "Could not find '#{cmd}'. See https://hexdocs.pm/nerves/installation.html for required packages."
end
end
end