Documentation
¶
Index ¶
- Constants
- type DefaultShell
- func (s *DefaultShell) AddCurrentDirToTrustedFile() error
- func (s *DefaultShell) CheckResetFlags() (bool, error)
- func (s *DefaultShell) CheckTrustedDirectory() error
- func (s *DefaultShell) Exec(command string, args ...string) (string, error)
- func (s *DefaultShell) ExecProgress(message string, command string, args ...string) (string, error)
- func (s *DefaultShell) ExecSilent(command string, args ...string) (string, error)
- func (s *DefaultShell) ExecSudo(message string, command string, args ...string) (string, error)
- func (s *DefaultShell) GetProjectRoot() (string, error)
- func (s *DefaultShell) GetSessionToken() (string, error)
- func (s *DefaultShell) Initialize() error
- func (s *DefaultShell) InstallHook(shellName string) error
- func (s *DefaultShell) PrintAlias(aliases map[string]string)
- func (s *DefaultShell) PrintEnvVars(envVars map[string]string)
- func (s *DefaultShell) Reset()
- func (s *DefaultShell) ResetSessionToken()
- func (s *DefaultShell) SetVerbosity(verbose bool)
- func (s *DefaultShell) UnsetAlias(aliases []string)
- func (s *DefaultShell) UnsetEnvs(envVars []string)
- func (s *DefaultShell) WriteResetToken() (string, error)
- type HookContext
- type MockShell
- func (s *MockShell) AddCurrentDirToTrustedFile() error
- func (s *MockShell) CheckResetFlags() (bool, error)
- func (s *MockShell) CheckTrustedDirectory() error
- func (s *MockShell) Exec(command string, args ...string) (string, error)
- func (s *MockShell) ExecProgress(message string, command string, args ...string) (string, error)
- func (s *MockShell) ExecSilent(command string, args ...string) (string, error)
- func (s *MockShell) ExecSudo(message string, command string, args ...string) (string, error)
- func (s *MockShell) GetProjectRoot() (string, error)
- func (s *MockShell) GetSessionToken() (string, error)
- func (s *MockShell) Initialize() error
- func (s *MockShell) InstallHook(shellName string) error
- func (s *MockShell) PrintAlias(envVars map[string]string)
- func (s *MockShell) PrintEnvVars(envVars map[string]string)
- func (s *MockShell) Reset()
- func (s *MockShell) SetVerbosity(verbose bool)
- func (s *MockShell) UnsetAlias(aliases []string)
- func (s *MockShell) UnsetEnvs(envVars []string)
- func (s *MockShell) WriteResetToken() (string, error)
- type SecureShell
- type Shell
- type Shims
Constants ¶
const SessionTokenPrefix = ".session."
SessionTokenPrefix is the prefix used for session token files
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DefaultShell ¶
type DefaultShell struct {
Shell
// contains filtered or unexported fields
}
DefaultShell is the default implementation of the Shell interface
func NewDefaultShell ¶
func NewDefaultShell(injector di.Injector) *DefaultShell
NewDefaultShell creates a new instance of DefaultShell
func (*DefaultShell) AddCurrentDirToTrustedFile ¶ added in v0.3.0
func (s *DefaultShell) AddCurrentDirToTrustedFile() error
AddCurrentDirToTrustedFile adds the current directory to a trusted list stored in a file. Creates necessary directories if they don't exist. Checks if the directory is already trusted before adding.
func (*DefaultShell) CheckResetFlags ¶ added in v0.5.6
func (s *DefaultShell) CheckResetFlags() (bool, error)
CheckResetFlags checks if a reset signal file exists for the current session token. It returns true if the specific session token file exists and always removes all .session.* files.
func (*DefaultShell) CheckTrustedDirectory ¶ added in v0.3.0
func (s *DefaultShell) CheckTrustedDirectory() error
CheckTrustedDirectory verifies if the current directory is in the trusted file list.
func (*DefaultShell) Exec ¶
func (s *DefaultShell) Exec(command string, args ...string) (string, error)
Exec runs a command with args, capturing stdout and stderr. It prints output and returns stdout as a string. If the command is "sudo", it connects stdin to the terminal for password input.
func (*DefaultShell) ExecProgress ¶
ExecProgress is a method of the DefaultShell struct that executes a command with a progress indicator. It takes a message, a command, and arguments, using the Exec method if verbose mode is enabled. Otherwise, it captures stdout and stderr with pipes and uses a spinner to show progress. The method returns the command's stdout as a string and any error encountered.
func (*DefaultShell) ExecSilent ¶
func (s *DefaultShell) ExecSilent(command string, args ...string) (string, error)
ExecSilent is a method that runs a command quietly, capturing its output. It returns the command's stdout as a string and any error encountered.
func (*DefaultShell) ExecSudo ¶
ExecSudo runs a command with 'sudo', ensuring elevated privileges. It handles password prompts by connecting to the terminal and captures the command's output. If verbose mode is enabled, it prints a message to stderr. The function returns the command's stdout or an error if execution fails.
func (*DefaultShell) GetProjectRoot ¶
func (s *DefaultShell) GetProjectRoot() (string, error)
GetProjectRoot finds the project root. It checks for a cached root first. If not found, it looks for "windsor.yaml" or "windsor.yml" in the current directory and its parents up to a maximum depth. Returns the root path or an empty string if not found.
func (*DefaultShell) GetSessionToken ¶ added in v0.5.6
func (s *DefaultShell) GetSessionToken() (string, error)
GetSessionToken retrieves or generates a session token. It first checks if a token is already stored in memory. If not, it looks for a token in the environment variable. If no token is found in the environment, it generates a new token.
func (*DefaultShell) Initialize ¶
func (s *DefaultShell) Initialize() error
Initialize initializes the shell
func (*DefaultShell) InstallHook ¶
func (s *DefaultShell) InstallHook(shellName string) error
InstallHook sets up a shell hook for a specified shell using a template with the Windsor path. It returns an error if the shell is unsupported. For PowerShell, it formats the script into a single line.
func (*DefaultShell) PrintAlias ¶
func (s *DefaultShell) PrintAlias(aliases map[string]string)
PrintAlias prints the aliases for the shell.
func (*DefaultShell) PrintEnvVars ¶
func (s *DefaultShell) PrintEnvVars(envVars map[string]string)
PrintEnvVars prints the provided environment variables in a sorted order. If the value of an environment variable is an empty string, it will print an unset command.
func (*DefaultShell) Reset ¶ added in v0.5.6
func (s *DefaultShell) Reset()
Reset removes all managed environment variables and aliases. It uses the environment variables "WINDSOR_MANAGED_ENV" and "WINDSOR_MANAGED_ALIAS" to retrieve the previous set of managed environment variables and aliases, respectively. These environment variables represent the previous set of managed values that need to be reset.
func (*DefaultShell) ResetSessionToken ¶ added in v0.5.7
func (s *DefaultShell) ResetSessionToken()
ResetSessionToken resets the session token - used primarily for testing
func (*DefaultShell) SetVerbosity ¶ added in v0.2.1
func (s *DefaultShell) SetVerbosity(verbose bool)
SetVerbosity sets the verbosity flag
func (*DefaultShell) UnsetAlias ¶ added in v0.5.6
func (s *DefaultShell) UnsetAlias(aliases []string)
UnsetAlias generates commands to unset multiple aliases. For Unix shells, this produces a separate 'unalias' command for each alias.
func (*DefaultShell) UnsetEnvs ¶ added in v0.5.6
func (s *DefaultShell) UnsetEnvs(envVars []string)
UnsetEnvs generates a command to unset multiple environment variables. For Unix shells, this produces a single 'unset' command with all variables in one line.
func (*DefaultShell) WriteResetToken ¶ added in v0.5.6
func (s *DefaultShell) WriteResetToken() (string, error)
WriteResetToken writes a reset token file based on the WINDSOR_SESSION_TOKEN environment variable. If the environment variable doesn't exist, no file is written. Returns the path to the written file or an empty string if no file was written.
type HookContext ¶
type HookContext struct {
// SelfPath is the unescaped absolute path to direnv
SelfPath string
}
HookContext are the variables available during hook template evaluation
type MockShell ¶
type MockShell struct {
DefaultShell
InitializeFunc func() error
PrintEnvVarsFunc func(envVars map[string]string)
PrintAliasFunc func(envVars map[string]string)
GetProjectRootFunc func() (string, error)
ExecFunc func(command string, args ...string) (string, error)
ExecSilentFunc func(command string, args ...string) (string, error)
ExecProgressFunc func(message string, command string, args ...string) (string, error)
ExecSudoFunc func(message string, command string, args ...string) (string, error)
InstallHookFunc func(shellName string) error
SetVerbosityFunc func(verbose bool)
AddCurrentDirToTrustedFileFunc func() error
CheckTrustedDirectoryFunc func() error
UnsetEnvsFunc func(envVars []string)
UnsetAliasFunc func(aliases []string)
WriteResetTokenFunc func() (string, error)
GetSessionTokenFunc func() (string, error)
CheckResetFlagsFunc func() (bool, error)
ResetFunc func()
}
func NewMockShell ¶
NewMockShell creates a new instance of MockShell. If injector is provided, it sets the injector on MockShell.
func (*MockShell) AddCurrentDirToTrustedFile ¶ added in v0.3.0
AddCurrentDirToTrustedFile calls the custom AddCurrentDirToTrustedFileFunc if provided.
func (*MockShell) CheckResetFlags ¶ added in v0.5.6
CheckResetFlags checks if a reset signal file exists for the current session
func (*MockShell) CheckTrustedDirectory ¶ added in v0.3.0
CheckTrustedDirectory calls the custom CheckTrustedDirectoryFunc if provided.
func (*MockShell) ExecProgress ¶
ExecProgress calls the custom ExecProgressFunc if provided.
func (*MockShell) ExecSilent ¶
ExecSilent calls the custom ExecSilentFunc if provided.
func (*MockShell) GetProjectRoot ¶
GetProjectRoot calls the custom GetProjectRootFunc if provided.
func (*MockShell) GetSessionToken ¶ added in v0.5.6
GetSessionToken retrieves or generates a session token
func (*MockShell) Initialize ¶
Initialize calls the custom InitializeFunc if provided.
func (*MockShell) InstallHook ¶
InstallHook calls the custom InstallHook if provided.
func (*MockShell) PrintAlias ¶
PrintAlias calls the custom PrintAliasFunc if provided.
func (*MockShell) PrintEnvVars ¶
PrintEnvVars calls the custom PrintEnvVarsFunc if provided.
func (*MockShell) Reset ¶ added in v0.5.6
func (s *MockShell) Reset()
Reset calls the custom ResetFunc if provided.
func (*MockShell) SetVerbosity ¶ added in v0.2.1
SetVerbosity calls the custom SetVerbosityFunc if provided.
func (*MockShell) UnsetAlias ¶ added in v0.5.6
UnsetAlias calls the custom UnsetAliasFunc if provided.
func (*MockShell) WriteResetToken ¶ added in v0.5.6
WriteResetToken writes a reset token file
type SecureShell ¶
type SecureShell struct {
DefaultShell
// contains filtered or unexported fields
}
func NewSecureShell ¶
func NewSecureShell(injector di.Injector) *SecureShell
NewSecureShell creates a new instance of SecureShell.
func (*SecureShell) Exec ¶
func (s *SecureShell) Exec(command string, args ...string) (string, error)
Exec executes a command on the remote host via SSH and returns its output as a string.
func (*SecureShell) ExecProgress ¶
ExecProgress executes a command and returns its output as a string
func (*SecureShell) ExecSilent ¶
func (s *SecureShell) ExecSilent(command string, args ...string) (string, error)
ExecSilent executes a command and returns its output as a string without printing to stdout or stderr
func (*SecureShell) Initialize ¶
func (s *SecureShell) Initialize() error
Initialize initializes the SecureShell instance.
type Shell ¶
type Shell interface {
Initialize() error
SetVerbosity(verbose bool)
PrintEnvVars(envVars map[string]string)
PrintAlias(envVars map[string]string)
GetProjectRoot() (string, error)
Exec(command string, args ...string) (string, error)
ExecSilent(command string, args ...string) (string, error)
ExecSudo(message string, command string, args ...string) (string, error)
ExecProgress(message string, command string, args ...string) (string, error)
InstallHook(shellName string) error
AddCurrentDirToTrustedFile() error
CheckTrustedDirectory() error
UnsetEnvs(envVars []string)
UnsetAlias(aliases []string)
WriteResetToken() (string, error)
GetSessionToken() (string, error)
CheckResetFlags() (bool, error)
Reset()
}
Shell is the interface that defines shell operations.
type Shims ¶ added in v0.5.7
type Shims struct {
// OS operations
Getwd func() (string, error)
Stat func(name string) (os.FileInfo, error)
Executable func() (string, error)
// Standard I/O operations
Stderr func() io.Writer
SetStderr func(w io.Writer)
Stdout func() io.Writer
SetStdout func(w io.Writer)
Pipe func() (*os.File, *os.File, error)
// Shell operations
UnsetEnvs func(envVars []string)
UnsetAlias func(aliases []string)
// Exec operations
Command func(name string, arg ...string) *exec.Cmd
LookPath func(file string) (string, error)
OpenFile func(name string, flag int, perm os.FileMode) (*os.File, error)
WriteFile func(name string, data []byte, perm os.FileMode) error
ReadFile func(name string) ([]byte, error)
MkdirAll func(path string, perm os.FileMode) error
Remove func(name string) error
RemoveAll func(path string) error
Chdir func(dir string) error
Setenv func(key, value string) error
Getenv func(key string) string
UserHomeDir func() (string, error)
// Exec operations
CmdRun func(cmd *exec.Cmd) error
CmdStart func(cmd *exec.Cmd) error
CmdWait func(cmd *exec.Cmd) error
StdoutPipe func(cmd *exec.Cmd) (io.ReadCloser, error)
StderrPipe func(cmd *exec.Cmd) (io.ReadCloser, error)
StdinPipe func(cmd *exec.Cmd) (io.WriteCloser, error)
// Template operations
NewTemplate func(name string) *template.Template
TemplateParse func(tmpl *template.Template, text string) (*template.Template, error)
TemplateExecute func(tmpl *template.Template, wr io.Writer, data any) error
ExecuteTemplate func(tmpl *template.Template, data interface{}) error
// Bufio operations
NewScanner func(r io.Reader) *bufio.Scanner
ScannerScan func(scanner *bufio.Scanner) bool
ScannerErr func(scanner *bufio.Scanner) error
ScannerText func(scanner *bufio.Scanner) string
NewWriter func(w io.Writer) *bufio.Writer
// Filepath operations
Glob func(pattern string) ([]string, error)
Join func(elem ...string) string
// Random operations
RandRead func(b []byte) (n int, err error)
}
Shims provides mockable wrappers around system and runtime functions