# `DalaDev.Paths`
[🔗](https://github.com/manhvu/dala_dev/blob/main/lib/dala_dev/paths.ex#L1)

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.

# `build_sh_aware?`

```elixir
@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`

```elixir
@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`

```elixir
@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`

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

---

*Consult [api-reference.md](api-reference.md) for complete listing*
