code: func makeClosureHandler(root, handlerName string) (http.Handler, error) {
  	// devcam server environment variable takes precedence:
  	if d := os.Getenv("CAMLI_DEV_CLOSURE_DIR"); d != "" {
  		log.Printf("%v: serving Closure from devcam server's $CAMLI_DEV_CLOSURE_DIR: %v", handlerName, d)
  		return http.FileServer(http.Dir(d)), nil
  	}
  	if root == "" {
  		fs, err := closurestatic.FileSystem()
  		if err == os.ErrNotExist {
  			log.Printf("%v: no configured setting or embedded resources; serving Closure via %v", handlerName, closureBaseURL)
  			return closureBaseURL, nil
  		}
  		if err != nil {
  			return nil, fmt.Errorf("error loading embedded Closure zip file: %v", err)
  		}
  		log.Printf("%v: serving Closure from embedded resources", handlerName)
  		return http.FileServer(fs), nil
  	}
  	if strings.HasPrefix(root, "http") {
  		log.Printf("%v: serving Closure using redirects to %v", handlerName, root)
  		return closureRedirector(root), nil
  	}
  
  	path := filepath.Join(vendorEmbed, "closure", "lib", "closure")
  	return makeFileServer(root, path, filepath.Join("goog", "base.js"))
  }
docs: // makeClosureHandler returns a handler to serve Closure files.
  // root is either:
  // 1) empty: use the Closure files compiled in to the binary (if
  //    available), else redirect to the Internet.
  // 2) a URL prefix: base of Perkeep to get Closure to redirect to
  // 3) a path on disk to the root of camlistore's source (which
  //    contains the necessary subset of Closure files)