Current section
Files
Jump to
Current section
Files
lib/deployment/task.ex
alias EarendilCli.Protocols.Task, as: Protocol
alias EarendilCli.Deployment.Model, as: Model
defimpl Protocol, for: Model do
alias EarendilCli.Deployment.Builder, as: Builder
alias EarendilCli.Deployment.Arguments, as: Arguments
import EarendilCli.Interaction.Parser
import EarendilCli.Deployment.ContractAgent
defp make_cmd_options(path) do
[
cd: Path.expand(path),
stderr_to_stdout: true,
parallelism: true
]
end
defp start_process(task) do
function = fn -> System.cmd("erdpy", Arguments.make(task), make_cmd_options(task.path)) end
Task.Supervisor.async(EarendilCli.Task.Supervisor, function)
end
defp log_result(%{contract: contract, hash: hash}) do
IO.puts("Contract deployed!")
IO.puts("\tAddress: #{contract}")
IO.puts("\tTransaction hash: #{hash}")
end
def run(task) do
Builder.run(task.path)
shite = start_process(task) |> Task.await(:infinity)
IO.inspect(shite)
output = parse(task)
log_result(output)
set(output.contract)
:timer.sleep(task.delay)
end
end