cmd

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 5, 2024 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Copyright © 2024 Joey <golang2024@163.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Copyright © 2024 Joey <golang2024@163.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Copyright © 2024 Joey <golang2024@163.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Copyright © 2024 Joey <golang2024@163.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Copyright © 2024 Joey <golang2024@163.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Copyright © 2024 Joey <golang2024@163.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Copyright © 2024 Joey <golang2024@163.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Copyright © 2024 Joey <golang2024@163.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Index

Constants

This section is empty.

Variables

View Source
var (
	//go:embed env.yaml
	ConfigFile embed.FS
	//go:embed stub
	StubData embed.FS
)
View Source
var (
	OptMap = []Opts{
		{
			Name: "Index",
			Desc: "Get page list",
		},
		{
			Name: "Show",
			Desc: "Get info",
		},
		{
			Name: "Create",
			Desc: "Save one source",
		},
		{
			Name: "Update",
			Desc: "Modifying a resource",
		},
		{
			Name: "Destroy",
			Desc: "Delete a resource",
		},
	}
)
View Source
var RootCmd = &cobra.Command{
	Use:   "ginctl",
	Short: "Code generation cli based on gin.",
	Long: `ginctl is a rapid generation of golang application scaffolding based on gin,supporting one click generation of HTTP, GRPC, Websocket applications,and can also be used to construct microservice applications. 
It integrates numerous open source packages internally,and also provides some modular microservice governance packages. 
Use it to quickly generate your application!`,

	PersistentPreRun: func(cmd *cobra.Command, args []string) {

		pwd, err := os.Getwd()
		if err != nil {
			console.Error(err.Error())
			return
		}
		base.Pwd = pwd

		base.Mod = helper.GetModule(base.Pwd, "module")

		if !helper.Contains(base.BlackCmd, cmd.Name()) {
			err = base.Check(cmd)
			if err != nil {
				console.Error(err.Error())
				os.Exit(1)
			}
		}
	},
}

RootCmd represents the base command when called without any subcommands

View Source
var StubMap = map[StubCode]string{
	FromStubBasic:     "stub/api/basic_logic.stub",
	FromStubImport:    "stub/api/logic_import.stub",
	FromStubLogicFunc: "stub/api/logic_func.stub",
	FromStubTypes:     "stub/api/types.stub",
	FromStubTypeFunc:  "stub/api/type_func.stub",
	ToLogic:           "stub/api/logic.stub",
}

Functions

func CreateByStub

func CreateByStub[T Stub](filePath, stub string, stubStruct T) (err error)

func DoGenOperation

func DoGenOperation(filePath, opt, desc string, code StubCode, errs chan error)

func Execute

func Execute()

Execute adds all child commands to the root command and sets flags appropriately. This is called by main.main(). It only needs to happen once to the rootCmd.

func ExecuteContent

func ExecuteContent(filePath string, opt *Operation) (err error)

func GenApi

func GenApi(_ *cobra.Command, _ []string) (err error)

func GenApply

func GenApply(_ *cobra.Command, _ []string) (err error)

func GenEtc

func GenEtc(_ *cobra.Command, _ []string) (err error)

func GenLogic

func GenLogic(filePath string, from, to StubCode, body *Body) (err error)

GenLogic generate apply logic.

func GenMiddleware

func GenMiddleware(c *cobra.Command, _ []string) (err error)

func GenModelStruct

func GenModelStruct(c *cobra.Command, _ []string) (err error)

func GenRoute

func GenRoute(cmd *cobra.Command, _ []string) (err error)

func GenerateStruct

func GenerateStruct(tableName string, columns []*Column) string

func MakeBasic

func MakeBasic() (err error)

func MakeEtc

func MakeEtc() (err error)

func MakeHttpApp

func MakeHttpApp() (err error)

func MakeHttpMain

func MakeHttpMain() (err error)

func MakeRoute

func MakeRoute(filePath string) (err error)

Types

type ApiLogic

type ApiLogic struct {
	Content string
}

type Body

type Body struct {
	LowerModel string
	Apply      string
	Mod        string
}

type Column

type Column struct {
	Name                   string `gorm:"column:COLUMN_NAME"`
	Type                   string `gorm:"column:COLUMN_TYPE"`
	IsNullAble             string `gorm:"column:IS_NULLABLE"`
	CharacterMaximumLength *int   `gorm:"column:CHARACTER_MAXIMUM_LENGTH"`
	Extra                  string `gorm:"column:EXTRA"`
	Comment                string `gorm:"column:COLUMN_COMMENT"`
}

func GetColumn

func GetColumn(tableName string) (columns []*Column, err error)

type Files

type Files struct {
	Code StubCode
	Name string
}

type Operation

type Operation struct {
	Opt         string
	Description string
}

type Opts

type Opts struct {
	Name string
	Desc string
}

type Stub

type Stub interface {
	base.AppBase | base.Apply
}

type StubCode

type StubCode uint
const (
	FromStubBasic StubCode = iota
	FromStubImport
	FromStubLogicFunc
	FromStubTypes
	FromStubTypeFunc
	ToLogic
)

type Table

type Table struct {
	TableName string `gorm:"column:TABLE_NAME"`
	CamelCase string `gorm:"-"`
	Struct    string `gorm:"-"`
	Import    string `gorm:"-"`
	Index     string `gorm:"-"`
}

func GetTables

func GetTables(args string) (tables []*Table, err error)

type Template

type Template struct {
	Route string
}

type Ware

type Ware struct {
	Middleware string
	Pkg        string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL