Documentation
¶
Index ¶
- Constants
- Variables
- func EnsureScratchDir() (string, error)
- func ExpandHome(path string) string
- func GetAppDir(subPath ...string) string
- func GetCacheDir(subPath ...string) string
- func GetConfigDir(subPath ...string) string
- func GetDataDir(subPath ...string) string
- func GetHomeDir(subPath ...string) string
- func GetShellConfigFile() string
- func GetStateDir(subPath ...string) string
- func GetSystemApplicationsDir(isMac bool, subPath ...string) string
- func GetSystemFontsDir(isMac bool, subPath ...string) string
- func GetUserApplicationsDir(isMac bool, subPath ...string) string
- func GetUserFontsDir(isMac bool, subPath ...string) string
- func GetZshEnvFile() string
Constants ¶
const ScratchAllocPrefix = "task-"
ScratchAllocPrefix is the name prefix every scratch allocation carries (`devgeta task scratch` creates `<scratch root>/task-*` via os.MkdirTemp). It is the ownership boundary for everything that deletes inside the scratch root — both `--clean` and configure's stale-directory prune refuse to touch an entry without it, so anything a user parks under the root is left alone (ADR-0015 §3).
It lives here rather than beside the allocator because both sides need it and internal/apps/baseapp cannot import internal/tooling/task — baseapp → tooling/task → apps/git → baseapp is an import cycle.
Variables ¶
var FileAlreadyExist = files.FileAlreadyExist
This allows swapping it during tests
var Files = struct { ShellConfig string ZshEnv string }{ ShellConfig: GetShellConfigFile(), ZshEnv: GetZshEnvFile(), }
Files contains all file path structures
var Paths = struct { App struct { Root string Configs struct { Aerospace string Alacritty string Claude string Fastfetch string Fonts string Git string I3 string Neovim string OpenCode string Shared string Templates string Themes string Tmux string } Fonts struct { Alacritty string } Themes struct { Alacritty string } } Cache struct { Root string } Config struct { Root string Aerospace string Alacritty string Claude string Devgeta string Fastfetch string Fonts string Git string I3 string Nvim string OpenCode string Themes string Tmux string } Data struct { Root string } Home struct { Root string } System struct { Applications string Fonts string } User struct { Applications string Fonts string } }{ App: struct { Root string Configs struct { Aerospace string Alacritty string Claude string Fastfetch string Fonts string Git string I3 string Neovim string OpenCode string Shared string Templates string Themes string Tmux string } Fonts struct { Alacritty string } Themes struct { Alacritty string } }{ Root: GetDataDir(constants.App.Name), Configs: struct { Aerospace string Alacritty string Claude string Fastfetch string Fonts string Git string I3 string Neovim string OpenCode string Shared string Templates string Themes string Tmux string }{ Aerospace: GetAppDir(constants.App.Dir.Configs, constants.Aerospace), Alacritty: GetAppDir(constants.App.Dir.Configs, constants.Alacritty), Claude: GetAppDir(constants.App.Dir.Configs, constants.Claude), Fastfetch: GetAppDir(constants.App.Dir.Configs, constants.Fastfetch), Fonts: GetAppDir(constants.App.Dir.Configs, constants.Fonts), Git: GetAppDir(constants.App.Dir.Configs, constants.Git), I3: GetAppDir(constants.App.Dir.Configs, constants.I3), Neovim: GetAppDir(constants.App.Dir.Configs, constants.Neovim), OpenCode: GetAppDir(constants.App.Dir.Configs, constants.OpenCode), Shared: GetAppDir(constants.App.Dir.Configs, constants.Shared), Templates: GetAppDir(constants.App.Dir.Configs, constants.Templates), Themes: GetAppDir(constants.App.Dir.Configs, constants.Themes), Tmux: GetAppDir(constants.App.Dir.Configs, constants.Tmux), }, Fonts: struct { Alacritty string }{ Alacritty: GetAppDir(constants.App.Dir.Configs, constants.Fonts, constants.Alacritty), }, Themes: struct { Alacritty string }{ Alacritty: GetAppDir(constants.App.Dir.Configs, constants.Themes, constants.Alacritty), }, }, Cache: struct { Root string }{ Root: GetCacheDir(), }, Config: struct { Root string Aerospace string Alacritty string Claude string Devgeta string Fastfetch string Fonts string Git string I3 string Nvim string OpenCode string Themes string Tmux string }{ Root: GetConfigDir(), Aerospace: GetConfigDir(constants.Aerospace), Alacritty: GetConfigDir(constants.Alacritty), Claude: GetHomeDir(".claude"), Devgeta: GetConfigDir(constants.DevgetaApp), Fastfetch: GetConfigDir(constants.Fastfetch), Fonts: GetConfigDir(constants.Fonts), Git: GetConfigDir(constants.Git), I3: GetConfigDir(constants.I3), Nvim: GetConfigDir(constants.Nvim), OpenCode: GetConfigDir(constants.OpenCode), Themes: GetConfigDir(constants.Themes), Tmux: GetConfigDir(constants.Tmux), }, Data: struct { Root string }{ Root: GetDataDir(), }, Home: struct { Root string }{ Root: GetHomeDir(), }, System: struct { Applications string Fonts string }{ Applications: GetSystemApplicationsDir(runtime.GOOS == "darwin"), Fonts: GetSystemFontsDir(runtime.GOOS == "darwin"), }, User: struct { Applications string Fonts string }{ Applications: GetUserApplicationsDir(runtime.GOOS == "darwin"), Fonts: GetUserFontsDir(runtime.GOOS == "darwin"), }, }
Paths contains all directory path structures
Functions ¶
func EnsureScratchDir ¶ added in v1.16.0
EnsureScratchDir creates (if absent) and tightens devgeta's scratch directory — a disposable, per-user location under the cache root (ADR-0015) that shipped commands use instead of `/tmp` for working files. It is called both by scratch allocation itself (so a wiped `~/.cache` self-heals on the very next allocation, matching ADR-0015 §1's own argument for choosing the cache root — anything may empty it) and by configure's maintenance helper (which additionally prunes stale subdirectories, a job allocation has no reason to do).
MkdirAll alone is not sufficient to guarantee 0700: it only applies its mode to a directory it actually creates, and even then the mode is masked by the process umask. An unconditional Chmod follows to fix a directory left more permissive by an older devgeta or by anything else — only the leaf needs it, since traversing into it already requires being its owner.
func ExpandHome ¶
ExpandHome replaces a leading "~" with the user's home directory, so CLI flags can accept paths like ~/code/repo. Other paths pass through unchanged.
func GetCacheDir ¶
Returns XDG_CACHE_HOME or fallback to ~/.cache Reads environment variables dynamically to support testing
func GetConfigDir ¶
Returns XDG_CONFIG_HOME or fallback to ~/.config Reads environment variables dynamically to support testing
func GetDataDir ¶
Returns XDG_DATA_HOME or fallback to ~/.local/share Reads environment variables dynamically to support testing
func GetHomeDir ¶
func GetShellConfigFile ¶
func GetShellConfigFile() string
func GetStateDir ¶
Returns XDG_STATE_HOME or fallback to ~/.local/state Reads environment variables dynamically to support testing
func GetSystemApplicationsDir ¶
Returns system-level applications dir
func GetSystemFontsDir ¶
Returns system-level fonts dir
func GetUserApplicationsDir ¶
Returns user-level applications dir
func GetUserFontsDir ¶
Returns user-level fonts dir
func GetZshEnvFile ¶
func GetZshEnvFile() string
GetZshEnvFile returns the user's ~/.zshenv path. Unlike GetShellConfigFile, this never falls back to searching alternate candidates: ~/.zshenv is the one place zsh sources before anything else (login or not), whether or not the file exists yet.
Types ¶
This section is empty.