dsfx/pkg/system/default.go

86 lines
2.2 KiB
Go

package system
import (
"os"
"koti.casa/numenor-labs/dsfx/pkg/disk"
)
// Default returns a default implementation of the System interface.
func Default() System {
return &osSystem{}
}
type osSystem struct{}
// Args returns the command-line arguments passed to the program. The name of the
// program is filtered out, so it only returns the arguments provided by the user.
// It implements the System interface.
func (s *osSystem) Args() []string {
return os.Args[1:]
}
// Arg returns the command-line argument at the specified index. If the index is
// out of range, it returns an empty string.
// // It implements the System interface.
func (s *osSystem) Arg(i int) string {
if i < 0 || i >= len(os.Args) {
return ""
}
return os.Args[i+1] // +1 to skip the program name
}
// UserHomeDir returns the user's home directory.
// It implements the System interface.
func (s *osSystem) UserHomeDir() (string, error) {
return os.UserHomeDir()
}
// UserConfigDir returns the user's configuration directory.
// It implements the System interface.
func (s *osSystem) UserConfigDir() (string, error) {
return os.UserConfigDir()
}
// UserCacheDir returns the user's cache directory.
// It implements the System interface.
func (s *osSystem) UserCacheDir() (string, error) {
return os.UserCacheDir()
}
// TempDir returns the directory used for temporary files.
// It implements the System interface.
func (s *osSystem) TempDir() string {
return os.TempDir()
}
// Stdout returns the standard output file.
// It implements the System interface.
func (s *osSystem) Stdout() disk.File {
return os.Stdout
}
// Stderr returns the standard error file.
// It implements the System interface.
func (s *osSystem) Stderr() disk.File {
return os.Stderr
}
// Exit terminates the program with the given exit code.
// It implements the System interface.
func (s *osSystem) Exit(code int) {
os.Exit(code)
}
// GetEnv retrieves the value of the environment variable named by key.
// It implements the System interface.
func (s *osSystem) GetEnv(key string) string {
return os.Getenv(key)
}
// SetEnv sets the value of the environment variable named by key to value.
// It implements the System interface.
func (s *osSystem) SetEnv(key, value string) error {
return os.Setenv(key, value)
}