diff --git a/publish/main.go b/publish/main.go index d389be1..6adfeb1 100644 --- a/publish/main.go +++ b/publish/main.go @@ -21,30 +21,47 @@ func main() { vversion := fmt.Sprintf("v%s", version) existe, _ := releases.CheckRelease(vversion) - fmt.Printf(" << existe : %t\n", existe) - if existe == false { - err := releases.CreateRelease(vversion, occonst.PUBLISH_BRANCH) - if err != nil { - fmt.Println(err) - os.Exit(1) - } - } + if existe == false { + err := releases.CreateRelease(vversion, occonst.PUBLISH_BRANCH) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + } - idRelease, _ := releases.GetReleaseId(vversion) - fmt.Println(fmt.Sprintf(" << id : %d ", idRelease)) + idRelease, _ := releases.GetReleaseId(vversion) + if existe == true { + fmt.Println(fmt.Sprintf(" << Release existante : %d ", idRelease)) + } else { + fmt.Println(fmt.Sprintf(" << Release crée : %d ", idRelease)) + } + assetname := "oc.json" ficversion := fmt.Sprintf("../oc_%s.yml", version) - ficjson := fmt.Sprintf("../oc.json") - createJsonFile(ficversion, ficjson) + ficjson := fmt.Sprintf("../%s", assetname) + err := createJsonFile(ficversion, ficjson) + if err != nil { + fmt.Println(err) + os.Exit(1) + } - idAsset, _ := releases.GetAssetId(idRelease, "oc.json") - if idAsset == 0 { - releases.CreateAsset(idRelease, ficjson) - } else { - releases.UpdateAsset(idRelease, idAsset, ficjson) - fmt.Println(fmt.Sprintf(" << idAsset : %d ", idAsset)) - } + idAsset, _ := releases.GetAssetId(idRelease, assetname) + if idAsset == 0 { + fmt.Println(fmt.Sprintf(" << Ajout Asset : %s", assetname)) + err := releases.CreateAsset(idRelease, ficjson, assetname) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + } else { + fmt.Println(fmt.Sprintf(" << Mise à jour : %s (idAsset=%d) ", assetname, idAsset)) + err := releases.UpdateAsset(idRelease, idAsset, ficjson, assetname) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + } } diff --git a/publish/releases/assets.go b/publish/releases/assets.go index e1bc448..a500a48 100644 --- a/publish/releases/assets.go +++ b/publish/releases/assets.go @@ -6,6 +6,7 @@ import ( "path/filepath" "mime/multipart" "io" + "io/ioutil" "encoding/json" "net/http" "bytes" @@ -53,7 +54,7 @@ func GetAssetId(idRelease int, name string) (int, error) { // -H 'accept: application/json' \ // -H 'Content-Type: multipart/form-data' \ // -F 'attachment=oc-deploy' -func CreateAsset(idRelease int, filename string, name string) (int, error) { +func CreateAsset(idRelease int, filename string, name string) (error) { url := fmt.Sprintf("%s/api/v1/repos/%s/releases/%d/assets?name=%s&token=%s", occonst.PUBLISH_URL, occonst.PUBLISH_REPO, @@ -63,20 +64,42 @@ func CreateAsset(idRelease int, filename string, name string) (int, error) { err := uploadFile(url, "attachment", filename) - return 0, err + return err } -func UpdateAsset(idRelease int, idAsset int,filename string, name string) (int, error) { - url := fmt.Sprintf("%s/api/v1/repos/%s/releases/%d/assets?name=%s&token=%s", - occonst.PUBLISH_URL, - occonst.PUBLISH_REPO, - idRelease, - name, - occonst.PUBLISH_TOKEN) +func UpdateAsset(idRelease int, idAsset int, filename string, name string) (error) { - err := uploadFile(url, "attachment", filename) + url := fmt.Sprintf("%s/api/v1/repos/%s/releases/%d/assets/%d?token=%s", + occonst.PUBLISH_URL, + occonst.PUBLISH_REPO, + idRelease, + idAsset, + occonst.PUBLISH_TOKEN) - return 0, err + // Create client + client := &http.Client{} + + // Create request + req, err := http.NewRequest("DELETE", url, nil) + if err != nil { + return err + } + + // Fetch Request + resp, err := client.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + + // Read Response Body + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + fmt.Println(string(respBody)) + + return CreateAsset(idRelease, filename, name) } func uploadFile(url string, paramName string, filePath string) error { @@ -85,7 +108,7 @@ func uploadFile(url string, paramName string, filePath string) error { return err } defer file.Close() - + body := &bytes.Buffer{} writer := multipart.NewWriter(body) part, err := writer.CreateFormFile(paramName, filepath.Base(filePath)) @@ -104,14 +127,19 @@ func uploadFile(url string, paramName string, filePath string) error { request.Header.Add("accept", "application/json") client := &http.Client{} response, err := client.Do(request) - + if err != nil { + fmt.Println(109, err) return err } defer response.Body.Close() - _, err := io.ReadAll(response.Body) + if response.StatusCode > 400 { + return fmt.Errorf(response.Status) + } + + _, err1 := io.ReadAll(response.Body) // Handle the server response... - return nil + return err1 } diff --git a/publish/releases/release.go b/publish/releases/release.go index a1f346c..802b12f 100644 --- a/publish/releases/release.go +++ b/publish/releases/release.go @@ -3,6 +3,7 @@ package releases import ( "fmt" "io" + "io/ioutil" "strings" "encoding/json" "net/http" @@ -86,14 +87,19 @@ func CreateRelease(version string, branch string) (error) { occonst.PUBLISH_REPO, occonst.PUBLISH_TOKEN) + releasebytes, err := ioutil.ReadFile("release.txt") + releasetxt := string(releasebytes) + releasetxt = strings.Replace(releasetxt, "\n", "\\n", -1) + releasetxt = fmt.Sprintf(releasetxt, version, occonst.PUBLISH_URL, occonst.PUBLISH_REPO, version) + body := fmt.Sprintf(`{ - "body": "Version %s", + "body": "%s", "draft": false, "name": "%s", "prerelease": false, "tag_name": "%s", "target_commitish": "%s" -}`, version, version, version, branch) +}`, releasetxt, version, version, branch) request, err := http.NewRequest("POST", url, strings.NewReader(body)) if err != nil { @@ -110,6 +116,9 @@ func CreateRelease(version string, branch string) (error) { defer response.Body.Close() _, err1 := io.ReadAll(response.Body) + // cnt, err1 := io.ReadAll(response.Body) + // fmt.Println(string(cnt)) + if err1 != nil { return err1 }