()
| 52 | ) |
| 53 | |
| 54 | func (p Plugin) Exec() error { |
| 55 | var ( |
| 56 | files []string |
| 57 | ) |
| 58 | |
| 59 | if p.Build.Event != "tag" { |
| 60 | return fmt.Errorf("The GitHub Release plugin is only available for tags") |
| 61 | } |
| 62 | |
| 63 | if p.Config.APIKey == "" { |
| 64 | return fmt.Errorf("You must provide an API key") |
| 65 | } |
| 66 | |
| 67 | if !fileExistsValues[p.Config.FileExists] { |
| 68 | return fmt.Errorf("Invalid value for file_exists") |
| 69 | } |
| 70 | |
| 71 | if !strings.HasSuffix(p.Config.BaseURL, "/") { |
| 72 | p.Config.BaseURL = p.Config.BaseURL + "/" |
| 73 | } |
| 74 | |
| 75 | if !strings.HasSuffix(p.Config.UploadURL, "/") { |
| 76 | p.Config.UploadURL = p.Config.UploadURL + "/" |
| 77 | } |
| 78 | |
| 79 | var err error |
| 80 | if p.Config.Note != "" { |
| 81 | if p.Config.Note, err = readStringOrFile(p.Config.Note); err != nil { |
| 82 | return fmt.Errorf("error while reading %s: %v", p.Config.Note, err) |
| 83 | } |
| 84 | } |
| 85 | |
| 86 | if p.Config.Title != "" { |
| 87 | if p.Config.Title, err = readStringOrFile(p.Config.Title); err != nil { |
| 88 | return fmt.Errorf("error while reading %s: %v", p.Config.Note, err) |
| 89 | } |
| 90 | } |
| 91 | |
| 92 | for _, glob := range p.Config.Files { |
| 93 | globed, err := filepath.Glob(glob) |
| 94 | |
| 95 | if err != nil { |
| 96 | return fmt.Errorf("Failed to glob %s. %s", glob, err) |
| 97 | } |
| 98 | |
| 99 | if globed != nil { |
| 100 | files = append(files, globed...) |
| 101 | } |
| 102 | } |
| 103 | |
| 104 | if len(p.Config.Checksum) > 0 { |
| 105 | var ( |
| 106 | err error |
| 107 | ) |
| 108 | |
| 109 | files, err = writeChecksums(files, p.Config.Checksum, p.Config.ChecksumFile, p.Config.ChecksumFlatten) |
| 110 | |
| 111 | if err != nil { |
no test coverage detected