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.ex
defmodule Nerves.Utils do
@alphanum 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_'
@json_codec Jason
<<i1::32-unsigned-integer, i2::32-unsigned-integer, i3::32-unsigned-integer>> =
:crypto.strong_rand_bytes(12)
:rand.seed(:exsplus, {i1, i2, i3})
def random_alpha_num(length) do
Enum.take_random(@alphanum, length)
|> to_string
end
def untar(file, destination \\ nil) do
destination = destination || File.cwd!()
System.cmd("tar", ["xf", file, "--strip-components=1", "-C", destination])
end
def json_decode(data) do
json_codec().decode!(data)
end
def json_encode(data) do
json_codec().encode!(data)
end
defp json_codec() do
json_codec = Application.get_env(:nerves, :json_codec) || @json_codec
case Code.ensure_loaded?(json_codec) do
true ->
json_codec
false ->
Nerves.Utils.Shell.error("""
Nerves is attempting to decode JSON data but there is no JSON codec defined.
Please include :jason as a dependency or configure your own JSON parser
by updating your config.exs
config :nerves, json_codec: Poison
""")
end
end
end