Browse code

Engine: Engine.Job() never fails, to mimic the os/exec API (and make usage less verbose)

Solomon Hykes authored on 2013/10/27 09:49:16
Showing 3 changed files
... ...
@@ -71,10 +71,7 @@ func main() {
71 71
 		if err != nil {
72 72
 			log.Fatal(err)
73 73
 		}
74
-		job, err := eng.Job("serveapi")
75
-		if err != nil {
76
-			log.Fatal(err)
77
-		}
74
+		job := eng.Job("serveapi")
78 75
 		job.Setenv("Pidfile", *pidfile)
79 76
 		job.Setenv("Root", *flRoot)
80 77
 		job.SetenvBool("AutoRestart", *flAutoRestart)
... ...
@@ -64,11 +64,7 @@ func New(root string) (*Engine, error) {
64 64
 
65 65
 // Job creates a new job which can later be executed.
66 66
 // This function mimics `Command` from the standard os/exec package.
67
-func (eng *Engine) Job(name string, args ...string) (*Job, error) {
68
-	handler, exists := eng.handlers[name]
69
-	if !exists || handler == nil {
70
-		return nil, fmt.Errorf("Undefined command; %s", name)
71
-	}
67
+func (eng *Engine) Job(name string, args ...string) *Job {
72 68
 	job := &Job{
73 69
 		eng:		eng,
74 70
 		Name:		name,
... ...
@@ -76,8 +72,11 @@ func (eng *Engine) Job(name string, args ...string) (*Job, error) {
76 76
 		Stdin:		os.Stdin,
77 77
 		Stdout:		os.Stdout,
78 78
 		Stderr:		os.Stderr,
79
-		handler:	handler,
80 79
 	}
81
-	return job, nil
80
+	handler, exists := eng.handlers[name]
81
+	if exists {
82
+		job.handler = handler
83
+	}
84
+	return job
82 85
 }
83 86
 
... ...
@@ -38,9 +38,5 @@ func mkEngine(t *testing.T) *Engine {
38 38
 }
39 39
 
40 40
 func mkJob(t *testing.T, name string, args ...string) *Job {
41
-	job, err := mkEngine(t).Job(name, args...)
42
-	if err != nil {
43
-		t.Fatal(err)
44
-	}
45
-	return job
41
+	return mkEngine(t).Job(name, args...)
46 42
 }