feat(dolt): add server mode config to metadata.json schema (bd-dolt.2.2)
Add Dolt server mode configuration to metadata.json for multi-writer access:
- Add DoltMode, DoltServerHost, DoltServerPort, DoltServerUser fields to Config
- Add helper methods with sensible defaults (127.0.0.1:3306, root user)
- Update factory to read server mode config and pass to dolt.Config
- Add --server, --server-host, --server-port, --server-user flags to bd init
- Validate that --server requires --backend dolt
- Add comprehensive tests for server mode configuration
Example metadata.json for server mode:
{
"backend": "dolt",
"database": "dolt",
"dolt_mode": "server",
"dolt_server_host": "192.168.1.100",
"dolt_server_port": 3306,
"dolt_server_user": "beads"
}
Password should be set via BEADS_DOLT_PASSWORD env var for security.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -54,6 +54,12 @@ With --stealth: configures per-repository git settings for invisible beads usage
|
||||
force, _ := cmd.Flags().GetBool("force")
|
||||
fromJSONL, _ := cmd.Flags().GetBool("from-jsonl")
|
||||
|
||||
// Dolt server mode flags (bd-dolt.2.2)
|
||||
serverMode, _ := cmd.Flags().GetBool("server")
|
||||
serverHost, _ := cmd.Flags().GetString("server-host")
|
||||
serverPort, _ := cmd.Flags().GetInt("server-port")
|
||||
serverUser, _ := cmd.Flags().GetString("server-user")
|
||||
|
||||
// Validate backend flag
|
||||
if backend != "" && backend != configfile.BackendSQLite && backend != configfile.BackendDolt {
|
||||
fmt.Fprintf(os.Stderr, "Error: invalid backend '%s' (must be 'sqlite' or 'dolt')\n", backend)
|
||||
@@ -63,6 +69,12 @@ With --stealth: configures per-repository git settings for invisible beads usage
|
||||
backend = configfile.BackendSQLite // Default to SQLite
|
||||
}
|
||||
|
||||
// Validate server mode requires dolt backend
|
||||
if serverMode && backend != configfile.BackendDolt {
|
||||
fmt.Fprintf(os.Stderr, "Error: --server flag requires --backend dolt\n")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Initialize config (PersistentPreRun doesn't run for init command)
|
||||
if err := config.Initialize(); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "Warning: failed to initialize config: %v\n", err)
|
||||
@@ -413,6 +425,20 @@ With --stealth: configures per-repository git settings for invisible beads usage
|
||||
if cfg.Database == "" || cfg.Database == beads.CanonicalDatabaseName {
|
||||
cfg.Database = "dolt"
|
||||
}
|
||||
|
||||
// Save server mode configuration (bd-dolt.2.2)
|
||||
if serverMode {
|
||||
cfg.DoltMode = configfile.DoltModeServer
|
||||
if serverHost != "" {
|
||||
cfg.DoltServerHost = serverHost
|
||||
}
|
||||
if serverPort != 0 {
|
||||
cfg.DoltServerPort = serverPort
|
||||
}
|
||||
if serverUser != "" {
|
||||
cfg.DoltServerUser = serverUser
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if err := cfg.Save(beadsDir); err != nil {
|
||||
@@ -625,6 +651,22 @@ With --stealth: configures per-repository git settings for invisible beads usage
|
||||
|
||||
fmt.Printf("\n%s bd initialized successfully!\n\n", ui.RenderPass("✓"))
|
||||
fmt.Printf(" Backend: %s\n", ui.RenderAccent(backend))
|
||||
if serverMode {
|
||||
host := serverHost
|
||||
if host == "" {
|
||||
host = configfile.DefaultDoltServerHost
|
||||
}
|
||||
port := serverPort
|
||||
if port == 0 {
|
||||
port = configfile.DefaultDoltServerPort
|
||||
}
|
||||
user := serverUser
|
||||
if user == "" {
|
||||
user = configfile.DefaultDoltServerUser
|
||||
}
|
||||
fmt.Printf(" Mode: %s\n", ui.RenderAccent("server"))
|
||||
fmt.Printf(" Server: %s\n", ui.RenderAccent(fmt.Sprintf("%s@%s:%d", user, host, port)))
|
||||
}
|
||||
fmt.Printf(" Database: %s\n", ui.RenderAccent(storagePath))
|
||||
fmt.Printf(" Issue prefix: %s\n", ui.RenderAccent(prefix))
|
||||
fmt.Printf(" Issues will be named: %s\n\n", ui.RenderAccent(prefix+"-<hash> (e.g., "+prefix+"-a3f2dd)"))
|
||||
@@ -666,6 +708,13 @@ func init() {
|
||||
initCmd.Flags().Bool("skip-merge-driver", false, "Skip git merge driver setup")
|
||||
initCmd.Flags().Bool("force", false, "Force re-initialization even if JSONL already has issues (may cause data loss)")
|
||||
initCmd.Flags().Bool("from-jsonl", false, "Import from current .beads/issues.jsonl file instead of git history (preserves manual cleanups)")
|
||||
|
||||
// Dolt server mode flags (bd-dolt.2.2)
|
||||
initCmd.Flags().Bool("server", false, "Configure Dolt in server mode (connect to external dolt sql-server)")
|
||||
initCmd.Flags().String("server-host", "", "Dolt server host (default: 127.0.0.1)")
|
||||
initCmd.Flags().Int("server-port", 0, "Dolt server port (default: 3306)")
|
||||
initCmd.Flags().String("server-user", "", "Dolt server MySQL user (default: root)")
|
||||
|
||||
rootCmd.AddCommand(initCmd)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user