Adding current project state

This commit is contained in:
2026-06-05 16:44:41 -05:00
commit 073db62fb1
10 changed files with 663 additions and 0 deletions

49
instance.go Normal file
View File

@@ -0,0 +1,49 @@
package main
import (
"fmt"
"os"
"os/exec"
"path/filepath"
)
type InstanceState string
const (
StateStopped InstanceState = "STOPPED"
StateRunning InstanceState = "RUNNING"
)
type ManagedInstance struct {
Name string `json:"name"`
Version string `json:"version"`
Port int `json:"port"`
Status InstanceState `json:"status"`
Cmd *exec.Cmd `json:"-"`
Stdin interface{} `json:"-"`
}
func CreateNewInstance(name string, version string, options VsServerConfigOptions, 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, options, 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
}