alice-in -- Alice in VIRTUAL Land This library is for treating virtual environment.
This library is for treating virtual environment. This library can handle the following environments:
For example,
alicein.IsInWSL()
: Detect current Linux environment is on WSLalicein.IsWSLInstalled()
: Detect current Windows environment has WSLalicein.IsInDocker()
: Detect current environment is in DockerConvertToHostPath(path string) string
It returns host style path if current env is in WSL.
Otherwise, return input path as is.
Docker doesn’t support this.
ConvertToGuestPath(path string) string
It returns guest style path.
Otherwise, return input path as is.
Docker doesn’t support this.
alicein.NativeEnvironment() Environment
: It is as same as using os package directlyalicein.WSLGuestEnvironment() Environment
: On Windows and WSL is installed, it returns interface to handle WSL. Otherwise, it returns native environment.alicein.WSLHostEnvironment() Environment
: On Linux in WSL, it returns interface to handle Host Windows. Otherwise, it returns native environment.alicein.DetectedEnvironment() Environment
: It returns one of Naitve/WSLHost/WSLGuest environment based on parent process.alicein.DockerEnvironment(target) Environment
: Detect current environment is in Docker. If target prefixed “image:”, it means image name. Otherwise, it means running container name.Environment
interface wraps os
/ os/exec
packages. Docker environment only support Exec()
.
Exec(ctx context.Context, command string, args ...string) *exec.Cmd
It execs commands in current environment.
In Windows’s WSL host environment, exec via “wsl” command wrapper.
In Docker, exec via “docker exec”.
Open(file string)
It opens file by associated program.
On Windows, “start” is used. And “open” is used on mac,
and “xdg-open” is used on other environment.
UserHomeDir() (string, error)
It returns in virtual environment.
Otherwise it returns standard os.UserHomeDir()
UserConfigDir() (string, error)
It returns in virtual environment.
Otherwise it returns standard os.UserConfigDir()
UserCacheDir() (string, error)
It returns in virtual environment.
Otherwise it returns standard os.UserCacheDir()
Environ() map[string]string
It returns environment variables in virtual environment.
Otherwise it returns os.Environment
$ go run testdata/detect/main.go
🐋 alicein.IsInDocker(): false
田 aliciein.IsInWSL(): true
🐧 WSL Guest: alicein.WSLGuest()
🐧 UserHomeDir(): /home/shibu
🐧 UserConfigDir(): /home/shibu/.config
🐧 UserCacheDir(): /home/shibu/.cache
田 Exec(context.Background(), "calc")
田 WSL Host: alicein.WSLHost()
田 UserHomeDir(): C:\Users\yoshi
田 UserConfigDir(): C:\Users\yoshi\AppData\Roaming
田 UserCacheDir(): C:\Users\yoshi\AppData\Local
Path conversion between 🐧 ⇔ 田
🐧 alicein.ConvertToGuestPath(`/usr/bin/yes`): /usr/bin/yes
🐧 alicein.ConvertToGuestPath(`C:\windows\system32`): /mnt/c/windows/system32
田 alicein.ConvertToHostPath(`/usr/bin/echo`): \\wsl$\Ubuntu-20.04\usr\bin\echo
田 alicein.ConvertToHostPath(`C:\windows\system32`): C:\\windows\\system32
Apache 2