Skip to content

Commit 0b31053

Browse files
committed
Cmd tool [tmp]
1 parent 6ee4074 commit 0b31053

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

typescriptify.go

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package main
2+
3+
import (
4+
"flag"
5+
"fmt"
6+
"io/ioutil"
7+
"os"
8+
"os/exec"
9+
"strings"
10+
"text/template"
11+
"time"
12+
)
13+
14+
const TEMPLATE = `package main
15+
16+
import (
17+
"fmt"
18+
19+
"github.com/tkrajina/typescriptify-golang-structs/typescriptify"
20+
)
21+
22+
func main() {
23+
t := typescriptify.New()
24+
{{ range .Structs }} t.Add({{ . }}{})
25+
{{ end }}
26+
result, err := t.ConvertTo(os.Stdout)
27+
if err != nil {
28+
panic(err.Error())
29+
}
30+
fmt.Println(string(result))
31+
}`
32+
33+
type Params struct {
34+
Structs []string
35+
}
36+
37+
func main() {
38+
var stringExtension string
39+
var structs string
40+
flag.StringVar(&structs, "structs", "", "List of (comma-delimited) structs to be typescriptified")
41+
flag.StringVar(&stringExtension, "extension", "", "")
42+
flag.Parse()
43+
44+
t := template.Must(template.New("").Parse(TEMPLATE))
45+
46+
filename, err := ioutil.TempDir(os.TempDir(), "")
47+
handleErr(err)
48+
49+
filename = fmt.Sprintf("%s/typescriptify_%d.go", filename, time.Now().Nanosecond())
50+
51+
f, err := os.Create(filename)
52+
handleErr(err)
53+
defer f.Close()
54+
55+
structsArr := make([]string, 0)
56+
for _, str := range strings.Split(structs, ",") {
57+
str = strings.TrimSpace(str)
58+
if len(str) > 0 {
59+
structsArr = append(structsArr, str)
60+
}
61+
}
62+
63+
params := Params{Structs: structsArr}
64+
err = t.Execute(f, params)
65+
handleErr(err)
66+
67+
cmd := exec.Command("go", "run", filename)
68+
fmt.Println(strings.Join(cmd.Args, " "))
69+
output, err := cmd.CombinedOutput()
70+
if err != nil {
71+
fmt.Println(string(output))
72+
handleErr(err)
73+
}
74+
fmt.Println(string(output))
75+
}
76+
77+
func handleErr(err error) {
78+
if err != nil {
79+
panic(err.Error())
80+
}
81+
}

0 commit comments

Comments
 (0)