사용자 지정 믹스 작업 내에서 믹스 작업을 실행하고 싶습니다.믹스 작업에서 믹스 작업을 어떻게 실행합니까?
def run(_) do
Mix.Shell.cmd("mix edeliver build release")
#do other stuff
같은
는뭔가하지만 쉘 명령을 실행하는 방법을 알아낼 수 없습니다. 더 쉬운 방법이 있다면 (그냥 bash 스크립트를 만드는 것 외에) 알려주십시오.
사용자 지정 믹스 작업 내에서 믹스 작업을 실행하고 싶습니다.믹스 작업에서 믹스 작업을 어떻게 실행합니까?
def run(_) do
Mix.Shell.cmd("mix edeliver build release")
#do other stuff
같은
는뭔가하지만 쉘 명령을 실행하는 방법을 알아낼 수 없습니다. 더 쉬운 방법이 있다면 (그냥 bash 스크립트를 만드는 것 외에) 알려주십시오.
쉘은 여기서 중복 링크입니다. 당신이 edeliver
작업을 실행하려면, Mix.Tasks.Edeliver#run
을 실행하면 Loki을 사용할 수 있습니다
def run(_) do
Mix.Tasks.Edeliver.run(~w|build release|)
# do other stuff
나는 결코 다른 믹스 작업을 내부에서 Mix.shell.cmd
를 통해 믹스 작업을 실행하지 시도하고 가장 좋은 방법인지 잘 모르겠어요하지만, 그것은 당신이 일하는 것이 목표로하는지 같은 것 같아 :
def run(args) do
Mix.Shell.cmd("mix test", fn(output) -> IO.write(output) end)
# (...)
end
위의 코드는 mix test
을 통해 테스트를 실행하고 출력을 인쇄합니다. 참고 : 위 코드는 Mix 1.3.4를 기반으로하며 인터페이스는 1.4.0에서 약간 다릅니다.
:
# inside mix.exs
def project do
[
# (...)
aliases: [
"composite.task": [
"test",
"edeliver build release",
"my.custom.task",
]
]
]
end
지금 mix composite.task
를 실행하는 두 가지를 실행해야합니다을 my.custom.task
이전의 다른 작업.
쉘 '명령을 실행하십시오. 셸 실행을위한 함수는 execute/1
입니다. 나는 다른 믹스 작업을 실행하기위한 Mix.Task에서 사용하는 방법
그리고 예 :
defmodule Mix.Tasks.Sesamex.Gen.Auth do
use Mix.Task
import Loki.Cmd
import Loki.Shell
@spec run(List.t) :: none()
def run([singular, plural]) do
execute("mix sesamex.gen.model #{singular} #{plural}")
execute("mix sesamex.gen.controllers #{singular}")
execute("mix sesamex.gen.views #{singular}")
execute("mix sesamex.gen.templates #{singular}")
execute("mix sesamex.gen.routes #{singular}")
# ...
end
end
또는 단지는 명령을 실행하는 방법을 찾습니다
@spec execute(String.t, list(Keyword.t)) :: {Collectable.t, exit_status :: non_neg_integer}
def execute(string, opts) when is_bitstring(string) and is_list(opts) do
[command | args] = String.split(string)
say IO.ANSI.format [:green, " * execute ", :reset, string]
System.cmd(command, args, env: opts)
end
는 당신을 도울 바랍니다.