mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 12:24:38 +03:00
Scraper and plugin manager (#4242)
* Add package manager * Add SettingModal validate * Reverse modal button order * Add plugin package management * Refactor ClearableInput
This commit is contained in:
82
internal/api/resolver_mutation_package.go
Normal file
82
internal/api/resolver_mutation_package.go
Normal file
@@ -0,0 +1,82 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"context"
|
||||
"strconv"
|
||||
|
||||
"github.com/stashapp/stash/internal/manager"
|
||||
"github.com/stashapp/stash/internal/manager/task"
|
||||
"github.com/stashapp/stash/pkg/logger"
|
||||
"github.com/stashapp/stash/pkg/models"
|
||||
)
|
||||
|
||||
func refreshPackageType(typeArg PackageType) {
|
||||
mgr := manager.GetInstance()
|
||||
|
||||
if typeArg == PackageTypePlugin {
|
||||
if err := mgr.PluginCache.LoadPlugins(); err != nil {
|
||||
logger.Errorf("Error reading plugin configs: %v", err)
|
||||
}
|
||||
} else if typeArg == PackageTypeScraper {
|
||||
if err := mgr.ScraperCache.ReloadScrapers(); err != nil {
|
||||
logger.Errorf("Error reading scraper configs: %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (r *mutationResolver) InstallPackages(ctx context.Context, typeArg PackageType, packages []*models.PackageSpecInput) (string, error) {
|
||||
pm, err := getPackageManager(typeArg)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
mgr := manager.GetInstance()
|
||||
t := &task.InstallPackagesJob{
|
||||
PackagesJob: task.PackagesJob{
|
||||
PackageManager: pm,
|
||||
OnComplete: func() { refreshPackageType(typeArg) },
|
||||
},
|
||||
Packages: packages,
|
||||
}
|
||||
jobID := mgr.JobManager.Add(ctx, "Installing packages...", t)
|
||||
|
||||
return strconv.Itoa(jobID), nil
|
||||
}
|
||||
|
||||
func (r *mutationResolver) UpdatePackages(ctx context.Context, typeArg PackageType, packages []*models.PackageSpecInput) (string, error) {
|
||||
pm, err := getPackageManager(typeArg)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
mgr := manager.GetInstance()
|
||||
t := &task.UpdatePackagesJob{
|
||||
PackagesJob: task.PackagesJob{
|
||||
PackageManager: pm,
|
||||
OnComplete: func() { refreshPackageType(typeArg) },
|
||||
},
|
||||
Packages: packages,
|
||||
}
|
||||
jobID := mgr.JobManager.Add(ctx, "Updating packages...", t)
|
||||
|
||||
return strconv.Itoa(jobID), nil
|
||||
}
|
||||
|
||||
func (r *mutationResolver) UninstallPackages(ctx context.Context, typeArg PackageType, packages []*models.PackageSpecInput) (string, error) {
|
||||
pm, err := getPackageManager(typeArg)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
mgr := manager.GetInstance()
|
||||
t := &task.UninstallPackagesJob{
|
||||
PackagesJob: task.PackagesJob{
|
||||
PackageManager: pm,
|
||||
OnComplete: func() { refreshPackageType(typeArg) },
|
||||
},
|
||||
Packages: packages,
|
||||
}
|
||||
jobID := mgr.JobManager.Add(ctx, "Updating packages...", t)
|
||||
|
||||
return strconv.Itoa(jobID), nil
|
||||
}
|
||||
Reference in New Issue
Block a user