|
@@ -0,0 +1,147 @@
|
|
|
+package autostruct
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "os"
|
|
|
+)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+type AutoStruct struct {
|
|
|
+ StructName string
|
|
|
+ PackageName string
|
|
|
+ FileName string
|
|
|
+ File *os.File
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) Init(fname, packname, structname string) error {
|
|
|
+ a.StructName = structname
|
|
|
+ a.FileName = fname
|
|
|
+ a.PackageName = packname
|
|
|
+ if !FileExists(a.FileName + ".go") {
|
|
|
+ var err error
|
|
|
+ a.File, err = os.Create(a.FileName + ".go")
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return fmt.Errorf("file already exists, update mode is not yet implemented")
|
|
|
+ }
|
|
|
+ return nil
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) PlacePackageName() {
|
|
|
+ a.File.Write([]byte("package " + a.PackageName + "\n"))
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) StartImports() {
|
|
|
+ a.File.Write([]byte("import (\n"))
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) AddImport(importname string) {
|
|
|
+ a.File.Write([]byte("\t\"" + importname + "\"\n"))
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) AddAliasImport(importalias, importname string) {
|
|
|
+ a.File.Write([]byte("\t" + importalias + " \"" + importname + "\"\n"))
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) EndImports() {
|
|
|
+ a.File.Write([]byte(")\n"))
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) StartStruct(structname string) {
|
|
|
+ a.File.Write([]byte("type " + a.StructName + structname + " struct {\n"))
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) AddField(fieldname, fieldtype string) {
|
|
|
+ a.File.Write([]byte("\t" + fieldname + " " + fieldtype + "\n"))
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) AddCommentField(fieldname, fieldtype, comment string) {
|
|
|
+ a.File.Write([]byte("\t" + fieldname + " " + fieldtype + " // " + comment + "\n"))
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) AddJsonField(fieldname, fieldtype, jsonname string) {
|
|
|
+ a.File.Write([]byte("\t" + fieldname + " " + fieldtype + " `json:\"" + jsonname + "\"`\n"))
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) AddJsonCommentField(fieldname, fieldtype, jsonname, comment string) {
|
|
|
+ a.File.Write([]byte("\t" + fieldname + " " + fieldtype + " `json:\"" + jsonname + "\"` // " + comment + "\n"))
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) EndStruct() {
|
|
|
+ a.File.Write([]byte("}\n"))
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) Newline() {
|
|
|
+ a.File.Write([]byte("\n"))
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) Comment(comment string) {
|
|
|
+ a.File.Write([]byte("// " + comment + "\n"))
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func (a *AutoStruct) Close() {
|
|
|
+ a.File.Close()
|
|
|
+}
|