paths

package
v1.19.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 11, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
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

View Source
var FileAlreadyExist = files.FileAlreadyExist

This allows swapping it during tests

View Source
var Files = struct {
	ShellConfig string
	ZshEnv      string
}{
	ShellConfig: GetShellConfigFile(),
	ZshEnv:      GetZshEnvFile(),
}

Files contains all file path structures

View Source
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

func EnsureScratchDir() (string, error)

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

func ExpandHome(path string) string

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 GetAppDir

func GetAppDir(subPath ...string) string

func GetCacheDir

func GetCacheDir(subPath ...string) string

Returns XDG_CACHE_HOME or fallback to ~/.cache Reads environment variables dynamically to support testing

func GetConfigDir

func GetConfigDir(subPath ...string) string

Returns XDG_CONFIG_HOME or fallback to ~/.config Reads environment variables dynamically to support testing

func GetDataDir

func GetDataDir(subPath ...string) string

Returns XDG_DATA_HOME or fallback to ~/.local/share Reads environment variables dynamically to support testing

func GetHomeDir

func GetHomeDir(subPath ...string) string

func GetShellConfigFile

func GetShellConfigFile() string

func GetStateDir

func GetStateDir(subPath ...string) string

Returns XDG_STATE_HOME or fallback to ~/.local/state Reads environment variables dynamically to support testing

func GetSystemApplicationsDir

func GetSystemApplicationsDir(isMac bool, subPath ...string) string

Returns system-level applications dir

func GetSystemFontsDir

func GetSystemFontsDir(isMac bool, subPath ...string) string

Returns system-level fonts dir

func GetUserApplicationsDir

func GetUserApplicationsDir(isMac bool, subPath ...string) string

Returns user-level applications dir

func GetUserFontsDir

func GetUserFontsDir(isMac bool, subPath ...string) string

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL