package shellgetter

import "github.com/oslokommune/okctl/pkg/virtualenv/shellgetter"

Package shellgetter implements functionality for deciding which shell is the primary shell of the provided environment.

Index

Types

type DefaultMacOsShellGetter

type DefaultMacOsShellGetter struct {
	UserHomeDir string
}

DefaultMacOsShellGetter is the default implementation for getting the user's login shell on macOS

func (*DefaultMacOsShellGetter) RunDsclUserShell

func (m *DefaultMacOsShellGetter) RunDsclUserShell() (string, error)

RunDsclUserShell returns the user's login shell as returned by dscl. Example: "UserShell: /bin/bash"

type MacOsUserShellCmdGetter

type MacOsUserShellCmdGetter interface {
	RunDsclUserShell() (string, error)
}

MacOsUserShellCmdGetter gets the user's login shell on macOS

func NewMacOsCmdGetter

func NewMacOsCmdGetter(userHomeDir string) MacOsUserShellCmdGetter

NewMacOsCmdGetter returns a MacOsUserShellCmdGetter

type Os

type Os int

Os specifies which operating system is being referred

const (
	// OsLinux represents the Linux OS
	OsLinux Os = iota

	// OsDarwin represents the Darwin OS
	OsDarwin

	// OsUnknown represents an unknown OS
	OsUnknown
)

type Shell

type Shell struct {
	Command   string
	ShellType shelltype.ShellType
}

Shell contains data about a shell executable (like bash)

type ShellGetter

type ShellGetter struct {
	Os                      Os
	UserHomeDir             string
	OsEnvVars               map[string]string
	EtcStorage              storage.Storer
	CurrentUsername         string
	MacOsUserShellCmdGetter MacOsUserShellCmdGetter
}

ShellGetter is a provider for getting a shell executable based on some environment

func NewShellGetter

func NewShellGetter(
	os Os,
	macOsUserShellGetter MacOsUserShellCmdGetter,
	userHomeDir string,
	osEnvVars map[string]string,
	etcStorage storage.Storer,
	currentUsername string) *ShellGetter

NewShellGetter returns a new ShellGetter

func (*ShellGetter) Get

func (g *ShellGetter) Get() (*Shell, error)

Get returns a new Shell

Source Files

envshellcmdgetter.go linux_login_shell_cmd_getter.go macos_login_shell_cmd_getter.go os.go shellcmdgetter.go shellgetter.go

Version
v0.0.106 (latest)
Published
Oct 21, 2022
Platform
linux/amd64
Imports
8 packages
Last checked
18 hours ago

Tools for package owners.