Categorygithub.com/hidori/go-genprop
modulepackage
0.0.16
Repository: https://github.com/hidori/go-genprop.git
Documentation: pkg.go.dev

# README

Go: genprop

Generates getter/setter functions for private fields.

INSTALL

CLI

go install github.com/hidori/go-genprop/cmd/genprop@latest

Docker

docker pull hidori/genprop:latest

USAGE

usage: genprop [OPTION]... <FILE>

option(s):
  -version
        show version information
  -initialism string
        specify names to which initialism should be applied (default "id,url,api")
  -validation-func string
        specify validation func name (default "validateFieldValue")
  -validation-tag string
        specify validation tag name (default "validate")

EXAMPLE

INPUT

example.go

package example

import (
 "github.com/go-playground/validator/v10"
 "github.com/pkg/errors"
)

type Struct struct {
 value1 int `property:"get"`
 value2 int `property:"set"`
 value3 int `property:"get,set"`
 value4 int `property:"set=private"`
 value5 int `property:"get,set" validate:"min=1,max=100"`
 value6 int `property:"get,set=private" validate:"min=1,max=100"`
}

var _validator = validator.New()

func validateFieldValue(name string, v any, tag string) error {
 if err := _validator.Var(v, tag); err != nil {
  return errors.Wrapf(errors.WithStack(err), "fail to validator.Var() name='%s'", name)
 }

 return nil
}

func NewStruct(v1 int, v2 int, v3 int, v4 int, v5 int, v6 int) (*Struct, error) {
 v := &Struct{
  value1: v1, // has no setter
 }

 v.SetValue2(v2)
 v.SetValue3(v3)
 v.setValue4(v4)

 err := v.SetValue5(v5)
 if err != nil {
  return nil, errors.WithStack(err)
 }

 err = v.setValue6(v6)
 if err != nil {
  return nil, errors.WithStack(err)
 }

 return v, nil
}

RUN

genprop example.go > example.prop.go

or

docker run --rm -w $PWD -v $PWD:$PWD hidori/genprop:latest example.go > example.prop.go

OUTPUT

example.prop.go

// Code generated by github.com/hidori/go-genprop/cmd/genprop DO NOT EDIT.
package example

func (t *Struct) GetValue1() int {
 return t.value1
}
func (t *Struct) SetValue2(v int) {
 t.value2 = v
}
func (t *Struct) GetValue3() int {
 return t.value3
}
func (t *Struct) SetValue3(v int) {
 t.value3 = v
}
func (t *Struct) setValue4(v int) {
 t.value4 = v
}
func (t *Struct) GetValue5() int {
 return t.value5
}
func (t *Struct) SetValue5(v int) error {
 err := validateFieldValue(v, "min=1,max=100")
 if err != nil {
  return err
 }
 t.value5 = v
 return nil
}
func (t *Struct) GetValue6() int {
 return t.value6
}
func (t *Struct) setValue6(v int) error {
 err := validateFieldValue(v, "min=1,max=100")
 if err != nil {
  return err
 }
 t.value6 = v
 return nil
}

# Packages

No description provided by the author
Code generated by github.com/hidori/go-genprop/cmd/genprop DO NOT EDIT.
No description provided by the author

# Functions

No description provided by the author