code: func (p *Provider) Provide(configurationChan chan<- config.Message, pool *safe.Pool) error {
  	configuration, err := p.BuildConfiguration()
  
  	if err != nil {
  		return err
  	}
  
  	if p.Watch {
  		var watchItem string
  
  		switch {
  		case len(p.Directory) > 0:
  			watchItem = p.Directory
  		case len(p.Filename) > 0:
  			watchItem = filepath.Dir(p.Filename)
  		default:
  			watchItem = filepath.Dir(p.TraefikFile)
  		}
  
  		if err := p.addWatcher(pool, watchItem, configurationChan, p.watcherCallback); err != nil {
  			return err
  		}
  	}
  
  	sendConfigToChannel(configurationChan, configuration)
  	return nil
  }
docs: // Provide allows the file provider to provide configurations to traefik
  // using the given configuration channel.