| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
- //
- // This Source Code Form is subject to the terms of the MIT License.
- // If a copy of the MIT was not distributed with this file,
- // You can obtain one at https://github.com/gogf/gf.
- package cmd
- import (
- "bytes"
- "context"
- "github.com/olekukonko/tablewriter"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/gogf/gf/v2/os/gproc"
- "github.com/gogf/gf/v2/text/gregex"
- "github.com/gogf/gf/v2/text/gstr"
- "github.com/gogf/gf/cmd/gf/v2/internal/utility/mlog"
- )
- var (
- Env = cEnv{}
- )
- type cEnv struct {
- g.Meta `name:"env" brief:"show current Golang environment variables"`
- }
- type cEnvInput struct {
- g.Meta `name:"env"`
- }
- type cEnvOutput struct{}
- func (c cEnv) Index(ctx context.Context, in cEnvInput) (out *cEnvOutput, err error) {
- result, err := gproc.ShellExec(ctx, "go env")
- if err != nil {
- mlog.Fatal(err)
- }
- if result == "" {
- mlog.Fatal(`retrieving Golang environment variables failed, did you install Golang?`)
- }
- var (
- lines = gstr.Split(result, "\n")
- buffer = bytes.NewBuffer(nil)
- )
- array := make([][]string, 0)
- for _, line := range lines {
- line = gstr.Trim(line)
- if line == "" {
- continue
- }
- if gstr.Pos(line, "set ") == 0 {
- line = line[4:]
- }
- match, _ := gregex.MatchString(`(.+?)=(.*)`, line)
- if len(match) < 3 {
- mlog.Fatalf(`invalid Golang environment variable: "%s"`, line)
- }
- array = append(array, []string{gstr.Trim(match[1]), gstr.Trim(match[2])})
- }
- tw := tablewriter.NewWriter(buffer)
- tw.SetColumnAlignment([]int{tablewriter.ALIGN_LEFT, tablewriter.ALIGN_LEFT})
- tw.AppendBulk(array)
- tw.Render()
- mlog.Print(buffer.String())
- return
- }
|