       optimizations
     , {}
   baseurl: (config) -> argv.baseurl
-  all: (config) ->
-    _.reduce(templateCommands, ((templateObj, cmd, name) ->
-      return templateObj if name is "all"
-      templateObj[name] = templateCommands[name](config)
-      return templateObj
+  all: (config, which) ->
+    _.reduce(configCommands, ((configObj, cmd, name) ->
+      return configObj if name is "all"
+      if which == null or which[name]
+        configObj[name] = configCommands[name](config)
+      configObj
     ), {})
 
 buildProfile = () ->

      log "available tests:"
      listTests tests, argv.host, argv.port

  template:
    description: """
    output html snippets for things like the require.js path, can be any of:
    #{(" - " + cmd + "\n" for cmd of templateCommands).join("")}
    """.replace(/\n$/, "")
    action: (cmd, args...) ->
      console.log templateCommands[cmd](getConfig())

  build:
    description: """

      # this must be after the optimization step, since it checks for optimized
      # files and includes them in the config
      if argv.templatepath
        provide argv.templatepath

        templateObj = configCommands.all config,
          require: true
          extra: true
          config: true
          baseurl: true
        contextjsonname = join(argv.templatepath, argv.contextjsonname)
        log "writing template context to #{contextjsonname}"
        write contextjsonname, JSON.stringify(templateObj)

        stringBundleName = join(argv.templatepath, "strings.yaml")
        log "writing string bundle to #{stringBundleName}"
        write stringBundleName, JSON.stringify(allStringBundles(), null, "    ")

  completion:
    description: """
