summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-03-22 05:22:04 -0500
committerJeff Carr <[email protected]>2025-03-22 05:22:04 -0500
commitb2ed4102763421924b29ab4bb6be1a1e5b4b9647 (patch)
tree679db085b742c1eb5b0f3fb75aac54507e993620
parent68127e4356d00604b454bfee002a7fda233fb773 (diff)
work on setting the hostname in the patchset
-rw-r--r--hostname.go53
-rw-r--r--hostname_linux.go22
-rw-r--r--http.go37
-rw-r--r--init.go18
-rw-r--r--patchset.Make.go54
-rw-r--r--patchset.Send.go38
-rw-r--r--patchset.proto1
7 files changed, 127 insertions, 96 deletions
diff --git a/hostname.go b/hostname.go
new file mode 100644
index 0000000..85d61c6
--- /dev/null
+++ b/hostname.go
@@ -0,0 +1,53 @@
+// +build linux
+
+package main
+
+import (
+ "fmt"
+ "os"
+ "syscall"
+)
+
+// scutil --get ComputerName
+
+// getDomainName fetches the domain name using the getdomainname syscall.
+func getDomainName() (string, error) {
+ var buf [256]byte
+ err := syscall.Getdomainname(buf[:])
+ if err != nil {
+ return "", fmt.Errorf("failed to get domain name: %w", err)
+ }
+ // Trim null bytes
+ n := 0
+ for ; n < len(buf); n++ {
+ if buf[n] == 0 {
+ break
+ }
+ }
+ return string(buf[:n]), nil
+}
+
+// GetFullHostname returns the hostname + domain name (if set).
+func GetFullHostname() (string, error) {
+ host, err := os.Hostname()
+ if err != nil {
+ return "", fmt.Errorf("failed to get hostname: %w", err)
+ }
+
+ domain, err := getDomainName()
+ if err != nil || domain == "" {
+ return host, nil // fallback to short hostname
+ }
+
+ return fmt.Sprintf("%s.%s", host, domain), nil
+}
+
+func main() {
+ fqdn, err := GetFullHostname()
+ if err != nil {
+ fmt.Println("Error:", err)
+ return
+ }
+ fmt.Println("Hostname + Domain:", fqdn)
+}
+
diff --git a/hostname_linux.go b/hostname_linux.go
new file mode 100644
index 0000000..4ab6dee
--- /dev/null
+++ b/hostname_linux.go
@@ -0,0 +1,22 @@
+package main
+
+import (
+ "fmt"
+ "os"
+ "syscall"
+)
+
+// GetFullHostname returns the hostname + domain name (if set).
+func getFullHostname() (string, error) {
+ host, err := os.Hostname()
+ if err != nil {
+ return "", fmt.Errorf("failed to get hostname: %w", err)
+ }
+
+ domain, err := getDomainName()
+ if err != nil || domain == "" {
+ return host, nil // fallback to short hostname
+ }
+
+ return fmt.Sprintf("%s.%s", host, domain), nil
+}
diff --git a/http.go b/http.go
index dbc0cb0..6c7b116 100644
--- a/http.go
+++ b/http.go
@@ -11,36 +11,6 @@ import (
"go.wit.com/log"
)
-/*
-func (f *Forge) HttpPostMachine(url string) ([]byte, error) {
- if f.Machine == nil {
- // run f.InitMachine() here?
- log.Info("you must run f.InitMachine()")
- return nil, fmt.Errorf("you must run f.InitMachine()")
- }
- if f.Machine.Hostname == "" {
- log.Info("WTF. hostname is blank")
- } else {
- log.Info("GOOD. hostname is set to", f.Machine.Hostname)
- }
- log.Info("GOOD2. hostname is set to", f.Machine.Hostname)
- msg, err := f.Machine.Marshal()
- if err != nil {
- log.Info("proto.Marshal() failed:", err)
- return nil, err
- }
- log.Info("GOOD3. hostname is set to", f.Machine.Hostname)
-
- check := new(zoopb.Machine)
- check.Unmarshal(msg)
- if check == nil {
- log.Info("WTF. check == nil")
- }
- log.Info("good? check.hostname =", check.Hostname)
- return f.HttpPost(url, msg)
-}
-*/
-
func (f *Forge) HttpPost(url string, data []byte) ([]byte, error) {
var err error
var req *http.Request
@@ -50,13 +20,6 @@ func (f *Forge) HttpPost(url string, data []byte) ([]byte, error) {
usr, _ := user.Current()
req.Header.Set("author", usr.Username)
- /*
- if f.Machine == nil {
- // run f.InitMachine() here?
- log.Info("you must run f.InitMachine()")
- return nil, fmt.Errorf("you must run f.InitMachine()")
- }
- */
req.Header.Set("hostname", "fixme:hostname")
client := &http.Client{}
diff --git a/init.go b/init.go
index 883fab4..94b58d3 100644
--- a/init.go
+++ b/init.go
@@ -145,28 +145,10 @@ func (f *Forge) InitPB() {
}
func (f *Forge) InitMachine() {
- /*
- f.Machine = new(zoopb.Machine)
- if err := f.Machine.ConfigLoad(); err != nil {
- log.Log(WARN, "zoopb.ConfigLoad() failed", err)
- f.Machine.InitWit()
- }
- */
-
if f.Config.Username == "" {
usr, _ := user.Current()
f.Config.Username = usr.Username
}
-
- /*
- if f.Machine.Hostname == "" {
- r, err := shell.RunVerbose([]string{"hostname", "-f"})
- if err == nil {
- tmp := strings.Join(r.Stdout, "\n")
- f.Machine.Hostname = strings.TrimSpace(tmp)
- }
- }
- */
}
// only init's the protobuf. intended to not scan or change anything
diff --git a/patchset.Make.go b/patchset.Make.go
index 4368719..37c7c7d 100644
--- a/patchset.Make.go
+++ b/patchset.Make.go
@@ -14,13 +14,20 @@ import (
timestamppb "google.golang.org/protobuf/types/known/timestamppb"
)
-// creates a patchset
-// works from the user branches against the devel branches
-func (f *Forge) MakeDevelPatchSet(name string) (*Patchset, error) {
+func (f *Forge) newPatchset(name string) *Patchset {
pset := new(Patchset)
pset.Name = name
pset.Ctime = timestamppb.New(time.Now())
pset.Uuid = uuid.New().String()
+ pset.Hostname = f.Machine.hostname
+
+ return pset
+}
+
+// creates a patchset
+// works from the user branches against the devel branches
+func (f *Forge) MakeDevelPatchSet(name string) (*Patchset, error) {
+ pset := newPatchset(name)
if os.Getenv("GIT_AUTHOR_NAME") == "" {
return nil, fmt.Errorf("GIT_AUTHOR_NAME not set")
} else {
@@ -65,19 +72,9 @@ func (f *Forge) MakeDevelPatchSet(name string) (*Patchset, error) {
return pset, nil
}
-func (f *Forge) SubmitDevelPatchSet(name string) (*Patchset, error) {
- pset, err := f.MakeDevelPatchSet(name)
- if err != nil {
- return nil, err
- }
- if err := f.submitPatchset(pset); err != nil {
- return nil, err
- }
- return pset, nil
-}
-
+/*
func (f *Forge) MakeMasterPatchSet() (*Patchset, error) {
- pset := new(Patchset)
+ pset := newPatchset("masterBranchPS")
dir, err := os.MkdirTemp("", "forge")
if err != nil {
return nil, err
@@ -107,6 +104,7 @@ func (f *Forge) MakeMasterPatchSet() (*Patchset, error) {
}
return pset, nil
}
+*/
func (pset *Patchset) makePatchSetNew(repo *gitpb.Repo) error {
startBranch := pset.StartBranchName
@@ -244,29 +242,3 @@ func onlyWalkDirs(pDir string) error {
})
return baderr
}
-
-func (f *Forge) submitPatchset(pset *Patchset) error {
- var url string
- url = forgeURL + "patchset"
- msg, err := pset.Marshal()
- if err != nil {
- log.Info("proto.Marshal() failed:", err)
- return err
- }
- log.Info("proto.Marshal() msg len", len(msg))
- body, err := f.HttpPost(url, msg)
- if err != nil {
- log.Info("httpPost() failed:", err)
- return err
- }
-
- test := strings.TrimSpace(string(body))
- lines := strings.Split(test, "\n")
- count := 0
- for _, line := range lines {
- log.Info("got back:", line)
- count += 1
- }
- log.Info("Total patches:", count)
- return nil
-}
diff --git a/patchset.Send.go b/patchset.Send.go
index 00fe37e..b3d4a96 100644
--- a/patchset.Send.go
+++ b/patchset.Send.go
@@ -5,6 +5,7 @@ package forgepb
import (
"errors"
+ "strings"
"time"
"go.wit.com/log"
@@ -25,3 +26,40 @@ func (f *Forge) SendPatchSet(pset *Patchset) error {
return errors.New("don't know how to send yet")
}
+
+func (f *Forge) SubmitDevelPatchSet(name string) (*Patchset, error) {
+ pset, err := f.MakeDevelPatchSet(name)
+ if err != nil {
+ return nil, err
+ }
+ if err := f.submitPatchset(pset); err != nil {
+ return nil, err
+ }
+ return pset, nil
+}
+
+func (f *Forge) submitPatchset(pset *Patchset) error {
+ var url string
+ url = forgeURL + "patchset"
+ msg, err := pset.Marshal()
+ if err != nil {
+ log.Info("proto.Marshal() failed:", err)
+ return err
+ }
+ log.Info("proto.Marshal() msg len", len(msg))
+ body, err := f.HttpPost(url, msg)
+ if err != nil {
+ log.Info("httpPost() failed:", err)
+ return err
+ }
+
+ test := strings.TrimSpace(string(body))
+ lines := strings.Split(test, "\n")
+ count := 0
+ for _, line := range lines {
+ log.Info("got back:", line)
+ count += 1
+ }
+ log.Info("Total patches:", count)
+ return nil
+}
diff --git a/patchset.proto b/patchset.proto
index d8c859a..e00fb1c 100644
--- a/patchset.proto
+++ b/patchset.proto
@@ -77,6 +77,7 @@ message Patchset { // `autogenpb:mars
string endBranchHash = 11; //
string state = 12; // the state of the patch
string uuid = 13; // `autogenpb:sort` `autogenpb:unique`
+ string hostname = 14; //
}
message Patchsets { // `autogenpb:marshal` `autogenpb:gui`