Resolution helpers for paths Mob writes to outside the project tree.
Centralised here so the deployer, the build script, the iOS simulator
app's mob_beam.m, the cache-listing task, and the doctor all agree on
one answer.
Summary
Functions
True when the project's ios/build.sh was generated from a template that
knows about MOB_SIM_RUNTIME_DIR (mob_new ≥ 0.1.20). False if the file
is missing or predates the env-var support.
The new default runtime path — under ~/.mob/runtime/ so mix mob.cache
can list and clear it the same way it handles the OTP cache.
The pre-runtime-dir-relocation path. Old ios/build.sh scripts hardcode
this; we keep recognising it so existing projects keep deploying.
Returns the directory where the iOS simulator's OTP runtime lives.
Functions
True when the project's ios/build.sh was generated from a template that
knows about MOB_SIM_RUNTIME_DIR (mob_new ≥ 0.1.20). False if the file
is missing or predates the env-var support.
@spec default_runtime_dir() :: String.t()
The new default runtime path — under ~/.mob/runtime/ so mix mob.cache
can list and clear it the same way it handles the OTP cache.
@spec legacy_tmp_path() :: String.t()
The pre-runtime-dir-relocation path. Old ios/build.sh scripts hardcode
this; we keep recognising it so existing projects keep deploying.
Returns the directory where the iOS simulator's OTP runtime lives.
Resolution order:
MOB_SIM_RUNTIME_DIRenv var if set~/.mob/runtime/ios-sim(new default — managed bymix mob.cache)/tmp/otp-ios-sim(legacy fallback for projects whoseios/build.shwas generated before the env-var-aware template)
The third branch is the back-compat path: a project's ios/build.sh is
generated once at project creation and kept thereafter, so old projects
still write the OTP runtime to /tmp/otp-ios-sim. We detect that case
by looking inside the project's own ios/build.sh for the
MOB_SIM_RUNTIME_DIR token. If it's missing, the project hasn't been
regenerated against the new mob_new template and we honor its old
hardcoded path so mix mob.deploy keeps working.
When :project_dir is passed, the build.sh-presence check uses that
directory; otherwise it uses File.cwd!/0. Pure of side effects.