Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Forward env vars to commands #486

Merged
merged 4 commits into from
Oct 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v1
with:
go-version: 1.18.x
go-version: 1.20.x
- name: Run goreleaser
uses: goreleaser/goreleaser-action@v1
with:
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Continuous Integration

env:
GO_VERSION: 1.18
GO_VERSION: 1.20

on:
push:
Expand All @@ -27,7 +27,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v1
with:
go-version: 1.18.x
go-version: 1.20.x
- name: Cache build
uses: actions/cache@v1
with:
Expand All @@ -49,7 +49,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v1
with:
go-version: 1.18.x
go-version: 1.20.x
- name: Cache build
uses: actions/cache@v1
with:
Expand Down Expand Up @@ -77,7 +77,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v1
with:
go-version: 1.18.x
go-version: 1.20.x
- name: Cache build
uses: actions/cache@v1
with:
Expand All @@ -104,7 +104,7 @@ jobs:
- name: Setup Go
uses: actions/setup-go@v1
with:
go-version: 1.18.x
go-version: 1.20.x
- name: Cache build
uses: actions/cache@v1
with:
Expand Down
3 changes: 2 additions & 1 deletion .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,5 @@ linters-settings:
max-func-lines: 0

run:
go: 1.18
go: '1.20'
timeout: 10m
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
ARG BASE_IMAGE_BUILDER=golang
ARG ALPINE_VERSION=3.15
ARG GO_VERSION=1.18
ARG GO_VERSION=1.20

FROM ${BASE_IMAGE_BUILDER}:${GO_VERSION}-alpine${ALPINE_VERSION} AS builder
ARG GOARCH=amd64
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/jesseduffield/lazydocker

go 1.18
go 1.20

require (
github.com/OpenPeeDeeP/xdg v0.2.1-0.20190312153938-4ba9e1eb294c
Expand Down
2 changes: 1 addition & 1 deletion pkg/commands/container.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ func (c *Container) Attach() (*exec.Cmd, error) {

c.Log.Warn(fmt.Sprintf("attaching to container %s", c.Name))
// TODO: use SDK
cmd := c.OSCommand.PrepareSubProcess("docker", "attach", "--sig-proxy=false", c.ID)
cmd := c.OSCommand.NewCmd("docker", "attach", "--sig-proxy=false", c.ID)
return cmd, nil
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/commands/dummies.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package commands

import (
"io/ioutil"
"io"

"github.com/jesseduffield/lazydocker/pkg/config"
"github.com/jesseduffield/lazydocker/pkg/i18n"
Expand Down Expand Up @@ -31,7 +31,7 @@ func NewDummyAppConfig() *config.AppConfig {
// NewDummyLog creates a new dummy Log for testing
func NewDummyLog() *logrus.Entry {
log := logrus.New()
log.Out = ioutil.Discard
log.Out = io.Discard
return log.WithField("test", "test")
}

Expand Down
23 changes: 12 additions & 11 deletions pkg/commands/os.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package commands
import (
"context"
"fmt"
"io/ioutil"
"io"
"os"
"os/exec"
"path/filepath"
Expand Down Expand Up @@ -87,7 +87,7 @@ func (c *OSCommand) RunExecutable(cmd *exec.Cmd) error {
// ExecutableFromString takes a string like `docker ps -a` and returns an executable command for it
func (c *OSCommand) ExecutableFromString(commandStr string) *exec.Cmd {
splitCmd := str.ToArgv(commandStr)
return c.command(splitCmd[0], splitCmd[1:]...)
return c.NewCmd(splitCmd[0], splitCmd[1:]...)
}

// Same as ExecutableFromString but cancellable via a context
Expand All @@ -96,6 +96,12 @@ func (c *OSCommand) ExecutableFromStringContext(ctx context.Context, commandStr
return exec.CommandContext(ctx, splitCmd[0], splitCmd[1:]...)
}

func (c *OSCommand) NewCmd(cmdName string, commandArgs ...string) *exec.Cmd {
cmd := c.command(cmdName, commandArgs...)
cmd.Env = os.Environ()
return cmd
}

func (c *OSCommand) NewCommandStringWithShell(commandStr string) string {
var quotedCommand string
// Windows does not seem to like quotes around the command
Expand Down Expand Up @@ -187,12 +193,7 @@ func (c *OSCommand) EditFile(filename string) (*exec.Cmd, error) {
return nil, errors.New("No editor defined in $VISUAL or $EDITOR")
}

return c.PrepareSubProcess(editor, filename), nil
}

// PrepareSubProcess iniPrepareSubProcessrocess then tells the Gui to switch to it
func (c *OSCommand) PrepareSubProcess(cmdName string, commandArgs ...string) *exec.Cmd {
return c.command(cmdName, commandArgs...)
return c.NewCmd(editor, filename), nil
}

// Quote wraps a message in platform-specific quotation marks
Expand Down Expand Up @@ -239,7 +240,7 @@ func (c *OSCommand) AppendLineToFile(filename, line string) error {

// CreateTempFile writes a string to a new temp file and returns the file's name
func (c *OSCommand) CreateTempFile(filename, content string) (string, error) {
tmpfile, err := ioutil.TempFile("", filename)
tmpfile, err := os.CreateTemp("", filename)
if err != nil {
c.Log.Error(err)
return "", WrapError(err)
Expand Down Expand Up @@ -301,7 +302,7 @@ func (c *OSCommand) GetLazydockerPath() string {

// RunCustomCommand returns the pointer to a custom command
func (c *OSCommand) RunCustomCommand(command string) *exec.Cmd {
return c.PrepareSubProcess(c.Platform.shell, c.Platform.shellArg, command)
return c.NewCmd(c.Platform.shell, c.Platform.shellArg, command)
}

// PipeCommands runs a heap of commands and pipes their inputs/outputs together like A | B | C
Expand Down Expand Up @@ -341,7 +342,7 @@ func (c *OSCommand) PipeCommands(commandStrings ...string) error {
c.Log.Error(err)
}

if b, err := ioutil.ReadAll(stderr); err == nil {
if b, err := io.ReadAll(stderr); err == nil {
if len(b) > 0 {
finalErrors = append(finalErrors, string(b))
}
Expand Down
9 changes: 4 additions & 5 deletions pkg/commands/os_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package commands

import (
"fmt"
"io/ioutil"
"os"
"os/exec"
"testing"
Expand Down Expand Up @@ -90,7 +89,7 @@ func TestOSCommandEditFile(t *testing.T) {

assert.EqualValues(t, "nano", name)

return nil
return exec.Command("exit", "0")
},
func(env string) string {
if env == "VISUAL" {
Expand All @@ -112,7 +111,7 @@ func TestOSCommandEditFile(t *testing.T) {

assert.EqualValues(t, "emacs", name)

return nil
return exec.Command("exit", "0")
},
func(env string) string {
if env == "EDITOR" {
Expand All @@ -134,7 +133,7 @@ func TestOSCommandEditFile(t *testing.T) {

assert.EqualValues(t, "vi", name)

return nil
return exec.Command("exit", "0")
},
func(env string) string {
return ""
Expand Down Expand Up @@ -290,7 +289,7 @@ func TestOSCommandCreateTempFile(t *testing.T) {
func(path string, err error) {
assert.NoError(t, err)

content, err := ioutil.ReadFile(path)
content, err := os.ReadFile(path)
assert.NoError(t, err)

assert.Equal(t, "content", string(content))
Expand Down
3 changes: 1 addition & 2 deletions pkg/commands/ssh/ssh.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"context"
"fmt"
"io"
"io/ioutil"
"net"
"net/url"
"os"
Expand Down Expand Up @@ -37,7 +36,7 @@ func NewSSHHandler(oSCommand CmdKiller) *SSHHandler {
return (&net.Dialer{}).DialContext(ctx, network, addr)
},
startCmd: func(cmd *exec.Cmd) error { return cmd.Start() },
tempDir: ioutil.TempDir,
tempDir: os.MkdirTemp,
getenv: os.Getenv,
setenv: os.Setenv,
}
Expand Down
3 changes: 1 addition & 2 deletions pkg/config/app_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
package config

import (
"io/ioutil"
"os"
"path/filepath"
"strings"
Expand Down Expand Up @@ -569,7 +568,7 @@ func loadUserConfig(configDir string, base *UserConfig) (*UserConfig, error) {
}
}

content, err := ioutil.ReadFile(fileName)
content, err := os.ReadFile(fileName)
if err != nil {
return nil, err
}
Expand Down
6 changes: 3 additions & 3 deletions pkg/gui/subprocess.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package gui

import (
"fmt"
"io/ioutil"
"io"
"os"
"os/exec"
"os/signal"
Expand Down Expand Up @@ -65,8 +65,8 @@ func (gui *Gui) runCommand(cmd *exec.Cmd, msg string) {
}

cmd.Stdin = nil
cmd.Stdout = ioutil.Discard
cmd.Stderr = ioutil.Discard
cmd.Stdout = io.Discard
cmd.Stderr = io.Discard

gui.promptToReturn()
}
4 changes: 2 additions & 2 deletions pkg/log/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package log

import (
"fmt"
"io/ioutil"
"io"
"os"
"path/filepath"

Expand Down Expand Up @@ -54,7 +54,7 @@ func newDevelopmentLogger(config *config.AppConfig) *logrus.Logger {

func newProductionLogger() *logrus.Logger {
log := logrus.New()
log.Out = ioutil.Discard
log.Out = io.Discard
log.SetLevel(logrus.ErrorLevel)
return log
}
Loading