mirror of
https://github.com/DeBrosOfficial/network.git
synced 2025-12-11 08:18:49 +00:00
chore: update version to 0.69.2 and refine CLI help output
- Bumped the version number in the Makefile to 0.69.2. - Removed deprecated environment commands from the CLI main.go file to streamline user experience. - Enhanced help output for development and production commands, adding new options and clarifying usage instructions. - Introduced a `--no-pull` option in production commands to skip repository updates during installation and upgrades, improving flexibility for users.
This commit is contained in:
parent
ee566d93b7
commit
c2298e476e
15
CHANGELOG.md
15
CHANGELOG.md
@ -13,6 +13,21 @@ The format is based on [Keep a Changelog][keepachangelog] and adheres to [Semant
|
||||
### Deprecated
|
||||
|
||||
### Fixed
|
||||
## [0.69.2] - 2025-11-11
|
||||
|
||||
### Added
|
||||
- Added `--no-pull` flag to `dbn prod upgrade` to skip git repository updates and use existing source code.
|
||||
|
||||
### Changed
|
||||
- Removed deprecated environment management commands (`env`, `devnet`, `testnet`, `local`).
|
||||
- Removed deprecated network commands (`health`, `peers`, `status`, `peer-id`, `connect`, `query`, `pubsub`) from the main CLI interface.
|
||||
|
||||
### Deprecated
|
||||
|
||||
### Removed
|
||||
|
||||
### Fixed
|
||||
\n
|
||||
## [0.69.1] - 2025-11-11
|
||||
|
||||
### Added
|
||||
|
||||
2
Makefile
2
Makefile
@ -19,7 +19,7 @@ test-e2e:
|
||||
|
||||
.PHONY: build clean test run-node run-node2 run-node3 run-example deps tidy fmt vet lint clear-ports install-hooks kill
|
||||
|
||||
VERSION := 0.69.1
|
||||
VERSION := 0.69.2
|
||||
COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo unknown)
|
||||
DATE ?= $(shell date -u +%Y-%m-%dT%H:%M:%SZ)
|
||||
LDFLAGS := -X 'main.version=$(VERSION)' -X 'main.commit=$(COMMIT)' -X 'main.date=$(DATE)'
|
||||
|
||||
112
cmd/cli/main.go
112
cmd/cli/main.go
@ -44,26 +44,6 @@ func main() {
|
||||
fmt.Println()
|
||||
return
|
||||
|
||||
// Environment commands
|
||||
case "env":
|
||||
cli.HandleEnvCommand(args)
|
||||
case "devnet", "testnet", "local":
|
||||
// Shorthand for switching environments
|
||||
if len(args) > 0 && (args[0] == "enable" || args[0] == "switch") {
|
||||
if err := cli.SwitchEnvironment(command); err != nil {
|
||||
fmt.Fprintf(os.Stderr, "❌ Failed to switch environment: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
env, _ := cli.GetActiveEnvironment()
|
||||
fmt.Printf("✅ Switched to %s environment\n", command)
|
||||
if env != nil {
|
||||
fmt.Printf(" Gateway URL: %s\n", env.GatewayURL)
|
||||
}
|
||||
} else {
|
||||
fmt.Fprintf(os.Stderr, "Usage: dbn %s enable\n", command)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Development environment commands
|
||||
case "dev":
|
||||
cli.HandleDevCommand(args)
|
||||
@ -76,36 +56,6 @@ func main() {
|
||||
case "auth":
|
||||
cli.HandleAuthCommand(args)
|
||||
|
||||
// Basic network commands
|
||||
case "health":
|
||||
cli.HandleHealthCommand(format, timeout)
|
||||
case "peers":
|
||||
cli.HandlePeersCommand(format, timeout)
|
||||
case "status":
|
||||
cli.HandleStatusCommand(format, timeout)
|
||||
case "peer-id":
|
||||
cli.HandlePeerIDCommand(format, timeout)
|
||||
|
||||
// Query command
|
||||
case "query":
|
||||
if len(args) == 0 {
|
||||
fmt.Fprintf(os.Stderr, "Usage: dbn query <sql>\n")
|
||||
os.Exit(1)
|
||||
}
|
||||
cli.HandleQueryCommand(args[0], format, timeout)
|
||||
|
||||
// PubSub commands
|
||||
case "pubsub":
|
||||
cli.HandlePubSubCommand(args, format, timeout)
|
||||
|
||||
// Connect command
|
||||
case "connect":
|
||||
if len(args) == 0 {
|
||||
fmt.Fprintf(os.Stderr, "Usage: dbn connect <peer_address>\n")
|
||||
os.Exit(1)
|
||||
}
|
||||
cli.HandleConnectCommand(args[0], timeout)
|
||||
|
||||
// Help
|
||||
case "help", "--help", "-h":
|
||||
showHelp()
|
||||
@ -138,65 +88,47 @@ func showHelp() {
|
||||
fmt.Printf("Network CLI - Distributed P2P Network Management Tool\n\n")
|
||||
fmt.Printf("Usage: dbn <command> [args...]\n\n")
|
||||
|
||||
fmt.Printf("🌍 Environment Management:\n")
|
||||
fmt.Printf(" env list - List available environments\n")
|
||||
fmt.Printf(" env current - Show current environment\n")
|
||||
fmt.Printf(" env switch <env> - Switch to environment (local, devnet, testnet)\n")
|
||||
fmt.Printf(" devnet enable - Shorthand for switching to devnet\n")
|
||||
fmt.Printf(" testnet enable - Shorthand for switching to testnet\n\n")
|
||||
|
||||
fmt.Printf("💻 Local Development:\n")
|
||||
fmt.Printf(" dev up - Start full local dev environment\n")
|
||||
fmt.Printf(" dev down - Stop all dev services\n")
|
||||
fmt.Printf(" dev status - Show status of dev services\n")
|
||||
fmt.Printf(" dev logs <component> - View dev component logs\n\n")
|
||||
fmt.Printf(" dev logs <component> - View dev component logs\n")
|
||||
fmt.Printf(" dev help - Show dev command help\n\n")
|
||||
|
||||
fmt.Printf("🚀 Production Deployment:\n")
|
||||
fmt.Printf(" prod install [--bootstrap] - Full production bootstrap (requires root)\n")
|
||||
fmt.Printf(" prod install [--bootstrap] - Full production bootstrap (requires root/sudo)\n")
|
||||
fmt.Printf(" prod upgrade - Upgrade existing installation\n")
|
||||
fmt.Printf(" prod status - Show production service status\n")
|
||||
fmt.Printf(" prod start - Start all production services (requires root/sudo)\n")
|
||||
fmt.Printf(" prod stop - Stop all production services (requires root/sudo)\n")
|
||||
fmt.Printf(" prod restart - Restart all production services (requires root/sudo)\n")
|
||||
fmt.Printf(" prod logs <service> - View production service logs\n")
|
||||
fmt.Printf(" prod uninstall - Remove production services (preserves data)\n\n")
|
||||
fmt.Printf(" prod uninstall - Remove production services (requires root/sudo)\n")
|
||||
fmt.Printf(" prod help - Show prod command help\n\n")
|
||||
|
||||
fmt.Printf("🔐 Authentication:\n")
|
||||
fmt.Printf(" auth login - Authenticate with wallet\n")
|
||||
fmt.Printf(" auth logout - Clear stored credentials\n")
|
||||
fmt.Printf(" auth whoami - Show current authentication\n")
|
||||
fmt.Printf(" auth status - Show detailed auth info\n\n")
|
||||
|
||||
fmt.Printf("🌐 Network Commands:\n")
|
||||
fmt.Printf(" health - Check network health\n")
|
||||
fmt.Printf(" peers - List connected peers\n")
|
||||
fmt.Printf(" status - Show network status\n")
|
||||
fmt.Printf(" peer-id - Show this node's peer ID\n")
|
||||
fmt.Printf(" connect <peer_address> - Connect to peer\n\n")
|
||||
|
||||
fmt.Printf("🗄️ Database:\n")
|
||||
fmt.Printf(" query <sql> 🔐 Execute database query\n\n")
|
||||
|
||||
fmt.Printf("📡 PubSub:\n")
|
||||
fmt.Printf(" pubsub publish <topic> <msg> 🔐 Publish message\n")
|
||||
fmt.Printf(" pubsub subscribe <topic> 🔐 Subscribe to topic\n")
|
||||
fmt.Printf(" pubsub topics 🔐 List topics\n\n")
|
||||
fmt.Printf(" auth status - Show detailed auth info\n")
|
||||
fmt.Printf(" auth help - Show auth command help\n\n")
|
||||
|
||||
fmt.Printf("Global Flags:\n")
|
||||
fmt.Printf(" -f, --format <format> - Output format: table, json (default: table)\n")
|
||||
fmt.Printf(" -t, --timeout <duration> - Operation timeout (default: 30s)\n\n")
|
||||
|
||||
fmt.Printf("🔐 = Requires authentication (auto-prompts if needed)\n\n")
|
||||
fmt.Printf(" -t, --timeout <duration> - Operation timeout (default: 30s)\n")
|
||||
fmt.Printf(" --help, -h - Show this help message\n\n")
|
||||
|
||||
fmt.Printf("Examples:\n")
|
||||
fmt.Printf(" # Switch to devnet\n")
|
||||
fmt.Printf(" dbn devnet enable\n\n")
|
||||
fmt.Printf(" # Authenticate\n")
|
||||
fmt.Printf(" dbn auth login\n\n")
|
||||
|
||||
fmt.Printf(" # Authenticate and query\n")
|
||||
fmt.Printf(" dbn auth login\n")
|
||||
fmt.Printf(" dbn query \"SELECT * FROM users LIMIT 10\"\n\n")
|
||||
fmt.Printf(" # Start local dev environment\n")
|
||||
fmt.Printf(" dbn dev up\n")
|
||||
fmt.Printf(" dbn dev status\n\n")
|
||||
|
||||
fmt.Printf(" # Setup VPS (Linux only)\n")
|
||||
fmt.Printf(" sudo dbn setup\n\n")
|
||||
|
||||
fmt.Printf(" # Manage services\n")
|
||||
fmt.Printf(" sudo dbn service status all\n")
|
||||
fmt.Printf(" sudo dbn service logs node --follow\n")
|
||||
fmt.Printf(" # Production deployment (requires root/sudo)\n")
|
||||
fmt.Printf(" sudo dbn prod install --bootstrap\n")
|
||||
fmt.Printf(" sudo dbn prod upgrade\n")
|
||||
fmt.Printf(" dbn prod status\n")
|
||||
fmt.Printf(" dbn prod logs node --follow\n")
|
||||
}
|
||||
|
||||
@ -65,6 +65,7 @@ func showProdHelp() {
|
||||
fmt.Printf(" Options:\n")
|
||||
fmt.Printf(" --restart - Automatically restart services after upgrade\n")
|
||||
fmt.Printf(" --branch BRANCH - Git branch to use (main or nightly, uses saved preference if not specified)\n")
|
||||
fmt.Printf(" --no-pull - Skip git clone/pull, use existing /home/debros/src\n")
|
||||
fmt.Printf(" status - Show status of production services\n")
|
||||
fmt.Printf(" start - Start all production services (requires root/sudo)\n")
|
||||
fmt.Printf(" stop - Stop all production services (requires root/sudo)\n")
|
||||
@ -86,6 +87,8 @@ func showProdHelp() {
|
||||
fmt.Printf(" sudo dbn prod upgrade --restart\n\n")
|
||||
fmt.Printf(" # Upgrade and switch to nightly branch\n")
|
||||
fmt.Printf(" sudo dbn prod upgrade --restart --branch nightly\n\n")
|
||||
fmt.Printf(" # Upgrade without pulling latest code (use existing /home/debros/src)\n")
|
||||
fmt.Printf(" sudo dbn prod upgrade --restart --no-pull\n\n")
|
||||
fmt.Printf(" # Service management\n")
|
||||
fmt.Printf(" sudo dbn prod start\n")
|
||||
fmt.Printf(" sudo dbn prod stop\n")
|
||||
@ -161,7 +164,7 @@ func handleProdInstall(args []string) {
|
||||
|
||||
debrosHome := "/home/debros"
|
||||
debrosDir := debrosHome + "/.debros"
|
||||
setup := production.NewProductionSetup(debrosHome, os.Stdout, force, branch)
|
||||
setup := production.NewProductionSetup(debrosHome, os.Stdout, force, branch, false)
|
||||
|
||||
// Save branch preference for future upgrades
|
||||
if err := production.SaveBranchPreference(debrosDir, branch); err != nil {
|
||||
@ -234,6 +237,7 @@ func handleProdUpgrade(args []string) {
|
||||
// Parse arguments
|
||||
force := false
|
||||
restartServices := false
|
||||
noPull := false
|
||||
branch := ""
|
||||
for i, arg := range args {
|
||||
if arg == "--force" {
|
||||
@ -242,6 +246,15 @@ func handleProdUpgrade(args []string) {
|
||||
if arg == "--restart" {
|
||||
restartServices = true
|
||||
}
|
||||
if arg == "--no-pull" {
|
||||
noPull = true
|
||||
}
|
||||
if arg == "--nightly" {
|
||||
branch = "nightly"
|
||||
}
|
||||
if arg == "--main" {
|
||||
branch = "main"
|
||||
}
|
||||
if arg == "--branch" {
|
||||
if i+1 < len(args) {
|
||||
branch = args[i+1]
|
||||
@ -266,7 +279,13 @@ func handleProdUpgrade(args []string) {
|
||||
fmt.Printf(" This will preserve existing configurations and data\n")
|
||||
fmt.Printf(" Configurations will be updated to latest format\n\n")
|
||||
|
||||
setup := production.NewProductionSetup(debrosHome, os.Stdout, force, branch)
|
||||
setup := production.NewProductionSetup(debrosHome, os.Stdout, force, branch, noPull)
|
||||
|
||||
// Log if --no-pull is enabled
|
||||
if noPull {
|
||||
fmt.Printf(" ⚠️ --no-pull flag enabled: Skipping git clone/pull\n")
|
||||
fmt.Printf(" Using existing repository at %s/src\n", debrosHome)
|
||||
}
|
||||
|
||||
// If branch was explicitly provided, save it for future upgrades
|
||||
if branch != "" {
|
||||
|
||||
@ -275,7 +275,7 @@ func (bi *BinaryInstaller) ResolveBinaryPath(binary string, extraPaths ...string
|
||||
}
|
||||
|
||||
// InstallDeBrosBinaries clones and builds DeBros binaries
|
||||
func (bi *BinaryInstaller) InstallDeBrosBinaries(branch string, debrosHome string) error {
|
||||
func (bi *BinaryInstaller) InstallDeBrosBinaries(branch string, debrosHome string, skipRepoUpdate bool) error {
|
||||
fmt.Fprintf(bi.logWriter.(interface{ Write([]byte) (int, error) }), " Building DeBros binaries...\n")
|
||||
|
||||
srcDir := filepath.Join(debrosHome, "src")
|
||||
@ -291,23 +291,39 @@ func (bi *BinaryInstaller) InstallDeBrosBinaries(branch string, debrosHome strin
|
||||
repoInitialized = true
|
||||
}
|
||||
|
||||
// Clone repository if not present, otherwise update it
|
||||
if !repoInitialized {
|
||||
fmt.Fprintf(bi.logWriter.(interface{ Write([]byte) (int, error) }), " Cloning repository...\n")
|
||||
cmd := exec.Command("git", "clone", "--branch", branch, "--depth", "1", "https://github.com/DeBrosOfficial/network.git", srcDir)
|
||||
if err := cmd.Run(); err != nil {
|
||||
return fmt.Errorf("failed to clone repository: %w", err)
|
||||
// Handle repository update/clone based on skipRepoUpdate flag
|
||||
if skipRepoUpdate {
|
||||
fmt.Fprintf(bi.logWriter.(interface{ Write([]byte) (int, error) }), " Skipping repo clone/pull (--no-pull flag)\n")
|
||||
if !repoInitialized {
|
||||
return fmt.Errorf("cannot skip pull: repository not found at %s", srcDir)
|
||||
}
|
||||
// Verify srcDir exists and has content
|
||||
if entries, err := os.ReadDir(srcDir); err != nil {
|
||||
return fmt.Errorf("failed to read source directory %s: %w", srcDir, err)
|
||||
} else if len(entries) == 0 {
|
||||
return fmt.Errorf("source directory %s is empty", srcDir)
|
||||
}
|
||||
fmt.Fprintf(bi.logWriter.(interface{ Write([]byte) (int, error) }), " Using existing repository at %s (skipping git operations)\n", srcDir)
|
||||
// Skip to build step - don't execute any git commands
|
||||
} else {
|
||||
fmt.Fprintf(bi.logWriter.(interface{ Write([]byte) (int, error) }), " Updating repository to latest changes...\n")
|
||||
if output, err := exec.Command("git", "-C", srcDir, "fetch", "origin", branch).CombinedOutput(); err != nil {
|
||||
return fmt.Errorf("failed to fetch repository updates: %v\n%s", err, string(output))
|
||||
}
|
||||
if output, err := exec.Command("git", "-C", srcDir, "reset", "--hard", "origin/"+branch).CombinedOutput(); err != nil {
|
||||
return fmt.Errorf("failed to reset repository: %v\n%s", err, string(output))
|
||||
}
|
||||
if output, err := exec.Command("git", "-C", srcDir, "clean", "-fd").CombinedOutput(); err != nil {
|
||||
return fmt.Errorf("failed to clean repository: %v\n%s", err, string(output))
|
||||
// Clone repository if not present, otherwise update it
|
||||
if !repoInitialized {
|
||||
fmt.Fprintf(bi.logWriter.(interface{ Write([]byte) (int, error) }), " Cloning repository...\n")
|
||||
cmd := exec.Command("git", "clone", "--branch", branch, "--depth", "1", "https://github.com/DeBrosOfficial/network.git", srcDir)
|
||||
if err := cmd.Run(); err != nil {
|
||||
return fmt.Errorf("failed to clone repository: %w", err)
|
||||
}
|
||||
} else {
|
||||
fmt.Fprintf(bi.logWriter.(interface{ Write([]byte) (int, error) }), " Updating repository to latest changes...\n")
|
||||
if output, err := exec.Command("git", "-C", srcDir, "fetch", "origin", branch).CombinedOutput(); err != nil {
|
||||
return fmt.Errorf("failed to fetch repository updates: %v\n%s", err, string(output))
|
||||
}
|
||||
if output, err := exec.Command("git", "-C", srcDir, "reset", "--hard", "origin/"+branch).CombinedOutput(); err != nil {
|
||||
return fmt.Errorf("failed to reset repository: %v\n%s", err, string(output))
|
||||
}
|
||||
if output, err := exec.Command("git", "-C", srcDir, "clean", "-fd").CombinedOutput(); err != nil {
|
||||
return fmt.Errorf("failed to clean repository: %v\n%s", err, string(output))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -31,6 +31,7 @@ type ProductionSetup struct {
|
||||
serviceController *SystemdController
|
||||
binaryInstaller *BinaryInstaller
|
||||
branch string
|
||||
skipRepoUpdate bool
|
||||
NodePeerID string // Captured during Phase3 for later display
|
||||
}
|
||||
|
||||
@ -62,7 +63,7 @@ func SaveBranchPreference(debrosDir, branch string) error {
|
||||
}
|
||||
|
||||
// NewProductionSetup creates a new production setup orchestrator
|
||||
func NewProductionSetup(debrosHome string, logWriter io.Writer, forceReconfigure bool, branch string) *ProductionSetup {
|
||||
func NewProductionSetup(debrosHome string, logWriter io.Writer, forceReconfigure bool, branch string, skipRepoUpdate bool) *ProductionSetup {
|
||||
debrosDir := debrosHome + "/.debros"
|
||||
arch, _ := (&ArchitectureDetector{}).Detect()
|
||||
|
||||
@ -78,6 +79,7 @@ func NewProductionSetup(debrosHome string, logWriter io.Writer, forceReconfigure
|
||||
forceReconfigure: forceReconfigure,
|
||||
arch: arch,
|
||||
branch: branch,
|
||||
skipRepoUpdate: skipRepoUpdate,
|
||||
privChecker: &PrivilegeChecker{},
|
||||
osDetector: &OSDetector{},
|
||||
archDetector: &ArchitectureDetector{},
|
||||
@ -247,7 +249,7 @@ func (ps *ProductionSetup) Phase2bInstallBinaries() error {
|
||||
}
|
||||
|
||||
// Install DeBros binaries
|
||||
if err := ps.binaryInstaller.InstallDeBrosBinaries(ps.branch, ps.debrosHome); err != nil {
|
||||
if err := ps.binaryInstaller.InstallDeBrosBinaries(ps.branch, ps.debrosHome, ps.skipRepoUpdate); err != nil {
|
||||
return fmt.Errorf("failed to install DeBros binaries: %w", err)
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user