Packages
nerves_runtime
0.7.0
0.13.13
0.13.12
0.13.11
retired
0.13.10
0.13.9
0.13.8
0.13.7
0.13.6
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.0
0.11.10
0.11.9
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
retired
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.0
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.3
0.5.2
0.5.1
0.5.0
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.1
0.3.0
0.2.0
0.1.2
0.1.1
0.1.0
Small, general runtime utilities for Nerves devices
Current section
Files
Jump to
Current section
Files
lib/nerves_runtime/device.ex
defmodule Nerves.Runtime.Device do
require Logger
@sysfs "/sys"
def discover do
"#{@sysfs}/devices"
|> expand_uevent
|> Enum.each(&invoke_uevent_action(&1, "add"))
end
def expand_uevent(path) do
path
|> Path.expand()
|> File.ls!()
|> Enum.map(&Path.join(path, &1))
|> Enum.reduce([], fn path, acc ->
filetype =
case File.lstat(path) do
{:ok, stat} -> stat.type
_ -> :error
end
basename = Path.basename(path)
cond do
basename == "uevent" ->
[path | acc]
filetype == :directory ->
[expand_uevent(path) | acc]
true ->
acc
end
end)
|> List.flatten()
end
defp invoke_uevent_action(uevent, action) do
File.write(uevent, action)
end
end