Current section
Files
Jump to
Current section
Files
lib/nerves/system_defconfig_linter_rule/checks.ex
defmodule Nerves.System.Defconfig.Linter.Rule.Checks do
alias Nerves.System.Defconfig
def ensure_package(defconfig, package_name, opts \\ [])
def ensure_package(
%Defconfig{config: config} = defconfig,
<<"BR2_PACKAGE_", _rest::binary>> = package_name,
opts
) do
res = config[package_name]
message = Keyword.get(opts, :message, "ensure_package: #{package_name}: #{res || false}")
update(defconfig, res, message, opts)
end
def ensure_package(%Defconfig{} = defconfig, package_name, opts) do
ensure_package(defconfig, "BR2_PACKAGE_" <> package_name, opts)
end
def ensure_bool(%Defconfig{} = defconfig, config, bool, opts \\ []) do
res = config in Map.keys(defconfig.config) and defconfig.config[config] == bool
message = Keyword.get(opts, :message, "ensure_bool: #{config}: #{res || false}")
update(defconfig, res, message, opts)
end
def ensure_value(%Defconfig{} = defconfig, config, value, opts \\ []) do
res = defconfig.config[config] == value
message = Keyword.get(opts, :message, "ensure_value: #{config}: #{res || false}")
update(defconfig, res, message, opts)
end
defp update(defconfig, res, message, opts) do
warn? = Keyword.get(opts, :warn, false)
cond do
res -> %{defconfig | success: [message | defconfig.success]}
warn? and !res -> %{defconfig | warnings: [message | defconfig.warnings]}
true -> %{defconfig | errors: [message | defconfig.errors]}
end
end
end