code: func resolveDirPlaceholder(p *helpers.PathSpec, placeholder string) (cacheDir string, isResource bool, err error) {
  	switch strings.ToLower(placeholder) {
  	case ":resourcedir":
  		return "", true, nil
  	case ":cachedir":
  		d, err := helpers.GetCacheDir(p.Fs.Source, p.Cfg)
  		return d, false, err
  	case ":project":
  		return filepath.Base(p.WorkingDir), false, nil
  	}
  
  	return "", false, errors.Errorf("%q is not a valid placeholder (valid values are :cacheDir or :resourceDir)", placeholder)
  }
docs: // Resolves :resourceDir => /myproject/resources etc., :cacheDir => ...