aboutsummaryrefslogtreecommitdiff
path: root/internal/notes.txt
diff options
context:
space:
mode:
Diffstat (limited to 'internal/notes.txt')
-rw-r--r--internal/notes.txt46
1 files changed, 46 insertions, 0 deletions
diff --git a/internal/notes.txt b/internal/notes.txt
index a37fbaa2..37b59191 100644
--- a/internal/notes.txt
+++ b/internal/notes.txt
@@ -8,3 +8,49 @@
disabling implicit reset on every eval in _p9k_worker_receive.
- implement fake gitstatus api on top of vcs_info (or plain git?) + worker and use it if there is no
gitstatus.
+
+## asdf
+
+- https://asdf-vm.com/#/core-configuration?id=environment-variables
+- https://asdf-vm.com/#/core-configuration?id=tool-versions
+- https://asdf-vm.com/#/core-configuration?id=homeasdfrc
+- https://asdf-vm.com/#/plugins-create?id=binlist-legacy-filenames
+- https://asdf-vm.com/#/plugins-create?id=binparse-legacy-file
+- `print -lr -- ${ASDF_DATA_DIR:-~/.asdf}/plugins/*(/N:t)`
+- `print -lr -- $(${ASDF_DATA_DIR:-~/.asdf}/plugins/ruby/bin/list-legacy-filenames)`
+- `${ASDF_DATA_DIR:-~/.asdf}/plugins/ruby/bin/parse-legacy-file ~/powerlevel10k/test/foo/.ruby-version`
+ - if empty, keep looking
+- ASDF_${upcase_name}_VERSION wins over everything
+- deeper version overrides win
+- .tool-versions wins over .ruby-version when in the same directory
+- versions for different tools are looked up independently: if /foo/bar/.tool-versions doesn't
+ override "ruby" it's as if it doesn't exist as far as ruby version is concerned.
+- after upglob look $HOME (same file patterns)
+- finally look at $ASDF_DEFAULT_TOOL_VERSIONS_FILENAME (single file; parse it like .tool-versions)
+- ${ASDF_CONFIG_FILE:-~/.asdfrc} parsing:
+ opt="$(
+ grep -E "^\\s*legacy_version_file\\s*=\\s*" "$config_path" |
+ head |
+ awk -F '=' '{print $2}' |
+ sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')"
+ [[ $opt == yes ]]
+
+Stat caches:
+- ${ASDF_CONFIG_FILE:-~/.asdfrc} => legacy_version_file (yes or no)
+- ${ASDF_DATA_DIR:-~/.asdf}/plugins => list of plugins
+- ${ASDF_DATA_DIR:-~/.asdf}/plugins/ruby/bin => list of relevant scripts
+ (list-legacy-filenames and parse-legacy-file)
+- ${ASDF_DATA_DIR:-~/.asdf}/plugins/ruby/bin/list-legacy-filenames => list (or pattern made from it?)
+- /foo/bar => { tool => version } (permanent cache via stat cache)
+
+---
+
+typeset -ga _p9k_asdf_meta_files=(
+ ${ASDF_CONFIG_FILE:-~/.asdfrc}
+ ${ASDF_DATA_DIR:-~/.asdf}/plugins
+ ${ASDF_DATA_DIR:-~/.asdf}/plugins/*/bin{,/list-legacy-filenames,/parse-legacy-file}(N)
+)
+typeset -g _p9k_asdf_meta_sig # $ASDF_CONFIG_FILE ':' $ASDF_DATA_DIR ':' $ASDF_DEFAULT_TOOL_VERSIONS_FILENAME ':' $ASDF_DEFAULT_TOOL_VERSIONS_FILENAME ':' ${(j.:.)mtimes}
+
+typeset -g _p9k_asdf_file_pat # example: '(.tool-versions|.ruby-version)'
+typeset -gA _p9k_asdf_file_info # .ruby-version => ruby1 ('1' means parse-legacy-file is present)