Add -root flag to serviceman
This commit is contained in:
		| @@ -49,6 +49,7 @@ var ( | ||||
| 	force    = flag.Bool("force", false, "Force apply changes") | ||||
| 	delete   = flag.Bool("d", false, "Delete files not in TOML config") | ||||
| 	tomlFile = flag.String("config", "services.toml", "Path to TOML configuration file") | ||||
| 	rootDir  = flag.String("root", ".", "Root directory to run in (services.toml read from here; .caddy files written here)") | ||||
| ) | ||||
|  | ||||
| func main() { | ||||
| @@ -135,11 +136,15 @@ func validateConfig(config *Config) error { | ||||
| } | ||||
|  | ||||
| func syncConfigs(config *Config) error { | ||||
| 	// Get current directory | ||||
| 	currentDir, err := os.Getwd() | ||||
| 	// Determine directory for .caddy files | ||||
| 	currentDir := *rootDir | ||||
| 	if currentDir == "" || currentDir == "." { | ||||
| 		wd, err := os.Getwd() | ||||
| 		if err != nil { | ||||
| 			return fmt.Errorf("failed to get current directory: %w", err) | ||||
| 		} | ||||
| 		currentDir = wd | ||||
| 	} | ||||
| 	logger := cylogger.Default | ||||
|  | ||||
| 	// Get existing .caddy files | ||||
| @@ -180,7 +185,7 @@ func syncConfigs(config *Config) error { | ||||
| 			generateAndLogDiff(fileLogger, caddyFilename, "", expectedContent) | ||||
|  | ||||
| 			if !*dryRun { | ||||
| 				if err := writeFile(caddyFilename, expectedContent); err != nil { | ||||
| 				if err := writeFile(filepath.Join(currentDir, caddyFilename), expectedContent); err != nil { | ||||
| 					return fmt.Errorf("failed to create file %s: %w", caddyFilename, err) | ||||
| 				} | ||||
| 			} | ||||
| @@ -193,7 +198,7 @@ func syncConfigs(config *Config) error { | ||||
| 			generateAndLogDiff(fileLogger, caddyFilename, existingContent, expectedContent) | ||||
|  | ||||
| 			if !*dryRun { | ||||
| 				if err := writeFile(caddyFilename, expectedContent); err != nil { | ||||
| 				if err := writeFile(filepath.Join(currentDir, caddyFilename), expectedContent); err != nil { | ||||
| 					return fmt.Errorf("failed to update file %s: %w", caddyFilename, err) | ||||
| 				} | ||||
| 			} | ||||
| @@ -213,7 +218,7 @@ func syncConfigs(config *Config) error { | ||||
| 			if *delete { | ||||
| 				orphanLogger.Info("Deleting orphaned file") | ||||
| 				if !*dryRun { | ||||
| 					if err := os.Remove(filename); err != nil { | ||||
| 					if err := os.Remove(filepath.Join(currentDir, filename)); err != nil { | ||||
| 						return fmt.Errorf("failed to delete file %s: %w", filename, err) | ||||
| 					} | ||||
| 				} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user