Skip to content
This repository was archived by the owner on Sep 18, 2021. It is now read-only.

Commit 76d37d9

Browse files
committed
feat(cli): install plugin modules
1 parent 7a47238 commit 76d37d9

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

commands/init/install_modules.go

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,40 @@ import (
1414
func collectModules() []string {
1515
var modules []string
1616
var err error
17+
var moduleName string
1718

1819
var webserver = viper.GetString("modules.webserver")
1920
if len(webserver) == 0 {
2021
webserver = "getstackhead.stackhead_webserver_nginx"
2122
}
22-
webserver, err = stackhead.AutoCompleteModuleName(webserver, stackhead.ModuleWebserver)
23+
moduleName, err = stackhead.AutoCompleteModuleName(webserver, stackhead.ModuleWebserver)
2324
if err != nil {
2425
panic(err.Error())
2526
}
26-
modules = append(modules, webserver)
27+
modules = append(modules, moduleName)
2728

2829
var container = viper.GetString("modules.container")
2930
if len(container) == 0 {
3031
container = "getstackhead.stackhead_container_docker"
3132
}
32-
container, err = stackhead.AutoCompleteModuleName(container, stackhead.ModuleContainer)
33+
moduleName, err = stackhead.AutoCompleteModuleName(container, stackhead.ModuleContainer)
3334
if err != nil {
3435
panic(err.Error())
3536
}
3637

38+
modules = append(modules, moduleName)
39+
40+
var plugins = viper.GetStringSlice("modules.plugins")
41+
if len(plugins) > 0 {
42+
for _, plugin := range plugins {
43+
moduleName, err = stackhead.AutoCompleteModuleName(plugin, stackhead.ModulePlugin)
44+
if err != nil {
45+
panic(err.Error())
46+
}
47+
modules = append(modules, moduleName)
48+
}
49+
}
50+
3751
modules = append(modules, container)
3852
return modules
3953
}

stackhead/modules.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ const (
1010
ModuleWebserver = "stackhead_webserver"
1111
// ModuleContainer is the string that identifies a package name as container package
1212
ModuleContainer = "stackhead_container"
13+
// ModulePlugin is the string that identifies a package name as plugin package
14+
ModulePlugin = "stackhead_plugin"
1315
)
1416

1517
// SplitModuleName splits a given module name into vendor, module type and base name
@@ -54,12 +56,21 @@ func IsContainerModule(moduleName string) bool {
5456
return strings.HasPrefix(moduleName, ModuleContainer)
5557
}
5658

59+
// IsPluginModule checks if the given module is a plugin module based on its name
60+
func IsPluginModule(moduleName string) bool {
61+
moduleName = RemoveVendor(moduleName)
62+
return strings.HasPrefix(moduleName, ModulePlugin)
63+
}
64+
5765
// GetModuleType returns the module type for the given module according its name
58-
// Will return the values of ModuleContainer and ModuleWebserver constants.
66+
// Will return the values of ModulePlugin, ModuleContainer and ModuleWebserver constants.
5967
func GetModuleType(moduleName string) string {
6068
if IsContainerModule(moduleName) {
6169
return ModuleContainer
6270
}
71+
if IsPluginModule(moduleName) {
72+
return ModulePlugin
73+
}
6374
if IsWebserverModule(moduleName) {
6475
return ModuleWebserver
6576
}

0 commit comments

Comments
 (0)