func main() { if len(os.Args) < 2 { println("usage: " + os.Args[0] + " <destination>") os.Exit(1) } destination := os.Args[1] err := os.MkdirAll(destination, 0755) if err != nil { fatal("creating destination", err) } var request models.InRequest err = json.NewDecoder(os.Stdin).Decode(&request) if err != nil { fatal("reading request", err) } inputVersion, err := semver.Parse(request.Version.Number) if err != nil { fatal("parsing semantic version", err) } bumped := version.BumpFromParams(request.Params.Bump, request.Params.Pre).Apply(inputVersion) if !bumped.Equals(inputVersion) { fmt.Fprintf(os.Stderr, "bumped locally from %s to %s\n", inputVersion, bumped) } numberFile, err := os.Create(filepath.Join(destination, "number")) if err != nil { fatal("opening number file", err) } defer numberFile.Close() _, err = fmt.Fprintf(numberFile, "%s", bumped.String()) if err != nil { fatal("writing to number file", err) } json.NewEncoder(os.Stdout).Encode(models.InResponse{ Version: request.Version, Metadata: models.Metadata{ {"number", request.Version.Number}, }, }) }
func main() { if len(os.Args) < 2 { println("usage: " + os.Args[0] + " <source>") os.Exit(1) } sources := os.Args[1] var request models.OutRequest err := json.NewDecoder(os.Stdin).Decode(&request) if err != nil { fatal("reading request", err) } driver, err := driver.FromSource(request.Source) if err != nil { fatal("constructing driver", err) } var newVersion semver.Version if request.Params.File != "" { versionFile, err := os.Open(filepath.Join(sources, request.Params.File)) if err != nil { fatal("opening version file", err) } defer versionFile.Close() var versionStr string _, err = fmt.Fscanf(versionFile, "%s", &versionStr) if err != nil { fatal("reading version file", err) } newVersion, err = semver.Parse(versionStr) if err != nil { fatal("parsing version", err) } err = driver.Set(newVersion) if err != nil { fatal("setting version", err) } } else if request.Params.Bump != "" || request.Params.Pre != "" { bump := version.BumpFromParams(request.Params.Bump, request.Params.Pre) newVersion, err = driver.Bump(bump) if err != nil { fatal("bumping version", err) } } else { println("no version bump specified") os.Exit(1) } outVersion := models.Version{ Number: newVersion.String(), } json.NewEncoder(os.Stdout).Encode(models.OutResponse{ Version: outVersion, Metadata: models.Metadata{ {"number", outVersion.Number}, }, }) }