code: func (Pipe) Run(ctx *context.Context) error {
  	sv, err := semver.NewVersion(ctx.Git.CurrentTag)
  	if err != nil {
  		if ctx.Snapshot {
  			return pipe.ErrSnapshotEnabled
  		}
  		if ctx.SkipValidate {
  			log.WithError(err).
  				WithField("tag", ctx.Git.CurrentTag).
  				Warn("current tag is not a semantic tag")
  			return pipe.ErrSkipValidateEnabled
  		}
  		return errors.Wrapf(err, "failed to parse tag %s as semver", ctx.Git.CurrentTag)
  	}
  	ctx.Semver = context.Semver{
  		Major:      sv.Major(),
  		Minor:      sv.Minor(),
  		Patch:      sv.Patch(),
  		Prerelease: sv.Prerelease(),
  	}
  	return nil
  }
docs: // Run executes the hooks