mirror of
https://github.com/EnumeratedDev/bpm-utils.git
synced 2026-09-16 02:56:11 +00:00
bpm-package: add package signing
This commit is contained in:
+51
-1
@@ -21,13 +21,14 @@ import (
|
|||||||
|
|
||||||
var compile = flag.BoolP("compile", "c", false, "Compile BPM source package")
|
var compile = flag.BoolP("compile", "c", false, "Compile BPM source package")
|
||||||
var verbose = flag.BoolP("verbose", "v", false, "Show additional information about the compilation process")
|
var verbose = flag.BoolP("verbose", "v", false, "Show additional information about the compilation process")
|
||||||
var skipCheck = flag.BoolP("skip-checks", "s", false, "Skip 'check' function while compiling")
|
var skipCheck = flag.Bool("skip-checks", false, "Skip 'check' function while compiling")
|
||||||
var keepCompilationFiles = flag.BoolP("keep", "k", false, "Keep compilation files after successful package compilation")
|
var keepCompilationFiles = flag.BoolP("keep", "k", false, "Keep compilation files after successful package compilation")
|
||||||
var installDepends = flag.BoolP("depends", "d", false, "Install package dependencies for compilation")
|
var installDepends = flag.BoolP("depends", "d", false, "Install package dependencies for compilation")
|
||||||
var installPackage = flag.BoolP("install", "i", false, "Install compiled BPM package after compilation finishes")
|
var installPackage = flag.BoolP("install", "i", false, "Install compiled BPM package after compilation finishes")
|
||||||
var compilationJobs = flag.IntP("jobs", "j", 0, "Set the amount of concurrent processes to use for source package compilation")
|
var compilationJobs = flag.IntP("jobs", "j", 0, "Set the amount of concurrent processes to use for source package compilation")
|
||||||
var moveToBinaryDir = flag.BoolP("move", "m", false, "Move output packages to the current repository's binary directory")
|
var moveToBinaryDir = flag.BoolP("move", "m", false, "Move output packages to the current repository's binary directory")
|
||||||
var updateInfo = flag.BoolP("update-info", "u", false, "Update the pkg.info file")
|
var updateInfo = flag.BoolP("update-info", "u", false, "Update the pkg.info file")
|
||||||
|
var signPackage = flag.BoolP("sign", "s", false, "Sign package using GPG")
|
||||||
var yesAll = flag.BoolP("yes", "y", false, "Accept all confirmation prompts")
|
var yesAll = flag.BoolP("yes", "y", false, "Accept all confirmation prompts")
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -149,6 +150,18 @@ func createArchive() string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove old BPM archive signatures in current directory
|
||||||
|
oldSignatures, err := filepath.Glob("*.sig")
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Warning: could not search for old BPM archive signatures: %s", err)
|
||||||
|
}
|
||||||
|
for _, signature := range oldSignatures {
|
||||||
|
err = os.Remove(signature)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Warning: could not remove old BPM archive signature (%s): %s", signature, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Create filename
|
// Create filename
|
||||||
filename := fmt.Sprintf("%s-%s-%d-%s-src.bpm", pkgInfo.Name, pkgInfo.Version, pkgInfo.Revision, pkgInfo.Arch)
|
filename := fmt.Sprintf("%s-%s-%d-%s-src.bpm", pkgInfo.Name, pkgInfo.Version, pkgInfo.Revision, pkgInfo.Arch)
|
||||||
|
|
||||||
@@ -164,6 +177,19 @@ func createArchive() string {
|
|||||||
log.Fatalf("Error: failed to create BPM source archive: %s", err)
|
log.Fatalf("Error: failed to create BPM source archive: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sign package
|
||||||
|
if *signPackage {
|
||||||
|
cmd := exec.Command("gpg", "--detach-sign", filename)
|
||||||
|
cmd.Stdout = os.Stdout
|
||||||
|
cmd.Stderr = os.Stderr
|
||||||
|
cmd.Stdin = os.Stdin
|
||||||
|
|
||||||
|
err := cmd.Run()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Error: could not sign package: %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Get absolute path to filename
|
// Get absolute path to filename
|
||||||
absFilepath, err := filepath.Abs(filename)
|
absFilepath, err := filepath.Abs(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -246,6 +272,14 @@ func compilePackage(archive string) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Warning: could not remove old binary package (%s): %s", pkgFilepath, err)
|
log.Printf("Warning: could not remove old binary package (%s): %s", pkgFilepath, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove package signature
|
||||||
|
if _, err := os.Stat(pkgFilepath + ".sig"); err == nil {
|
||||||
|
err := os.Remove(pkgFilepath + ".sig")
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Warning: could not remove old binary package signature (%s): %s", pkgFilepath+".str", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -266,6 +300,22 @@ func compilePackage(archive string) {
|
|||||||
bpmutilsshared.UpdateDatabases(repo)
|
bpmutilsshared.UpdateDatabases(repo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sign package
|
||||||
|
if *signPackage {
|
||||||
|
for k, v := range outputPkgs {
|
||||||
|
cmd := exec.Command("gpg", "--detach-sign", v)
|
||||||
|
cmd.Dir = path.Dir(v)
|
||||||
|
cmd.Stdout = os.Stdout
|
||||||
|
cmd.Stderr = os.Stderr
|
||||||
|
cmd.Stdin = os.Stdin
|
||||||
|
|
||||||
|
err := cmd.Run()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Error: could not sign package (%s) at: %s", k, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Print out generated packages
|
// Print out generated packages
|
||||||
for k, v := range outputPkgs {
|
for k, v := range outputPkgs {
|
||||||
fmt.Printf("Package (%s) was successfully compiled! Binary package generated at: %s\n", k, v)
|
fmt.Printf("Package (%s) was successfully compiled! Binary package generated at: %s\n", k, v)
|
||||||
|
|||||||
Reference in New Issue
Block a user