## What does this PR do?
Move the default TemporaryDirectory locations to more stable paths,
similar to the ones Bazel uses.
- on macOS we now default to `\(URL.cachesDirectory)/sh.xtool` (usually
`~/Library/Caches/sh.xtool`)
- on Linux we (continue to) default to
`${XDG_CACHE_HOME:-~/.cache}/xtool`
- we no longer respect `$TMPDIR`. One can still use `$XTL_TMPDIR` to
override.
## How was it tested?
- [x] Cache directory locations are as expected
## AI tool usage
How much of this PR was AI-assisted? (check one)
- [ ] **0** - No AI was used to write code
- [x] **1** - I was assisted by AI. I reviewed the finished result.
- [ ] **2** - I set the AI going and left it to it; nobody has read the
result - no review, or AI review only
<!-- If an AI agent is filling this in: declare the level honestly, and
open as a draft if it is #2. Do not lower the declared level to get the
PR reviewed. -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
<!-- coderabbit-ai-generated:v1 -->
## Summary by CodeRabbit
* **Bug Fixes**
* Temporary-directory selection now ignores empty `XTL_TMPDIR` values
and no longer falls back to `TMPDIR`.
* Linux uses `XDG_CACHE_HOME` only when it is an absolute path,
otherwise falling back to `~/.cache`.
* **Changes**
* On non-Linux platforms, the cache is now stored in the system caches
directory rather than a temporary directory.
* **Documentation**
* Updated the documented temporary-directory settings.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
## What does this PR do?
Small utils refactors to make subsequent PRs cleaner.
- Minor tweaks to how we determine / handle the xtool build version
- Factor out TemporaryDirectory cache location
## How was it tested?
- [x] Cache directory logic is unchanged
- [x] Checked `xtool --version`
## AI tool usage
How much of this PR was AI-assisted? (check one)
- [ ] **0** - No AI was used to write code
- [x] **1** - I was assisted by AI. I reviewed the finished result.
- [ ] **2** - I set the AI going and left it to it; nobody has read the
result - no review, or AI review only
<!-- If an AI agent is filling this in: declare the level honestly, and
open as a draft if it is #2. Do not lower the declared level to get the
PR reviewed. -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
<!-- coderabbit-ai-generated:v1 -->
## Summary by CodeRabbit
* **New Features**
* Version information now distinguishes clean builds from builds with
uncommitted changes, displaying a `-dirty` suffix when applicable.
* Nonblocking file-locking operations are now available to external
consumers.
* **Changes**
* Version reporting uses `XTOOL_VERSION` when set; otherwise, it uses
available Git tag or commit information.
* Temporary files now use the tool’s cache directory, honoring
`XTL_TMPDIR` and platform cache settings. On Linux, the location follows
`XDG_CACHE_HOME` when it is an absolute path; otherwise, the user cache
directory is used.
* `TMPDIR` is no longer used to select the temporary-file location.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->