main.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "log"
  6. "os"
  7. )
  8. func main() {
  9. var version string
  10. var whatsNewUrl string
  11. var releaseNotesUrl string
  12. var dryRun bool
  13. var enterprise bool
  14. var fromLocal bool
  15. var apiKey string
  16. flag.StringVar(&version, "version", "", "Grafana version (ex: --version v5.2.0-beta1)")
  17. flag.StringVar(&whatsNewUrl, "wn", "", "What's new url (ex: --wn http://docs.grafana.org/guides/whats-new-in-v5-2/)")
  18. flag.StringVar(&releaseNotesUrl, "rn", "", "Grafana version (ex: --rn https://community.grafana.com/t/release-notes-v5-2-x/7894)")
  19. flag.StringVar(&apiKey, "apikey", "", "Grafana.com API key (ex: --apikey ABCDEF)")
  20. flag.BoolVar(&dryRun, "dry-run", false, "--dry-run")
  21. flag.BoolVar(&enterprise, "enterprise", false, "--enterprise")
  22. flag.BoolVar(&fromLocal, "from-local", false, "--from-local")
  23. flag.Parse()
  24. if len(os.Args) == 1 {
  25. fmt.Println("Usage: go run publisher.go main.go --version <v> --wn <what's new url> --rn <release notes url> --apikey <api key> --dry-run false --enterprise false")
  26. fmt.Println("example: go run publisher.go main.go --version v5.2.0-beta2 --wn http://docs.grafana.org/guides/whats-new-in-v5-2/ --rn https://community.grafana.com/t/release-notes-v5-2-x/7894 --apikey ASDF123 --dry-run --enterprise")
  27. os.Exit(1)
  28. }
  29. if dryRun {
  30. log.Println("Dry-run has been enabled.")
  31. }
  32. var baseUrl string
  33. var builder releaseBuilder
  34. var product string
  35. if fromLocal {
  36. path, _ := os.Getwd()
  37. builder = releaseLocalSources{
  38. path: path,
  39. artifactConfigurations: buildArtifactConfigurations,
  40. }
  41. } else {
  42. builder = releaseFromExternalContent{
  43. getter: getHttpContents{},
  44. rawVersion: version,
  45. artifactConfigurations: buildArtifactConfigurations,
  46. }
  47. }
  48. if enterprise {
  49. baseUrl = "https://s3-us-west-2.amazonaws.com/grafana-enterprise-releases/release/grafana-enterprise"
  50. product = "grafana-enterprise"
  51. } else {
  52. baseUrl = "https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana"
  53. product = "grafana"
  54. }
  55. p := publisher{
  56. apiKey: apiKey,
  57. apiUri: "https://grafana.com/api",
  58. product: product,
  59. dryRun: dryRun,
  60. enterprise: enterprise,
  61. baseArchiveUrl: baseUrl,
  62. builder: builder,
  63. }
  64. if err := p.doRelease(whatsNewUrl, releaseNotesUrl); err != nil {
  65. log.Fatalf("error: %v", err)
  66. }
  67. }