Skip to content

Commit 1b61ae9

Browse files
authored
[deckhouse-cli] Add plugin folder fallback (#255)
Signed-off-by: Pavel Okhlopkov <pavel.okhlopkov@flant.com>
1 parent 0f4d634 commit 1b61ae9

File tree

2 files changed

+23
-21
lines changed

2 files changed

+23
-21
lines changed

cmd/plugins/plugin.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ limitations under the License.
1616
package plugins
1717

1818
import (
19+
"errors"
1920
"fmt"
2021
"log/slog"
2122
"os"
@@ -50,6 +51,27 @@ func NewPluginCommand(commandName string, description string, aliases []string,
5051
description = pluginContract.Description
5152
}
5253

54+
// to check we can create directories here
55+
// we try to create root plugins folder
56+
err = os.MkdirAll(flags.DeckhousePluginsDir+"/plugins", 0755)
57+
// if permission failed
58+
if errors.Is(err, os.ErrPermission) {
59+
pc.logger.Warn("use homedir instead of default d8 plugins path in '/opt/deckhouse/lib/deckhouse-cli'", slog.String("new_path", flags.DeckhousePluginsDir), dkplog.Err(err))
60+
61+
flags.DeckhousePluginsDir, err = os.UserHomeDir()
62+
if err != nil {
63+
logger.Warn("failed to receive home dir to create plugins dir", slog.String("error", err.Error()))
64+
return nil
65+
}
66+
67+
flags.DeckhousePluginsDir = path.Join(flags.DeckhousePluginsDir, ".deckhouse-cli")
68+
}
69+
70+
if err != nil {
71+
logger.Warn("failed to create plugin root directory", slog.String("error", err.Error()))
72+
return nil
73+
}
74+
5375
systemCmd := &cobra.Command{
5476
Use: commandName,
5577
Short: description,

cmd/plugins/plugins.go

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package plugins
1919
import (
2020
"context"
2121
"encoding/json"
22-
"errors"
2322
"fmt"
2423
"log/slog"
2524
"os"
@@ -519,29 +518,10 @@ func (pc *PluginsCommand) InstallPlugin(ctx context.Context, pluginName, version
519518
}
520519

521520
func (pc *PluginsCommand) installPlugin(ctx context.Context, pluginName string, version *semver.Version, useMajor int) error {
522-
// to check we can create directories here
523-
// we try to create root plugins folder
524-
err := os.MkdirAll(flags.DeckhousePluginsDir+"/plugins", 0755)
525-
// if permission failed
526-
if errors.Is(err, os.ErrPermission) {
527-
pc.logger.Warn("use homedir instead of default d8 plugins path in '/opt/deckhouse/lib/deckhouse-cli'", slog.String("new_path", flags.DeckhousePluginsDir), dkplog.Err(err))
528-
529-
flags.DeckhousePluginsDir, err = os.UserHomeDir()
530-
if err != nil {
531-
return fmt.Errorf("failed to receive home dir to create plugins dir: %w", err)
532-
}
533-
534-
flags.DeckhousePluginsDir = path.Join(flags.DeckhousePluginsDir, ".deckhouse-cli")
535-
}
536-
537-
if err != nil {
538-
return fmt.Errorf("failed to create plugin root directory: %w", err)
539-
}
540-
541521
// create plugin directory if it doesn't exist
542522
// example path: /opt/deckhouse/lib/deckhouse-cli/plugins/example-plugin
543523
pluginDir := path.Join(flags.DeckhousePluginsDir, "plugins", pluginName)
544-
err = os.MkdirAll(pluginDir, 0755)
524+
err := os.MkdirAll(pluginDir, 0755)
545525
if err != nil {
546526
return fmt.Errorf("failed to create plugin directory: %w", err)
547527
}

0 commit comments

Comments
 (0)