mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-10-20 02:04:01 -04:00
* policy: load the CLI policy file from an internal package The plugin and theme registries need to read the policy too, and internal packages cannot import package main. * registries: let the CLI policy turn the registries off With disable_registries set in /usr/share/dms/cli-policy.json or /etc/dms/cli-policy.json (the /etc file wins), the plugin and theme registries start without sources, so nothing is cloned or pulled. Installed plugins and themes keep working.
68 lines
2.0 KiB
Go
68 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
|
"github.com/AvengeMedia/DankMaterialShell/core/internal/registries"
|
|
"github.com/spf13/afero"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var registryCmd = &cobra.Command{
|
|
Use: "registry",
|
|
Short: "Manage plugin and theme registries",
|
|
Long: "Manage the registries DMS fetches plugins and themes from. The official registry is always active and additional registries can be added by name and git URL, unless the CLI policy sets disable_registries.",
|
|
}
|
|
|
|
var registryListCmd = &cobra.Command{
|
|
Use: "list",
|
|
Short: "List configured registries",
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
for _, s := range registries.Load(afero.NewOsFs()) {
|
|
suffix := ""
|
|
if s.Official() {
|
|
suffix = " (official)"
|
|
}
|
|
fmt.Printf("%s%s\n %s\n", s.Name, suffix, s.URL)
|
|
}
|
|
},
|
|
}
|
|
|
|
var registryAddCmd = &cobra.Command{
|
|
Use: "add <name> <url>",
|
|
Short: "Add a registry",
|
|
Long: "Add a registry by name and git URL. The repository must contain a plugins/ or themes/ directory in the registry format.",
|
|
Args: cobra.ExactArgs(2),
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
if err := registries.Add(afero.NewOsFs(), args[0], args[1]); err != nil {
|
|
log.Fatalf("Error adding registry: %v", err)
|
|
}
|
|
fmt.Printf("Registry added: %s\n", args[0])
|
|
},
|
|
}
|
|
|
|
var registryRemoveCmd = &cobra.Command{
|
|
Use: "remove <name>",
|
|
Short: "Remove a registry",
|
|
Args: cobra.ExactArgs(1),
|
|
ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
|
if len(args) != 0 {
|
|
return nil, cobra.ShellCompDirectiveNoFileComp
|
|
}
|
|
var names []string
|
|
for _, s := range registries.Load(afero.NewOsFs()) {
|
|
if !s.Official() {
|
|
names = append(names, s.Name)
|
|
}
|
|
}
|
|
return names, cobra.ShellCompDirectiveNoFileComp
|
|
},
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
if err := registries.Remove(afero.NewOsFs(), args[0]); err != nil {
|
|
log.Fatalf("Error removing registry: %v", err)
|
|
}
|
|
fmt.Printf("Registry removed: %s\n", args[0])
|
|
},
|
|
}
|