Merge branch 'tridentlead-master'

This commit is contained in:
Alexei Yatskov 2017-01-05 10:41:59 -08:00
commit 4c98383b21
2 changed files with 27 additions and 11 deletions

View File

@ -223,11 +223,12 @@ shown below:
Homemaker will process the dependency tasks before processing the task itself.
In addition to creating links, Homemaker is capable of executing commands on a per-task basis. Commands should be
defined in an array called `cmds`, split into an item per each command line argument. All of the commands are executed
with `dest` as the working directory (as mentioned previously, this defaults to your home directory). If any command
returns a nonzero exit code, Homemaker will display an error message and prompt the user to determine if it should
*abort*, *retry*, or *cancel*.
In addition to creating links, Homemaker is capable of executing commands on a per-task basis. Homemaker can commands both
before and after linking your configuration. Commands should be placed in either an array, under the field `precmds` or
`postcmds` (for commands to be run before and after linking respectively). These commands should be split into an array of
strings, with each entry corresponding to one command line argument. All of the commands are executed with `dest` as
the working directory (as mentioned previously, this defaults to your home directory). If any command returns a nonzero
exit code, Homemaker will display an error message and prompt the user to determine if it should *abort*, *retry*, or *cancel*.
The example task below will clone and install configuration files for Vim into the `~/.config` directory, and create
links to it from the home directory. You may notice that this task references an environment variable (set by Homemaker

27
task.go
View File

@ -28,12 +28,14 @@ import (
)
type task struct {
Deps []string
Links [][]string
Cmds [][]string
Envs [][]string
Accepts [][]string
Rejects [][]string
Deps []string
Links [][]string
CmdsPre [][]string
Cmds [][]string
CmdsPost [][]string
Envs [][]string
Accepts [][]string
Rejects [][]string
}
func (t *task) deps(conf *config) []string {
@ -62,6 +64,11 @@ func (t *task) process(conf *config) error {
}
if conf.flags&flagNoCmds == 0 {
for _, currCmd := range t.CmdsPre {
if err := processCmd(currCmd, true, conf); err != nil {
return err
}
}
for _, currCmd := range t.Cmds {
if err := processCmd(currCmd, true, conf); err != nil {
return err
@ -77,6 +84,14 @@ func (t *task) process(conf *config) error {
}
}
if conf.flags&flagNoCmds == 0 {
for _, currCmd := range t.CmdsPost {
if err := processCmd(currCmd, true, conf); err != nil {
return err
}
}
}
return nil
}