Skip to content

Commit a5fb2d2

Browse files
Fix build on non-windows devices
Signed-off-by: Reginald Gillespie <[email protected]>
1 parent fb481e0 commit a5fb2d2

File tree

3 files changed

+51
-42
lines changed

3 files changed

+51
-42
lines changed

Diff for: updater/elevate_unix.go

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//go:build !windows
2+
3+
package updater
4+
5+
import (
6+
"os"
7+
"os/exec"
8+
)
9+
10+
func elevate() error {
11+
args := append([]string{os.Args[0]}, os.Args[1:]...)
12+
cmd := exec.Command("sudo", args...)
13+
cmd.Stdin = os.Stdin
14+
cmd.Stdout = os.Stdout
15+
cmd.Stderr = os.Stderr
16+
return cmd.Run()
17+
}

Diff for: updater/elevate_windows.go

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package updater
2+
3+
import (
4+
"os"
5+
"strings"
6+
"syscall"
7+
8+
"golang.org/x/sys/windows"
9+
)
10+
11+
func elevate() error {
12+
verb := "runas"
13+
exe, _ := os.Executable()
14+
cwd, _ := os.Getwd()
15+
args := strings.Join(os.Args[1:], " ")
16+
17+
verbPtr, err := syscall.UTF16PtrFromString(verb)
18+
if err != nil {
19+
return err
20+
}
21+
exePtr, err := syscall.UTF16PtrFromString(exe)
22+
if err != nil {
23+
return err
24+
}
25+
cwdPtr, err := syscall.UTF16PtrFromString(cwd)
26+
if err != nil {
27+
return err
28+
}
29+
argPtr, _ := syscall.UTF16PtrFromString(args)
30+
var showCmd int32 = 1
31+
return windows.ShellExecute(0, verbPtr, exePtr, argPtr, cwdPtr, showCmd)
32+
}

Diff for: updater/updater.go

+2-42
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,9 @@ import (
2323
"io"
2424
"net/http"
2525
"os"
26-
"os/exec"
2726
"path/filepath"
2827
"runtime"
2928
"strings"
30-
"syscall"
31-
32-
"golang.org/x/sys/windows"
3329

3430
log "github.com/sirupsen/logrus"
3531
)
@@ -120,47 +116,11 @@ func copyExe(from, to string) error {
120116
// requestElevation requests this program to rerun as administrator, for when we don't have permission over the update files
121117
func requestElevation() {
122118
log.Println("Permission denied. Requesting elevated privileges...")
123-
var err error
124-
if runtime.GOOS == "windows" {
125-
err = elevateWindows()
126-
} else {
127-
err = elevateUnix()
128-
}
119+
120+
var err error = elevate()
129121

130122
if err != nil {
131123
log.Println("Failed to request elevation:", err)
132124
return
133125
}
134126
}
135-
136-
func elevateWindows() error {
137-
verb := "runas"
138-
exe, _ := os.Executable()
139-
cwd, _ := os.Getwd()
140-
args := strings.Join(os.Args[1:], " ")
141-
142-
verbPtr, err := syscall.UTF16PtrFromString(verb)
143-
if err != nil {
144-
return err
145-
}
146-
exePtr, err := syscall.UTF16PtrFromString(exe)
147-
if err != nil {
148-
return err
149-
}
150-
cwdPtr, err := syscall.UTF16PtrFromString(cwd)
151-
if err != nil {
152-
return err
153-
}
154-
argPtr, _ := syscall.UTF16PtrFromString(args)
155-
var showCmd int32 = 1
156-
return windows.ShellExecute(0, verbPtr, exePtr, argPtr, cwdPtr, showCmd)
157-
}
158-
159-
func elevateUnix() error {
160-
args := append([]string{os.Args[0]}, os.Args[1:]...)
161-
cmd := exec.Command("sudo", args...)
162-
cmd.Stdin = os.Stdin
163-
cmd.Stdout = os.Stdout
164-
cmd.Stderr = os.Stderr
165-
return cmd.Run()
166-
}

0 commit comments

Comments
 (0)