func debugPprof(args []string) error { var dir string if len(args) == 0 { dir = debugLatestImport() } else { dir = args[0] } const profile = "heap" var header debugexport.DebugHeader data, err := ioutil.ReadFile(filepath.Join(dir, "header.json")) if err != nil { lg.Fatal(err) } err = json.Unmarshal(data, &header) if err != nil { lg.Fatal(err) } lg.Infof("%+v", header) q := nexus.BuildQuery{ OS: header.OS, Arch: header.Arch, Version: header.Version, Cmd: "alkasir-gui", } cmdlocation, err := q.GetMatchingBuildBinary() if err != nil { lg.Fatal(err) } var cmdargs []string cmdargs = append(cmdargs, "tool", "pprof", cmdlocation, filepath.Join(dir, profile+".txt")) cmd := exec.Command("go", cmdargs...) cmd.Stdout = os.Stdout cmd.Stdin = os.Stdin cmd.Stderr = os.Stderr return cmd.Run() }
func createJobs(q nexus.BuildQuery, jobC chan CreatePatchJob, privateKey string, publicKey string) error { versions, err := q.GetVersions() if err != nil { lg.Fatal(err) } sort.Sort(versions) sort.Sort(sort.Reverse(versions)) if len(versions) < 2 { return errors.New("too few versions") } latestVersion := versions[0] lg.V(20).Infoln("latest version", latestVersion) { if len(versions) > PatchHistoryAmountMax+1 { versions = versions[1 : PatchHistoryAmountMax+1] } else { versions = versions[1:] } } lg.V(20).Infoln("old versions", versions) // TODO: reimplement this check so that upgrade processing can be resumed. // if _, err := os.Stat(jsonname); err == nil { // lg.Infof("%s exists, skipping processing", jsonname) // return nil // } latestBinPath, err := q.GetBinary(latestVersion) if err != nil { return err } lg.Infof("creating patchJobs for %s %s %s", latestVersion.ArtifactID, latestVersion.Classifier, latestVersion.Version, ) for _, v := range versions { bp, err := q.GetBinary(v) if err != nil { return err } j := CreatePatchJob{ Artifact: fmt.Sprintf("%s-%s", latestVersion.ArtifactID, latestVersion.Classifier), OldBinary: bp, NewBinary: latestBinPath, NewVersion: latestVersion.Version, OldVersion: v.Version, PrivateKey: privateKey, PublicKey: publicKey, } lg.V(10).Infof("sending created job %s", j.Artifact) jobC <- j lg.V(10).Infof("sent job %s", j.Artifact) } lg.Infof("all jobs created for %s", q.ArtifactDisplayName()) return nil }