Select Git revision
file.go 1.01 KiB
package batch
import (
"fmt"
"os"
"os/exec"
"strings"
)
func touch(name string) error {
f, err := os.OpenFile(name, os.O_RDONLY|os.O_CREATE, 0666)
if err != nil {
return err
}
f.Close()
return nil
}
func installCrontab(crontab string) error {
// Make a temp file.
f, err := os.CreateTemp("", "crontab")
if err != nil {
return err
}
defer func() {
f.Close()
os.Remove(f.Name())
}()
// Put the crontab in the temp file.
n, err := f.WriteString(crontab)
if err != nil {
return err
}
if n != len(crontab) {
return fmt.Errorf("Failed to write crontab fully %d of %d chars written",
n, len(crontab))
}
// Have the crontab command read in the file.
cmd := exec.Command("crontab", f.Name())
cmd.Stdin = strings.NewReader("")
var stdout strings.Builder
cmd.Stdout = &stdout
var stderr strings.Builder
cmd.Stderr = &stdout
err = cmd.Run()
if err != nil {
fmt.Printf("ERROR: stdout: [%s]\n", stdout.String())
fmt.Printf("ERROR: stderr: [%s]\n", stderr.String())
return err
}
return nil
}