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)

54
main.go
View File

@ -7,19 +7,22 @@ import (
"os/exec"
"regexp"
"strconv"
"github.com/axllent/gitrel"
)
var (
quality int
maxWidth int
maxHeight int
outputDir string
preserveModificationTimes bool
jpegoptim string
jpegtran string
optipng string
pngquant string
gifsicle string
quality int
maxWidth int
maxHeight int
outputDir string
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
}