package main

import (
	"fmt"
	"github.com/go-resty/resty/v2"
	"os"
	"path/filepath"
	"strings"
)

const APT_SERVICE_API = "https://apt.lumeweb.com"

func main() {
	err := run()

	if err != nil {
		fmt.Printf("%s", err)
	}
}

func run() error {
	client := resty.New()
	files, _ := filepath.Glob("*.deb")
	pkg := files[0]
	pkg_name := strings.TrimSuffix(pkg, filepath.Ext(pkg))
	pkg_parts := strings.Split(pkg_name, "_")
	pkg_parts = pkg_parts[:len(pkg_parts)-1]
	pkg_name = strings.Join(pkg_parts, "-")

	repo := os.Getenv("PLUGIN_REPO")
	gpg_pass := os.Getenv("PLUGIN_GPG_PASSWORD")
	distro := os.Getenv("PLUGIN_DISTRO")
	folder := os.Getenv("PLUGIN_FOLDER")

	client.SetBasicAuth(os.Getenv("PLUGIN_APT_USERNAME"), os.Getenv("PLUGIN_APT_PASSWORD")).SetBaseURL(APT_SERVICE_API)

	resp, err := client.R().
		SetFile("file", pkg).
		Post("/api/files/" + pkg_name)
	if err != nil {
		return err
	}

	resp, err = client.R().
		Post("/api/repos/" + repo + "/file/" + pkg_name)

	if err != nil {
		return err
	}
	resp, err = client.R().
		SetBody(map[string]interface{}{
			"Architectures": []string{"amd64"},
			"Passphrase":    gpg_pass,
			"SourceKind":    "local",
			"Signing": map[string]interface{}{
				"Batch":      true,
				"Passphrase": gpg_pass,
			},
			"ForceOverwrite": true,
		}).
		Put(fmt.Sprintf("/api/publish/s3:%s:%s/%s", repo, folder, distro))

	if err != nil {
		return err
	}

	_ = resp

	return nil
}
