Packages
mob_dev
0.6.21
0.6.23
0.6.22
0.6.21
0.6.20
0.6.19
0.6.18
0.6.17
0.6.16
0.6.15
0.6.14
0.6.13
0.6.12
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.17
0.5.16
0.5.15
0.5.14
0.5.13
0.5.12
0.5.11
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.37
0.3.35
0.3.34
0.3.33
0.3.28
0.3.26
0.3.23
0.3.21
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.18
0.2.17
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.0
Development tooling for the Mob mobile framework
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/mob.watch_stop.ex
defmodule Mix.Tasks.Mob.WatchStop do
use Mix.Task
@shortdoc "Stop a running mix mob.watch process"
@moduledoc """
Stops a running `mix mob.watch` process.
mix mob.watch_stop
Reads the PID written by `mix mob.watch` and sends SIGTERM.
## Under the hood
pid = File.read!("_build/mob_watch.pid") |> String.trim()
System.cmd("kill", [pid]) # SIGTERM
File.rm("_build/mob_watch.pid")
Equivalent to running `kill $(cat _build/mob_watch.pid)` in a terminal.
"""
@impl Mix.Task
def run(_args) do
pid_file = Mix.Tasks.Mob.Watch.pid_file()
case File.read(pid_file) do
{:ok, contents} ->
pid = String.trim(contents)
case System.cmd("kill", [pid], stderr_to_stdout: true) do
{_, 0} ->
File.rm(pid_file)
IO.puts("#{IO.ANSI.green()}mob.watch stopped (pid #{pid})#{IO.ANSI.reset()}")
{out, _} ->
File.rm(pid_file)
IO.puts(
"#{IO.ANSI.yellow()}kill failed (process may have already exited): #{String.trim(out)}#{IO.ANSI.reset()}"
)
end
{:error, _} ->
IO.puts(
"#{IO.ANSI.yellow()}mob.watch is not running (no PID file found)#{IO.ANSI.reset()}"
)
end
end
end