Resolution helpers for paths Dala writes to outside the project tree.
Centralised here so the deployer, the build script, the iOS simulator
app's dala_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 DALA_SIM_RUNTIME_DIR (dala_new ≥ 0.1.20). False if the file
is missing or predates the env-var support.
The new default runtime path — under ~/.dala/runtime/ so mix dala.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 DALA_SIM_RUNTIME_DIR (dala_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 ~/.dala/runtime/ so mix dala.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:
DALA_SIM_RUNTIME_DIRenv var if set~/.dala/runtime/ios-sim(new default — managed bymix dala.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
DALA_SIM_RUNTIME_DIR token. If it's missing, the project hasn't been
regenerated against the new dala_new template and we honor its old
hardcoded path so mix dala.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.