Repository navigation
Expand file tree
/
Copy pathinit.go
More file actions
110 lines (79 loc) · 2.61 KB
/
Copy pathinit.go
File metadata and controls
110 lines (79 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package main
import (
"context"
"fmt"
"os"
"path/filepath"
"strings"
"github.com/Complexicon/paperkit/internal/papermc"
"github.com/Complexicon/paperkit/internal/project"
"github.com/Complexicon/paperkit/internal/seed"
"github.com/Complexicon/paperkit/internal/util"
"github.com/urfave/cli/v3"
)
func Init(ctx context.Context, cmd *cli.Command) error {
projDir := cmd.String("dir")
if cfg, _ := project.LoadFromDir(projDir); cfg != nil {
if !util.Confirm(fmt.Sprintf("<yellow>It looks like the Project</> <green>'%s'</> <yellow>is already Present! Do you want to reinitialize this project?</>", cfg.Name)) {
return util.ErrAbort
}
}
pluginName := util.Ask("<cyan>Name your Plugin</>")
if pluginName == "" {
return util.ErrAbort
}
util.Printf("<cyan>Plugin Name:</> <dark_gray>%s</>", pluginName)
groupID := util.Ask("<cyan>Whats your GroupID?</> <dark_gray>(usually domain but reversed, example: dev.cmplx)</>")
if groupID == "" {
return util.ErrAbort
}
util.Printf("<cyan>Artifact Name:</> <dark_gray>%s:%s</>", groupID, pluginName)
versions, err := papermc.MinecraftVersions()
if err != nil {
return err
}
versionChoice := util.ChooseFrom(versions, "Target Minecraft Version:")
if versionChoice == "" {
return util.ErrAbort
}
util.Printf("<cyan>Minecraft Version:</> <dark_gray>%s</>", versionChoice)
_, err = project.CreateNew(projDir, pluginName, versionChoice)
if err != nil {
return err
}
seedProject := true
if present, _ := os.Stat(filepath.Join(projDir, "src")); present != nil {
seedProject = false
if util.Confirm("<yellow>It looks like Source Code is already Present,</> <red>Do you want to remove it?</>") {
if err = os.RemoveAll(filepath.Join(projDir, "src")); err != nil {
return err
}
seedProject = true
}
}
if seedProject {
var srcpath = filepath.Join(projDir, "src", "main", "java", filepath.Join(strings.Split(groupID, ".")...), pluginName)
var resourcepath = filepath.Join(projDir, "src", "main", "resources")
if err = os.MkdirAll(srcpath, os.ModePerm); err != nil {
return err
}
if err = os.MkdirAll(resourcepath, os.ModePerm); err != nil {
return err
}
src, err := seed.MainSrc(groupID, pluginName)
if err != nil {
return err
}
if err = os.WriteFile(filepath.Join(srcpath, "Main.java"), []byte(src), util.ModePrivate); err != nil {
return err
}
pluginYml, err := seed.PluginYML(groupID, pluginName, versionChoice)
if err != nil {
return err
}
if err = os.WriteFile(filepath.Join(resourcepath, "plugin.yml"), []byte(pluginYml), util.ModePrivate); err != nil {
return err
}
}
return Hydrate(ctx, cmd)
}