      :project-dir project-dir}))
 
 (defn has-job?
+  "Check if the `core` has a job named `job-name`."
   [core job-name]
   (contains? (:jobs core) (name job-name)))
 
 (defn start-job!
+  "Start the job named `job-name`."
   [core job-name]
+  {:pre [(has-job? core job-name)]}
   (if-let [jd (get-in core [:jobs (name job-name)])]
     (as-> core $
           (:project-dir $)

             [job-execution-context :as ex-ctx]]))

(defn load-core
  [project-dir config-file]
  (let [js (as-> (str project-dir "/" config-file) $
                 (config/load-config (the-ns 'fhofherr.simple.core.dsl) $)

(ns fhofherr.simple.core
  "Simple CI's application core."
  (:require [fhofherr.simple.core.dsl] ; Required to pass it to load-config
            [fhofherr.simple.core [config :as config]
             [job-fn :as job-fn]
