92 lines
2.4 KiB
Go
92 lines
2.4 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"code.gitea.io/sdk/gitea"
|
|
)
|
|
|
|
type VersionInfo struct {
|
|
Version string `json:"version"`
|
|
}
|
|
|
|
func main() {
|
|
client, err := createGiteaClient()
|
|
if err != nil {
|
|
log.Fatalf("Error creating Gitea client: %v", err)
|
|
}
|
|
|
|
version := os.Getenv("VERSION")
|
|
if version == "" {
|
|
log.Fatalf("VERSION environment variable is not set")
|
|
}
|
|
|
|
if err := updateVersionFile(version); err != nil {
|
|
log.Fatalf("Error updating version file: %v", err)
|
|
}
|
|
|
|
repoOwner := "IDSolutions"
|
|
repoName := "dragonfly"
|
|
|
|
release, err := createRelease(client, repoOwner, repoName, version)
|
|
if err != nil {
|
|
log.Fatalf("Error creating release: %v", err)
|
|
}
|
|
|
|
artifactFilename := fmt.Sprintf("dragonfly-%s.zip", version)
|
|
artifactPath := filepath.Join("releases", artifactFilename)
|
|
|
|
if err := uploadArtifact(client, repoOwner, repoName, release.ID, artifactPath); err != nil {
|
|
log.Fatalf("Error uploading release asset: %v", err)
|
|
}
|
|
|
|
fmt.Println("Release created, artifact uploaded, and version file updated successfully!")
|
|
}
|
|
|
|
func updateVersionFile(version string) error {
|
|
versionInfo := VersionInfo{Version: version}
|
|
jsonData, err := json.MarshalIndent(versionInfo, "", " ")
|
|
if err != nil {
|
|
return fmt.Errorf("error marshaling version info: %w", err)
|
|
}
|
|
|
|
err = os.WriteFile("dragonfly_version.json", jsonData, 0644)
|
|
if err != nil {
|
|
return fmt.Errorf("error writing version file: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func createGiteaClient() (*gitea.Client, error) {
|
|
token := os.Getenv("GITHUB_TOKEN")
|
|
if token == "" {
|
|
return nil, fmt.Errorf("GITHUB_TOKEN environment variable is not set")
|
|
}
|
|
return gitea.NewClient("https://gitea.innovativedevsolutions.org", gitea.SetToken(token))
|
|
}
|
|
|
|
func createRelease(client *gitea.Client, owner, repo, version string) (*gitea.Release, error) {
|
|
release, _, err := client.CreateRelease(owner, repo, gitea.CreateReleaseOption{
|
|
TagName: version,
|
|
Title: fmt.Sprintf("ArmaDragonflyClient v%s", version),
|
|
Note: fmt.Sprintf("Release notes for version %s", version),
|
|
})
|
|
return release, err
|
|
}
|
|
|
|
func uploadArtifact(client *gitea.Client, owner, repo string, releaseID int64, artifactPath string) error {
|
|
file, err := os.Open(artifactPath)
|
|
if err != nil {
|
|
return fmt.Errorf("error opening artifact file: %w", err)
|
|
}
|
|
defer file.Close()
|
|
|
|
_, _, err = client.CreateReleaseAttachment(owner, repo, releaseID, file, filepath.Base(artifactPath))
|
|
return err
|
|
}
|