DalaDev.Paths (dala_dev v0.2.1)

Copy Markdown View Source

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

build_sh_aware?(project_dir)

@spec build_sh_aware?(String.t()) :: boolean()

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.

default_runtime_dir()

@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.

legacy_tmp_path()

@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.

sim_runtime_dir(opts \\ [])

@spec sim_runtime_dir(keyword()) :: String.t()

Returns the directory where the iOS simulator's OTP runtime lives.

Resolution order:

  1. DALA_SIM_RUNTIME_DIR env var if set
  2. ~/.dala/runtime/ios-sim (new default — managed by mix dala.cache)
  3. /tmp/otp-ios-sim (legacy fallback for projects whose ios/build.sh was 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.