Skip to content

Commit 8383725

Browse files
committed
Fixes for plugins on Windows
os.ExpandEnv does not work on Windows, and HOME is also set to an empty-string, so HOMEPATH must be substituted in. Signed-off-by: Alex Ellis (OpenFaaS Ltd) <[email protected]>
1 parent 31db71d commit 8383725

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

commands/faas.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"log"
99
"os"
1010
"path"
11+
"runtime"
1112
"strings"
1213
"syscall"
1314

@@ -137,7 +138,12 @@ func runFaas(cmd *cobra.Command, args []string) {
137138

138139
func getPlugins() ([]string, error) {
139140
plugins := []string{}
140-
pluginHome := os.ExpandEnv("$HOME/.openfaas/plugins")
141+
var pluginHome string
142+
if runtime.GOOS == "windows" {
143+
pluginHome = os.Expand("$HOMEPATH/.openfaas/plugins", os.Getenv)
144+
} else {
145+
pluginHome = os.ExpandEnv("$HOME/.openfaas/plugins")
146+
}
141147

142148
if _, err := os.Stat(pluginHome); err != nil && os.IsNotExist(err) {
143149
return plugins, nil

commands/plugin_get.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,17 @@ func runPluginGetCmd(cmd *cobra.Command, args []string) error {
8080
fmt.Printf("Fetching plugin: %s\n", pluginName)
8181
}
8282

83-
pluginDir := os.ExpandEnv("$HOME/.openfaas/plugins")
83+
var pluginDir string
84+
if runtime.GOOS == "windows" {
85+
pluginDir = os.Expand("$HOMEPATH/.openfaas/plugins", os.Getenv)
86+
} else {
87+
pluginDir = os.ExpandEnv("$HOME/.openfaas/plugins")
88+
}
8489

8590
if _, err := os.Stat(pluginDir); os.IsNotExist(err) {
86-
os.MkdirAll(pluginDir, 0755)
91+
if err := os.MkdirAll(pluginDir, 0755); err != nil && os.ErrExist != err {
92+
return fmt.Errorf("failed to create plugin directory %s: %w", pluginDir, err)
93+
}
8794
}
8895

8996
tmpTar := path.Join(os.TempDir(), pluginName+".tar")

0 commit comments

Comments
 (0)