Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions abi/contracts_errors.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 0 additions & 3 deletions abi/extensions.go

This file was deleted.

4 changes: 2 additions & 2 deletions abi/get_methods.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions abi/interfaces.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions abi/jetton_msg_types.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions abi/messages_generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions abi/nfts_msg_types.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions abi/types.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 14 additions & 8 deletions abi/generator.go → cmd/codegen/abi/main.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
//go:build ignore

package main

import (
"flag"
"fmt"
"go/format"
"io/fs"
Expand All @@ -14,15 +13,15 @@ import (
"github.com/tonkeeper/tongo/abi/parser"
)

const HEADER = `package abi
// Code autogenerated. DO NOT EDIT.
const HEADER = `// Code generated - DO NOT EDIT.

package abi

import (
%v
)

`
const SCHEMAS_PATH = "schemas/"

func mergeMethods(methods []parser.GetMethod) ([]parser.GetMethod, error) {
methodsMap := map[string]parser.GetMethod{}
Expand Down Expand Up @@ -51,9 +50,13 @@ func mergeMethods(methods []parser.GetMethod) ([]parser.GetMethod, error) {
}

func main() {
schemasDir := flag.String("schemas", "abi/schemas", "directory containing XML TLB schemas")
outputDir := flag.String("output", "abi", "directory to write generated files")
flag.Parse()

var abi parser.ABI
var methods []parser.GetMethod
filepath.Walk(SCHEMAS_PATH, func(path string, info fs.FileInfo, err error) error {
filepath.Walk(*schemasDir, func(path string, info fs.FileInfo, err error) error {
if !strings.HasSuffix(info.Name(), ".xml") {
return nil
}
Expand Down Expand Up @@ -127,7 +130,7 @@ func main() {
{nfts, "nfts_msg_types.go", `"github.com/tonkeeper/tongo/boc"`, `"github.com/tonkeeper/tongo/tlb"`},
{contractErrors, "contracts_errors.go"},
} {
file, err := os.Create(f[1])
file, err := os.Create(filepath.Join(*outputDir, f[1]))
if err != nil {
panic(err)
}
Expand All @@ -145,8 +148,11 @@ func main() {
if err != nil {
panic(err)
}
fmt.Println(filepath.Join(*outputDir, f[1]))
}
if err := os.WriteFile("messages.md", []byte(messagesMD), 0644); err != nil {
mdPath := filepath.Join(*outputDir, "messages.md")
if err := os.WriteFile(mdPath, []byte(messagesMD), 0644); err != nil {
panic(err)
}
fmt.Println(mdPath)
}
14 changes: 10 additions & 4 deletions tlb/generator-config.go → cmd/codegen/config/main.go
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
//go:build ignore

package main

import (
"flag"
"fmt"
"os"
"path/filepath"

"github.com/tonkeeper/tongo/tlb/parser"
)

func main() {
content, err := os.ReadFile("config.tlb")
input := flag.String("input", "tlb/config.tlb", "path to config.tlb")
outputDir := flag.String("output", "tlb", "directory to write generated files")
flag.Parse()

content, err := os.ReadFile(*input)
if err != nil {
panic(err)
}
Expand All @@ -23,12 +28,13 @@ func main() {
panic(err)
}
file := parser.File{
Name: "config.go",
Name: filepath.Join(*outputDir, "config.go"),
Package: "tlb",
Imports: []string{"encoding/json", "fmt"},
Code: s,
}
if err := file.Save(); err != nil {
panic(err)
}
fmt.Println(file.Name)
}
50 changes: 50 additions & 0 deletions cmd/codegen/integers/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package main

import (
"flag"
"fmt"
"go/format"
"os"
"path/filepath"

"github.com/tonkeeper/tongo/tlb/parser"
)

var bitsSizes = []int{80, 96, 128, 256, 264, 320, 352, 512}
var intSizes = []int{128, 256, 257}
var uintSizes = []int{128, 160, 220, 256}

func main() {
outputDir := flag.String("output", "tlb", "directory to write generated files")
flag.Parse()

src := `// Code generated - DO NOT EDIT.

package tlb

import (
"bytes"
"encoding/hex"
"fmt"
"math/big"
"strconv"
"strings"

"github.com/tonkeeper/tongo/boc"
)
` + parser.GenerateVarUintTypes(32) +
parser.GenerateConstantInts(64) +
parser.GenerateConstantBigInts(intSizes) +
parser.GenerateConstantBigUints(uintSizes) +
parser.GenerateBitsTypes(bitsSizes)

formatted, err := format.Source([]byte(src))
if err != nil {
panic(err)
}
outPath := filepath.Join(*outputDir, "integers.go")
if err := os.WriteFile(outPath, formatted, 0644); err != nil {
panic(err)
}
fmt.Println(outPath)
}
37 changes: 19 additions & 18 deletions liteclient/generator.go → cmd/codegen/liteclient/main.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
//go:build ignore

package main

import (
"flag"
"fmt"
"github.com/tonkeeper/tongo/tl/parser"
"io/ioutil"
"go/format"
"os"
"path/filepath"

"github.com/tonkeeper/tongo/tl/parser"
)

func main() {
scheme, err := ioutil.ReadFile("lite_api.tl")
input := flag.String("input", "liteclient/lite_api.tl", "path to lite_api.tl")
outputDir := flag.String("output", "liteclient", "directory to write generated files")
flag.Parse()

scheme, err := os.ReadFile(*input)
if err != nil {
panic(err)
}
Expand All @@ -30,12 +35,9 @@ func main() {
panic(err)
}

f, err := os.Create("generated.go")
if err != nil {
panic(err)
}
_, err = fmt.Fprint(f, `package liteclient
// Code autogenerated. DO NOT EDIT.
src := `// Code generated - DO NOT EDIT.

package liteclient

import (
"bytes"
Expand All @@ -45,16 +47,15 @@ import (
"github.com/tonkeeper/tongo/tl"
"io"
)
`)
if err != nil {
panic(err)
}
_, err = f.WriteString(types)
` + types + functions

formatted, err := format.Source([]byte(src))
if err != nil {
panic(err)
}
_, err = f.WriteString(functions)
if err != nil {
outPath := filepath.Join(*outputDir, "generated.go")
if err := os.WriteFile(outPath, formatted, 0644); err != nil {
panic(err)
}
fmt.Println(outPath)
}
6 changes: 6 additions & 0 deletions generate.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package tongo

//ignore(broken) go:generate go run ../cmd/codegen/config
//go:generate go run ./cmd/codegen/abi -schemas abi/schemas -output abi
//go:generate go run ./cmd/codegen/integers -output tlb
//go:generate go run ./cmd/codegen/liteclient -input liteclient/lite_api.tl -output liteclient
2 changes: 1 addition & 1 deletion liteapi/models.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 0 additions & 2 deletions liteclient/extensions.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package liteclient

//go:generate go run generator.go

import (
"bytes"
"fmt"
Expand Down
4 changes: 2 additions & 2 deletions liteclient/generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions tl/parser/generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@ import (
"encoding/binary"
"encoding/hex"
"fmt"
"github.com/tonkeeper/tongo/utils"
"go/format"
"strings"
"text/template"

"github.com/tonkeeper/tongo/utils"
)

type DefaultType struct {
Expand Down Expand Up @@ -636,6 +637,5 @@ func (g *Generator) generateRequestDecoder() string {
panic(err)
return ""
}
fmt.Printf("%s", buf.String())
return buf.String()
}
4 changes: 2 additions & 2 deletions tlb/config.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading