# defmodule Mix.Tasks.Terminator.Create.Role do # use Mix.Task # alias Terminator.Role # alias Terminator.Repo # @shortdoc "Create new role" # # @opts [strict: [name: :string, abilities: [:string, :keep]], aliases: [n: :name]] # def run(argv) do # Application.ensure_all_started(:terminator) # %{args: args} = # Optimus.new!( # name: "terminator.create.role", # args: [ # role: [ # value_name: "role_identifier", # help: "Role identifier (:atom)", # required: true, # parser: :string # ], # name: [ # value_name: "role_name", # help: "Role human name (:string)", # required: true, # parser: :string # ], # abilities: [ # value_name: "abilities", # help: "Role abilities (:string,:string)", # required: true, # parser: :string # ] # ] # ) # |> Optimus.parse!(argv) # args = Map.put(args, :abilities, String.split(args.abilities, ",")) # create_role(args) # end # defp create_role(%{abilities: abilities, name: name, role: role}) do # changeset = # Role.changeset(%Role{}, %{ # identifier: role, # name: name, # abilities: abilities # }) # result = Repo.insert(changeset) # case result do # {:ok, _} -> # IO.puts("Role created") # {:error, error} -> # IO.puts("Error while creating role") # IO.inspect(error.errors) # end # end # end