code: func (s *ProtoService) Open(ctx context.Context) error {
  	if _, err := os.Stat(s.Dir); os.IsNotExist(err) {
  		if err := os.Mkdir(s.Dir, 0600); err != nil {
  			return err
  		}
  	}
  
  	files, err := ioutil.ReadDir(s.Dir)
  	if err != nil {
  		return err
  	}
  
  	protos := []*platform.Proto{}
  	for _, file := range files {
  		filename := file.Name()
  		if path.Ext(filename) != protoFileExt {
  			s.Logger.Info("file extention did not match proto file extension", zap.String("file", filename))
  			continue
  		}
  
  		octets, err := ioutil.ReadFile(filepath.Join(s.Dir, filename))
  		if err != nil {
  			s.Logger.Info("error openeing file", zap.String("file", filename), zap.Error(err))
  			continue
  		}
  
  		proto := &platform.Proto{}
  		if err := json.Unmarshal(octets, proto); err != nil {
  			s.Logger.Info("error unmarshalling file into proto", zap.String("file", filename), zap.Error(err))
  			continue
  		}
  
  		// TODO(desa): ensure that the proto provided is a valid proto (e.g. that all viewID exists for all cells in a dashboard).
  
  		protos = append(protos, proto)
  	}
  
  	s.protos = protos
  
  	return nil
  }
docs: // Open loads the protos from the file system and sets them on the service.