fix setup remote stoof
This commit is contained in:
4
go.mod
4
go.mod
@@ -4,7 +4,9 @@ go 1.23.1
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/charmbracelet/bubbletea v0.26.1
|
github.com/charmbracelet/bubbletea v0.26.1
|
||||||
|
github.com/mattn/go-runewidth v0.0.15
|
||||||
github.com/pelletier/go-toml/v2 v2.2.4
|
github.com/pelletier/go-toml/v2 v2.2.4
|
||||||
|
golang.org/x/term v0.19.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
@@ -13,7 +15,6 @@ require (
|
|||||||
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
|
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.18 // indirect
|
github.com/mattn/go-isatty v0.0.18 // indirect
|
||||||
github.com/mattn/go-localereader v0.0.1 // indirect
|
github.com/mattn/go-localereader v0.0.1 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.15 // indirect
|
|
||||||
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
|
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
|
||||||
github.com/muesli/cancelreader v0.2.2 // indirect
|
github.com/muesli/cancelreader v0.2.2 // indirect
|
||||||
github.com/muesli/reflow v0.3.0 // indirect
|
github.com/muesli/reflow v0.3.0 // indirect
|
||||||
@@ -21,6 +22,5 @@ require (
|
|||||||
github.com/rivo/uniseg v0.4.6 // indirect
|
github.com/rivo/uniseg v0.4.6 // indirect
|
||||||
golang.org/x/sync v0.7.0 // indirect
|
golang.org/x/sync v0.7.0 // indirect
|
||||||
golang.org/x/sys v0.19.0 // indirect
|
golang.org/x/sys v0.19.0 // indirect
|
||||||
golang.org/x/term v0.19.0 // indirect
|
|
||||||
golang.org/x/text v0.3.8 // indirect
|
golang.org/x/text v0.3.8 // indirect
|
||||||
)
|
)
|
||||||
|
|||||||
55
main.go
55
main.go
@@ -326,9 +326,9 @@ func init() {
|
|||||||
|
|
||||||
func writePBConfig(path, serviceName string) error {
|
func writePBConfig(path, serviceName string) error {
|
||||||
const tmpl = `[server]
|
const tmpl = `[server]
|
||||||
ip = "127.0.0.1"
|
|
||||||
port = 8090
|
port = 8090
|
||||||
domain = "example.com"
|
# ip = "127.0.0.1"
|
||||||
|
# domain = "example.com"
|
||||||
|
|
||||||
[pocketbase]
|
[pocketbase]
|
||||||
version = "%s"
|
version = "%s"
|
||||||
@@ -369,12 +369,16 @@ func resolveServiceName(defaultName string) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func shouldConfirmServerConfig(ctx *deploymentContext) (bool, error) {
|
func shouldConfirmServerConfig(ctx *deploymentContext) (bool, error) {
|
||||||
exists, err := remoteDirExists(ctx.serverIP, ctx.serviceDir)
|
if strings.TrimSpace(ctx.serverIP) == "" {
|
||||||
if err != nil {
|
|
||||||
fmt.Fprintf(os.Stderr, "warning: unable to verify remote service at %s: %v\n", ctx.serviceDir, err)
|
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
return !exists, nil
|
if strings.TrimSpace(ctx.domain) == "" {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
if ctx.port <= 0 {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
return false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ensureServerConfigConfirmed(ctx *deploymentContext) (*deploymentContext, bool, error) {
|
func ensureServerConfigConfirmed(ctx *deploymentContext) (*deploymentContext, bool, error) {
|
||||||
@@ -389,7 +393,7 @@ func ensureServerConfigConfirmed(ctx *deploymentContext) (*deploymentContext, bo
|
|||||||
if err := confirmServerConfig(ctx.configPath); err != nil {
|
if err := confirmServerConfig(ctx.configPath); err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
newCtx, err := buildDeploymentContext()
|
newCtx, err := buildDeploymentContext(true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
@@ -928,7 +932,7 @@ const (
|
|||||||
totalSetupSteps = 5
|
totalSetupSteps = 5
|
||||||
remoteWindowSize = 10
|
remoteWindowSize = 10
|
||||||
remoteIndent = " "
|
remoteIndent = " "
|
||||||
remoteLineColor = "\033[94m"
|
remoteLineColor = ""
|
||||||
headerColor = "\033[1;37m"
|
headerColor = "\033[1;37m"
|
||||||
localTimeColor = "\033[0;32m"
|
localTimeColor = "\033[0;32m"
|
||||||
statusActiveColor = "\033[92m"
|
statusActiveColor = "\033[92m"
|
||||||
@@ -969,7 +973,7 @@ type deploymentContext struct {
|
|||||||
configPath string
|
configPath string
|
||||||
}
|
}
|
||||||
|
|
||||||
func buildDeploymentContext() (*deploymentContext, error) {
|
func buildDeploymentContext(requireServer bool) (*deploymentContext, error) {
|
||||||
cwd, err := os.Getwd()
|
cwd, err := os.Getwd()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -987,17 +991,17 @@ func buildDeploymentContext() (*deploymentContext, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
serverIP := cfg.Server.IP
|
serverIP := cfg.Server.IP
|
||||||
if serverIP == "" {
|
if requireServer && serverIP == "" {
|
||||||
return nil, fmt.Errorf("pb.toml missing [server].ip")
|
return nil, fmt.Errorf("pb.toml missing [server].ip")
|
||||||
}
|
}
|
||||||
|
|
||||||
domain := cfg.Server.Domain
|
domain := cfg.Server.Domain
|
||||||
if domain == "" {
|
if requireServer && domain == "" {
|
||||||
return nil, fmt.Errorf("pb.toml missing [server].domain")
|
return nil, fmt.Errorf("pb.toml missing [server].domain")
|
||||||
}
|
}
|
||||||
|
|
||||||
port := cfg.Server.Port
|
port := cfg.Server.Port
|
||||||
if port <= 0 {
|
if requireServer && port <= 0 {
|
||||||
return nil, fmt.Errorf("pb.toml server.port must be greater than zero")
|
return nil, fmt.Errorf("pb.toml server.port must be greater than zero")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1034,7 +1038,7 @@ func buildDeploymentContext() (*deploymentContext, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func runSetup() error {
|
func runSetup() error {
|
||||||
ctx, err := buildDeploymentContext()
|
ctx, err := buildDeploymentContext(false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -1113,14 +1117,22 @@ func performSetup(ctx *deploymentContext, restart bool) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func runDeploy() error {
|
func runDeploy() error {
|
||||||
ctx, err := buildDeploymentContext()
|
ctx, err := buildDeploymentContext(false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
start := time.Now()
|
||||||
|
|
||||||
|
ctx, prompted, err := ensureServerConfigConfirmed(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if prompted {
|
||||||
|
start = time.Now()
|
||||||
|
}
|
||||||
defer func() {
|
defer func() {
|
||||||
closeSSHControlMaster(ctx.serverIP)
|
closeSSHControlMaster(ctx.serverIP)
|
||||||
}()
|
}()
|
||||||
start := time.Now()
|
|
||||||
|
|
||||||
binaryPath := filepath.Join(ctx.serviceDir, "pocketbase")
|
binaryPath := filepath.Join(ctx.serviceDir, "pocketbase")
|
||||||
exists, err := remoteBinaryExists(ctx.serverIP, binaryPath)
|
exists, err := remoteBinaryExists(ctx.serverIP, binaryPath)
|
||||||
@@ -1130,13 +1142,6 @@ func runDeploy() error {
|
|||||||
|
|
||||||
if err != nil || !exists {
|
if err != nil || !exists {
|
||||||
fmt.Println("PocketBase binary missing on remote; running setup")
|
fmt.Println("PocketBase binary missing on remote; running setup")
|
||||||
ctx, prompted, err := ensureServerConfigConfirmed(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if prompted {
|
|
||||||
start = time.Now()
|
|
||||||
}
|
|
||||||
if err := performSetup(ctx, false); err != nil {
|
if err := performSetup(ctx, false); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -1161,7 +1166,7 @@ func runDeploy() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func runStatus() error {
|
func runStatus() error {
|
||||||
ctx, err := buildDeploymentContext()
|
ctx, err := buildDeploymentContext(true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -1326,7 +1331,7 @@ func formatDuration(d time.Duration) string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func runLogs() error {
|
func runLogs() error {
|
||||||
ctx, err := buildDeploymentContext()
|
ctx, err := buildDeploymentContext(true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -1349,7 +1354,7 @@ func runSecrets() error {
|
|||||||
return fmt.Errorf("usage: pb secrets <list|set|delete> [arguments]")
|
return fmt.Errorf("usage: pb secrets <list|set|delete> [arguments]")
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, err := buildDeploymentContext()
|
ctx, err := buildDeploymentContext(true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user