mirror of
https://github.com/DeBrosOfficial/network.git
synced 2026-01-30 16:03:02 +00:00
66 lines
2.4 KiB
Go
66 lines
2.4 KiB
Go
package install
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
// Flags represents install command flags
|
|
type Flags struct {
|
|
VpsIP string
|
|
Domain string
|
|
Branch string
|
|
NoPull bool
|
|
Force bool
|
|
DryRun bool
|
|
SkipChecks bool
|
|
JoinAddress string
|
|
ClusterSecret string
|
|
SwarmKey string
|
|
PeersStr string
|
|
|
|
// IPFS/Cluster specific info for Peering configuration
|
|
IPFSPeerID string
|
|
IPFSAddrs string
|
|
IPFSClusterPeerID string
|
|
IPFSClusterAddrs string
|
|
}
|
|
|
|
// ParseFlags parses install command flags
|
|
func ParseFlags(args []string) (*Flags, error) {
|
|
fs := flag.NewFlagSet("install", flag.ContinueOnError)
|
|
fs.SetOutput(os.Stderr)
|
|
|
|
flags := &Flags{}
|
|
|
|
fs.StringVar(&flags.VpsIP, "vps-ip", "", "Public IP of this VPS (required)")
|
|
fs.StringVar(&flags.Domain, "domain", "", "Domain name for HTTPS (optional, e.g. gateway.example.com)")
|
|
fs.StringVar(&flags.Branch, "branch", "main", "Git branch to use (main or nightly)")
|
|
fs.BoolVar(&flags.NoPull, "no-pull", false, "Skip git clone/pull, use existing repository in /home/debros/src")
|
|
fs.BoolVar(&flags.Force, "force", false, "Force reconfiguration even if already installed")
|
|
fs.BoolVar(&flags.DryRun, "dry-run", false, "Show what would be done without making changes")
|
|
fs.BoolVar(&flags.SkipChecks, "skip-checks", false, "Skip minimum resource checks (RAM/CPU)")
|
|
|
|
// Cluster join flags
|
|
fs.StringVar(&flags.JoinAddress, "join", "", "Join an existing cluster (e.g. 1.2.3.4:7001)")
|
|
fs.StringVar(&flags.ClusterSecret, "cluster-secret", "", "Cluster secret for IPFS Cluster (required if joining)")
|
|
fs.StringVar(&flags.SwarmKey, "swarm-key", "", "IPFS Swarm key (required if joining)")
|
|
fs.StringVar(&flags.PeersStr, "peers", "", "Comma-separated list of bootstrap peer multiaddrs")
|
|
|
|
// IPFS/Cluster specific info for Peering configuration
|
|
fs.StringVar(&flags.IPFSPeerID, "ipfs-peer", "", "Peer ID of existing IPFS node to peer with")
|
|
fs.StringVar(&flags.IPFSAddrs, "ipfs-addrs", "", "Comma-separated multiaddrs of existing IPFS node")
|
|
fs.StringVar(&flags.IPFSClusterPeerID, "ipfs-cluster-peer", "", "Peer ID of existing IPFS Cluster node")
|
|
fs.StringVar(&flags.IPFSClusterAddrs, "ipfs-cluster-addrs", "", "Comma-separated multiaddrs of existing IPFS Cluster node")
|
|
|
|
if err := fs.Parse(args); err != nil {
|
|
if err == flag.ErrHelp {
|
|
return nil, err
|
|
}
|
|
return nil, fmt.Errorf("failed to parse flags: %w", err)
|
|
}
|
|
|
|
return flags, nil
|
|
}
|