mirror of
https://github.com/xiaoqidun/goenv.git
synced 2024-11-22 08:06:46 +08:00
78 lines
1.5 KiB
Go
78 lines
1.5 KiB
Go
package main
|
||
|
||
import (
|
||
"flag"
|
||
"fmt"
|
||
"os"
|
||
"os/exec"
|
||
"runtime"
|
||
)
|
||
|
||
var (
|
||
author bool
|
||
)
|
||
|
||
func init() {
|
||
flag.BoolVar(&author, "author", false, "关于本软件开发者")
|
||
flag.Parse()
|
||
}
|
||
|
||
func main() {
|
||
if author {
|
||
Author()
|
||
return
|
||
}
|
||
binary := "docker"
|
||
if runtime.GOOS == "linux" {
|
||
podman, err := exec.LookPath("podman")
|
||
if err == nil {
|
||
binary = podman
|
||
}
|
||
}
|
||
docker := &DockerGoEnv{
|
||
Image: "ccr.ccs.tencentyun.com/xiaoqidun/goenv",
|
||
Binary: binary,
|
||
WorkDir: "/go/src/app",
|
||
AutoDelete: true,
|
||
MountWorkDir: true,
|
||
}
|
||
docker.Run()
|
||
}
|
||
|
||
func Author() {
|
||
fmt.Println("welcome to our website https://aite.xyz/")
|
||
fmt.Println("----------------------------------------")
|
||
fmt.Println("腾讯扣扣:88966001")
|
||
fmt.Println("电子邮箱:xiaoqidun@gmail.com")
|
||
}
|
||
|
||
type DockerGoEnv struct {
|
||
Image string
|
||
Binary string
|
||
CmdArgs []string
|
||
WorkDir string
|
||
AutoDelete bool
|
||
MountWorkDir bool
|
||
}
|
||
|
||
func (d *DockerGoEnv) Run() {
|
||
d.CmdArgs = []string{"run", "-it"}
|
||
if d.AutoDelete {
|
||
d.CmdArgs = append(d.CmdArgs, "--rm")
|
||
}
|
||
if d.MountWorkDir {
|
||
if pwd, err1 := os.Getwd(); err1 == nil {
|
||
d.CmdArgs = append(d.CmdArgs, "-v", pwd+":"+d.WorkDir, "-w", d.WorkDir)
|
||
}
|
||
}
|
||
if hostname, err1 := os.Hostname(); err1 == nil {
|
||
d.CmdArgs = append(d.CmdArgs, "-h", hostname)
|
||
}
|
||
d.CmdArgs = append(d.CmdArgs, d.Image)
|
||
cmd := exec.Command(d.Binary, d.CmdArgs...)
|
||
cmd.Stdin = os.Stdin
|
||
cmd.Stdout = os.Stdout
|
||
cmd.Stderr = os.Stderr
|
||
_ = cmd.Run()
|
||
}
|