Packages
grizzly
0.15.0
9.1.4
9.1.2
9.1.1
9.1.0
9.0.0
8.15.3
8.15.2
8.15.1
8.15.0
8.14.0
8.13.0
8.12.0
8.11.3
8.11.2
8.11.1
8.11.0
8.10.0
8.9.0
8.8.1
8.8.0
8.7.1
8.7.0
8.6.12
8.6.11
8.6.10
8.6.9
8.6.8
8.6.7
retired
8.6.6
8.6.5
8.6.4
8.6.3
8.6.2
8.6.1
8.6.0
8.5.3
8.5.2
8.5.1
8.5.0
8.4.0
8.3.0
8.2.3
8.2.2
8.2.1
8.2.0
8.1.0
8.0.1
8.0.0
7.4.3
7.4.2
7.4.1
7.4.0
7.3.0
7.2.0
7.1.4
7.1.3
7.1.2
7.1.1
7.1.0
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.8.8
6.8.7
6.8.6
6.8.5
6.8.4
6.8.3
6.8.2
6.8.1
6.8.0
6.7.1
6.7.0
6.6.1
6.6.0
6.5.1
6.5.0
6.4.0
6.3.0
6.2.0
6.1.1
6.1.0
6.0.1
6.0.0
5.4.1
5.4.0
5.3.0
5.2.8
5.2.7
5.2.6
5.2.5
5.2.4
5.2.3
5.2.2
5.2.1
5.2.0
5.1.2
5.1.1
5.1.0
5.0.2
5.0.1
5.0.0
4.0.1
4.0.0
3.0.0
2.1.0
2.0.0
1.0.1
1.0.0
0.22.7
0.22.6
0.22.5
0.22.4
0.22.3
0.22.2
0.22.1
0.22.0
0.21.1
0.21.0
0.20.2
0.20.1
0.20.0
0.19.1
0.19.0
0.18.3
0.18.2
0.18.1
0.18.0
0.17.7
0.17.6
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.2
0.16.1
0.16.0
0.15.11
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.9.0-rc.4
0.9.0-rc.3
0.9.0-rc.2
0.9.0-rc.1
0.9.0-rc.0
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.3
0.4.2
Elixir Z-Wave library
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/zwave.gen.command_class.ex
defmodule Mix.Tasks.Zwave.Gen.CommandClass do
@moduledoc """
Generates the scaffolding for a new Z-Wave Command
mix zwave.gen.command_class Thermostat
The pattern is
mix zwave.gen.command_class CommandClassModule
Flags:
* `--no-save` - will print the generated module out to the console
* `--target-dir <path>` - will generate the new module at the provided path
"""
use Mix.Task
@shortdoc "Generates the scaffolding for a new Z-Wave Command Class"
@switches [no_save: :boolean, target_dir: :string]
def run(args) do
{opts, [command_class], _} = OptionParser.parse(args, switches: @switches)
command_class_name_str_snake_case = Macro.underscore(command_class)
target_path = Path.join(get_target(opts), "#{command_class_name_str_snake_case}.ex")
copy_files(target_path, command_class, opts)
end
defp copy_files(target_path, command_class, opts) do
template_file =
Path.join(Application.app_dir(:grizzly), "/priv/templates/zwave.gen/command_class.ex")
command_class_module = Module.concat(Grizzly.ZWave.CommandClasses, command_class)
command_class_name = String.to_atom(Macro.underscore(command_class))
bindings = [
command_class_name: command_class_name,
command_class_module: command_class_module,
command_class: command_class
]
to_out(target_path, template_file, bindings, opts)
end
defp to_out(target_path, template_file, bindings, opts) do
evaled = EEx.eval_file(template_file, bindings)
if Keyword.has_key?(opts, :no_save) do
IO.puts(evaled)
else
Mix.Generator.create_file(target_path, EEx.eval_file(template_file, bindings))
end
end
def get_target(opts) do
case Keyword.get(opts, :target_dir) do
nil ->
Path.join([
File.cwd!(),
"lib",
"grizzly",
"zwave",
"command_classes"
])
target_dir ->
target_dir
end
end
end