github.com/ungtb10d/git-lfs@v2.5.2+incompatible/script/release.go (about)

     1  package main
     2  
     3  import (
     4  	"encoding/json"
     5  	"flag"
     6  	"fmt"
     7  	"log"
     8  	"net/url"
     9  	"os"
    10  	"os/exec"
    11  	"strings"
    12  )
    13  
    14  var (
    15  	ReleaseId    = flag.Int("id", 0, "git-lfs/git-lfs Release ID")
    16  	uploadUrlFmt = "https://uploads.github.com/repos/git-lfs/git-lfs/releases/%d/assets?%s"
    17  )
    18  
    19  func mainRelease() {
    20  	if *ReleaseId < 1 {
    21  		log.Println("Need a valid git-lfs/git-lfs release id.")
    22  		log.Fatalln("usage: script/release -id")
    23  	}
    24  
    25  	file, err := os.Open("bin/releases/build_matrix.json")
    26  	if err != nil {
    27  		log.Println("Error opening build_matrix.json:", err)
    28  		log.Fatalln("Ensure `make release` has completed successfully")
    29  	}
    30  
    31  	defer file.Close()
    32  
    33  	buildMatrix := make(map[string]Release)
    34  	if err := json.NewDecoder(file).Decode(&buildMatrix); err != nil {
    35  		log.Fatalln("Error reading build_matrix.json:", err)
    36  	}
    37  
    38  	for _, rel := range buildMatrix {
    39  		release(rel)
    40  		fmt.Println()
    41  	}
    42  
    43  	fmt.Println("SHA-256 hashes:")
    44  	for _, rel := range buildMatrix {
    45  		fmt.Printf("**%s**\n%s\n\n", rel.Filename, rel.SHA256)
    46  	}
    47  }
    48  
    49  func release(rel Release) {
    50  	query := url.Values{}
    51  	query.Add("name", rel.Filename)
    52  	query.Add("label", rel.Label)
    53  
    54  	args := []string{
    55  		"-in",
    56  		"-H", "Content-Type: application/octet-stream",
    57  		"-X", "POST",
    58  		"--data-binary", "@bin/releases/" + rel.Filename,
    59  		fmt.Sprintf(uploadUrlFmt, *ReleaseId, query.Encode()),
    60  	}
    61  
    62  	fmt.Println("curl", strings.Join(args, " "))
    63  
    64  	cmd := exec.Command("curl", args...)
    65  
    66  	by, err := cmd.Output()
    67  	if err != nil {
    68  		log.Fatalln("Error running curl:", err)
    69  	}
    70  
    71  	fmt.Println(string(by))
    72  }