Skip to content

Commit 0ee80c9

Browse files
committed
improved sketch init
1 parent 9bbd3ce commit 0ee80c9

File tree

4 files changed

+73
-5
lines changed

4 files changed

+73
-5
lines changed

cmd/sketchy/main.go

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"errors"
55
"flag"
66
"fmt"
7+
"io"
78
"io/fs"
89
"log"
910
"os"
@@ -29,9 +30,76 @@ func main() {
2930
if _, err := os.Stat(dirPath); errors.Is(err, fs.ErrExist) {
3031
log.Fatal("can't make directory: ", err)
3132
}
32-
err := os.Mkdir(dirPath, 0644)
33+
err := os.Mkdir(dirPath, 0700)
3334
if err != nil {
3435
log.Fatal("error while creating directory: ", err)
3536
}
37+
err = copyTemplate(dirPath)
38+
if err != nil {
39+
log.Fatal("error while copying template files: ", err)
40+
}
41+
}
42+
}
43+
44+
func copyTemplate(targetDir string) error {
45+
cwd, err := os.Getwd()
46+
if err != nil {
47+
log.Fatal("error while getting working directory: ", err)
48+
}
49+
configFname := path.Join(cwd, "template", "sketch.json")
50+
appFname := path.Join(cwd, "template", "main.go")
51+
exists, err := regularFileExists(configFname)
52+
if err != nil {
53+
return fmt.Errorf("error while checking for config file: %v", err)
54+
}
55+
if !exists {
56+
return fmt.Errorf("config file %s doesn't exist", configFname)
57+
}
58+
exists, err = regularFileExists(appFname)
59+
if err != nil {
60+
return fmt.Errorf("error while checking for config file: %v", err)
61+
}
62+
if !exists {
63+
return fmt.Errorf("app file %s doesn't exist", appFname)
64+
}
65+
err = copyFile(configFname, path.Join(targetDir, "sketch.json"))
66+
if err != nil {
67+
return fmt.Errorf("error while copying config file: %v", err)
68+
}
69+
err = copyFile(appFname, path.Join(targetDir, "main.go"))
70+
if err != nil {
71+
return fmt.Errorf("error while copying app file: %v", err)
72+
}
73+
return nil
74+
}
75+
76+
func regularFileExists(fname string) (bool, error) {
77+
stat, err := os.Stat(fname)
78+
if err == nil {
79+
return stat.Mode().IsRegular(), nil
80+
} else {
81+
if errors.Is(err, fs.ErrNotExist) {
82+
return false, nil
83+
}
84+
}
85+
return false, err
86+
}
87+
88+
func copyFile(src string, dst string) error {
89+
srcFd, err := os.Open(src)
90+
if err != nil {
91+
return err
92+
}
93+
defer srcFd.Close()
94+
dstFd, err := os.Create(dst)
95+
if err != nil {
96+
return err
97+
}
98+
defer dstFd.Close()
99+
_, err = io.Copy(dstFd, srcFd)
100+
if err != nil {
101+
return err
36102
}
103+
err = dstFd.Sync()
104+
return err
37105
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.17
44

55
require (
66
github.com/fogleman/gg v1.3.0
7-
github.com/hajimehoshi/ebiten/v2 v2.2.4
7+
github.com/hajimehoshi/ebiten/v2 v2.2.5
88
github.com/lucasb-eyer/go-colorful v1.2.0
99
github.com/ojrac/opensimplex-go v1.0.2
1010
)

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20210727001814-0db043d8d5be/go.mod h1:tQ2
66
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
77
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
88
github.com/hajimehoshi/bitmapfont/v2 v2.1.3/go.mod h1:2BnYrkTQGThpr/CY6LorYtt/zEPNzvE/ND69CRTaHMs=
9-
github.com/hajimehoshi/ebiten/v2 v2.2.4 h1:/+qrmbv+W6scgVWwQJ7IyiI2z4y8QM2n0JDHStNC+Ns=
10-
github.com/hajimehoshi/ebiten/v2 v2.2.4/go.mod h1:olKl/qqhMBBAm2oI7Zy292nCtE+nitlmYKNF3UpbFn0=
9+
github.com/hajimehoshi/ebiten/v2 v2.2.5 h1:i6NdS6pEi5kgfTh+4XAVCVtCXxjTyxzU1cj1oqHWkZQ=
10+
github.com/hajimehoshi/ebiten/v2 v2.2.5/go.mod h1:olKl/qqhMBBAm2oI7Zy292nCtE+nitlmYKNF3UpbFn0=
1111
github.com/hajimehoshi/file2byteslice v0.0.0-20210813153925-5340248a8f41/go.mod h1:CqqAHp7Dk/AqQiwuhV1yT2334qbA/tFWQW0MD2dGqUE=
1212
github.com/hajimehoshi/go-mp3 v0.3.2/go.mod h1:qMJj/CSDxx6CGHiZeCgbiq2DSUkbK0UbtXShQcnfyMM=
1313
github.com/hajimehoshi/oto v0.6.1/go.mod h1:0QXGEkbuJRohbJaxr7ZQSxnju7hEhseiPx2hrh6raOI=

template/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func main() {
2222
var prefix string
2323
var randomSeed int64
2424
flag.StringVar(&configFile, "c", "sketch.json", "Sketch config file")
25-
flag.StringVar(&configFile, "p", "sketch", "Output file prefix")
25+
flag.StringVar(&prefix, "p", "sketch", "Output file prefix")
2626
flag.Int64Var(&randomSeed, "s", 0, "Random number generator seed")
2727
s, err := sketchy.NewSketchFromFile(configFile)
2828
if err != nil {

0 commit comments

Comments
 (0)