Files
vssm/instance.go

39 lines
951 B
Go

package main
import (
"fmt"
"os"
"path/filepath"
)
type InstanceState string
const (
StateStopped InstanceState = "STOPPED"
StateRunning InstanceState = "RUNNING"
)
func CreateNewInstance(name string, version string, meta InstanceMetadata, cfg *AppConfig) error {
instanceDir := filepath.Join(cfg.Storage.InstancesDir, name)
dirs := []string{
instanceDir,
filepath.Join(instanceDir, "Saves"),
filepath.Join(instanceDir, "Mods"),
}
for _, dir := range dirs {
if err := os.MkdirAll(dir, 0755); err != nil {
return fmt.Errorf("Failed creating core instance directory layout: %w", err)
}
}
instanceConfigPath := filepath.Join(instanceDir, "serverconfig.json")
if err := PrepareInstanceConfig(version, instanceConfigPath, meta, cfg); err != nil {
return fmt.Errorf("Failed provisioning server baseline configuration: %w", err)
}
fmt.Printf("Instance '%s' (v%s) successfully initialized\n", name, version)
return nil
}