Skip to content

Commit 172fe4d

Browse files
authored
Merge pull request #3908 from jandubois/yq
Add `yq` subcommands to `limactl` and `lima-guestagent`
2 parents bf391ba + 29e8c44 commit 172fe4d

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

cmd/lima-guestagent/main_linux.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ import (
99
"github.com/sirupsen/logrus"
1010
"github.com/spf13/cobra"
1111

12+
"github.com/lima-vm/lima/v2/cmd/yq"
1213
"github.com/lima-vm/lima/v2/pkg/debugutil"
1314
"github.com/lima-vm/lima/v2/pkg/version"
1415
)
1516

1617
func main() {
18+
yq.MaybeRunYQ()
1719
if err := newApp().Execute(); err != nil {
1820
logrus.Fatal(err)
1921
}

cmd/limactl/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/sirupsen/logrus"
1818
"github.com/spf13/cobra"
1919

20+
"github.com/lima-vm/lima/v2/cmd/yq"
2021
"github.com/lima-vm/lima/v2/pkg/debugutil"
2122
"github.com/lima-vm/lima/v2/pkg/driver/external/server"
2223
"github.com/lima-vm/lima/v2/pkg/fsutil"
@@ -32,6 +33,7 @@ const (
3233
)
3334

3435
func main() {
36+
yq.MaybeRunYQ()
3537
if runtime.GOOS == "windows" {
3638
extras, hasExtra := os.LookupEnv("_LIMA_WINDOWS_EXTRA_PATH")
3739
if hasExtra && strings.TrimSpace(extras) != "" {

cmd/yq/yq.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// SPDX-FileCopyrightText: Copyright The Lima Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
// SPDX-FileCopyrightText: Copyright (c) 2017 Mike Farah
5+
6+
// This file has been adapted from https://github.com/mikefarah/yq/blob/v4.47.1/yq.go
7+
8+
package yq
9+
10+
import (
11+
"os"
12+
"path/filepath"
13+
"strings"
14+
15+
command "github.com/mikefarah/yq/v4/cmd"
16+
)
17+
18+
func main() {
19+
cmd := command.New()
20+
args := os.Args[1:]
21+
_, _, err := cmd.Find(args)
22+
if err != nil && args[0] != "__complete" {
23+
// default command when nothing matches...
24+
newArgs := []string{"eval"}
25+
cmd.SetArgs(append(newArgs, os.Args[1:]...))
26+
}
27+
code := 0
28+
if err := cmd.Execute(); err != nil {
29+
code = 1
30+
}
31+
os.Exit(code)
32+
}
33+
34+
// MaybeRunYQ runs as `yq` if the program name or first argument is `yq`.
35+
// Only returns to caller if os.Args doesn't contain a `yq` command.
36+
func MaybeRunYQ() {
37+
progName := filepath.Base(os.Args[0])
38+
// remove all extensions, so we match "yq.lima.exe"
39+
progName, _, _ = strings.Cut(progName, ".")
40+
if progName == "yq" {
41+
main()
42+
}
43+
if len(os.Args) > 1 && os.Args[1] == "yq" {
44+
os.Args = os.Args[1:]
45+
main()
46+
}
47+
}

0 commit comments

Comments
 (0)