mirror of
https://github.com/vbatts/tar-split.git
synced 2024-12-18 11:36:30 +00:00
magefile: attempting to recreate make
file dependencies
this is sloppy/clunky :-\ Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
This commit is contained in:
parent
724d595c03
commit
f966b14096
1 changed files with 42 additions and 1 deletions
43
magefile.go
43
magefile.go
|
@ -4,9 +4,11 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/magefile/mage/mg" // mg contains helpful utility functions, like Deps
|
"github.com/magefile/mage/mg" // mg contains helpful utility functions, like Deps
|
||||||
)
|
)
|
||||||
|
@ -20,6 +22,8 @@ var (
|
||||||
Stderr = ourStderr
|
Stderr = ourStderr
|
||||||
|
|
||||||
golangcilintVersion = "v1.51.2"
|
golangcilintVersion = "v1.51.2"
|
||||||
|
|
||||||
|
cleanFiles = []string{}
|
||||||
)
|
)
|
||||||
|
|
||||||
// Run all-the-things
|
// Run all-the-things
|
||||||
|
@ -76,14 +80,38 @@ func Install() error {
|
||||||
return os.Rename(app, "/usr/local/bin/"+app)
|
return os.Rename(app, "/usr/local/bin/"+app)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
cleanFiles = append(cleanFiles, ".install.deps") // sloppy
|
||||||
|
}
|
||||||
|
|
||||||
// Manage your deps, or running package managers.
|
// Manage your deps, or running package managers.
|
||||||
func InstallDeps() error {
|
func InstallDeps() error {
|
||||||
|
const fpath = ".install.deps"
|
||||||
|
success := false
|
||||||
|
defer func() {
|
||||||
|
if success {
|
||||||
|
fd, err := os.Create(fpath)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintln(os.Stderr, err)
|
||||||
|
}
|
||||||
|
fd.Close()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
if IsFresh(fpath, time.Now()) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
mg.Deps(Tidy)
|
mg.Deps(Tidy)
|
||||||
fmt.Println("Installing Deps...")
|
fmt.Println("Installing Deps...")
|
||||||
cmd := exec.Command("go", "get", "./...")
|
cmd := exec.Command("go", "get", "./...")
|
||||||
cmd.Stdout = Stdout
|
cmd.Stdout = Stdout
|
||||||
cmd.Stderr = Stderr
|
cmd.Stderr = Stderr
|
||||||
return cmd.Run()
|
err := cmd.Run()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
success = true
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tools used during build/dev/test
|
// Tools used during build/dev/test
|
||||||
|
@ -113,4 +141,17 @@ func Tidy() error {
|
||||||
func Clean() {
|
func Clean() {
|
||||||
fmt.Println("Cleaning...")
|
fmt.Println("Cleaning...")
|
||||||
os.RemoveAll(app)
|
os.RemoveAll(app)
|
||||||
|
for _, fpath := range cleanFiles {
|
||||||
|
os.RemoveAll(fpath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsFresh checks if `fpath` exists (therefore `false`, it is not fresh) or if
|
||||||
|
// `fpath` is _newer_ than `t` (true, as in it's freshly built)
|
||||||
|
func IsFresh(fpath string, t time.Time) bool {
|
||||||
|
fi, err := os.Stat(fpath)
|
||||||
|
if err != nil && errors.Is(err, os.ErrNotExist) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return fi.ModTime().Before(t)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue