Add updater

This commit is contained in:
Ralph Slooten 2019-08-03 10:23:31 +12:00
parent bce966fb7b
commit ed1a7b3b39
2 changed files with 41 additions and 17 deletions

View File

@ -170,7 +170,7 @@ func Goptimize(file string) {
return
}
if preserveModificationTimes {
if preserveModTimes {
// transfer original modification times
if err := os.Chtimes(dstFile, atime, mtime); err != nil {
fmt.Printf("Error setting file timestamp: %v\n", err)
@ -199,7 +199,7 @@ func Goptimize(file string) {
return
}
if preserveModificationTimes {
if preserveModTimes {
// transfer original modification times
if err := os.Chtimes(dstFile, atime, mtime); err != nil {
fmt.Printf("Error setting file timestamp: %v\n", err)

36
main.go
View File

@ -7,6 +7,8 @@ import (
"os/exec"
"regexp"
"strconv"
"github.com/axllent/gitrel"
)
var (
@ -14,12 +16,13 @@ var (
maxWidth int
maxHeight int
outputDir string
preserveModificationTimes bool
preserveModTimes bool
jpegoptim string
jpegtran string
optipng string
pngquant string
gifsicle string
version = "dev"
)
func main() {
@ -44,11 +47,14 @@ func main() {
}
var maxSizes string
var update, showversion bool
flag.IntVar(&quality, "q", 75, "quality - JPEG only")
flag.StringVar(&outputDir, "o", "", "output directory (default overwrites original)")
flag.BoolVar(&preserveModificationTimes, "p", true, "preserve file modification times")
flag.BoolVar(&preserveModTimes, "p", true, "preserve file modification times")
flag.StringVar(&maxSizes, "m", "", "downscale to a maximum width & height in pixels (<width>x<height>)")
flag.BoolVar(&update, "u", false, "update to latest release")
flag.BoolVar(&showversion, "v", false, "show version number")
// third-party optimizers
flag.StringVar(&gifsicle, "gifsicle", "gifsicle", "gifsicle binary")
@ -67,9 +73,28 @@ func main() {
optipng, _ = exec.LookPath(optipng)
pngquant, _ = exec.LookPath(pngquant)
if showversion {
fmt.Println(fmt.Sprintf("Version: %s", version))
latest, _, _, err := gitrel.Latest("axllent/goptimize", "goptimize")
if err == nil && latest != version {
fmt.Printf("Update available: %s\nRun `%s -u` to update.\n", latest, os.Args[0])
}
return
}
if update {
rel, err := gitrel.Update("axllent/goptimize", "goptimize", version)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Printf("Updated %s to version %s", os.Args[0], rel)
return
}
if len(flag.Args()) < 1 {
flag.Usage()
return
os.Exit(1)
}
if maxSizes != "" {
@ -79,7 +104,7 @@ func main() {
if len(matches) != 4 {
flag.Usage()
return
os.Exit(1)
}
maxWidth, _ = strconv.Atoi(matches[1])
@ -95,7 +120,7 @@ func main() {
err := os.MkdirAll(outputDir, os.ModePerm)
if err != nil {
fmt.Printf("Cannot create output directory: %s\n", outputDir)
return
os.Exit(1)
}
}
}
@ -109,7 +134,6 @@ func main() {
func displayDelectedOptimizer(name, bin string) error {
exe, err := exec.LookPath(bin)
if err != nil {
// fmt.Printf(" - %s: [undetected]\n", name)
return err
}