code: func (s *Action) MountAdd(ctx context.Context, c *cli.Context) error {
  	alias := c.Args().Get(0)
  	localPath := c.Args().Get(1)
  	if alias == "" {
  		return ExitError(ctx, ExitUsage, nil, "usage: %s mounts add <alias> [local path]", s.Name)
  	}
  
  	if localPath == "" {
  		localPath = config.PwStoreDir(alias)
  	}
  
  	keys := make([]string, 0, 1)
  	if k := c.String("init"); k != "" {
  		keys = append(keys, k)
  	}
  
  	if s.Store.Exists(ctx, alias) {
  		out.Yellow(ctx, "WARNING: shadowing %s entry", alias)
  	}
  
  	if err := s.Store.AddMount(ctx, alias, localPath, keys...); err != nil {
  		switch e := errors.Cause(err).(type) {
  		case root.AlreadyMountedError:
  			out.Print(ctx, "Store is already mounted")
  			return nil
  		case root.NotInitializedError:
  			out.Print(ctx, "Mount %s is not yet initialized. Initializing ...", e.Alias())
  			if err := s.init(ctx, e.Alias(), e.Path()); err != nil {
  				return ExitError(ctx, ExitUnknown, err, "failed to add mount '%s': failed to initialize store: %s", e.Alias(), err)
  			}
  		default:
  			return ExitError(ctx, ExitMount, err, "failed to add mount '%s' to '%s': %s", alias, localPath, err)
  		}
  	}
  
  	if err := s.cfg.Save(); err != nil {
  		return ExitError(ctx, ExitConfig, err, "failed to save config: %s", err)
  	}
  
  	out.Green(ctx, "Mounted %s as %s", alias, localPath)
  	return nil
  }
docs: // MountAdd adds a new mount