-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.go
More file actions
87 lines (70 loc) · 2.63 KB
/
main.go
File metadata and controls
87 lines (70 loc) · 2.63 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
package main
import (
"flag"
"fmt"
"os"
"github.com/vineeshvk/cleancli/constants"
"github.com/vineeshvk/cleancli/dirvalid"
"github.com/vineeshvk/cleancli/input"
"github.com/vineeshvk/cleancli/models"
"github.com/vineeshvk/cleancli/utils"
"github.com/vineeshvk/cleancli/write"
)
func main() {
var mainDirectoryModel models.MainDirectoryModel = dirvalid.ValidateRootDirectories()
// Check if a subcommand is provided
argsLen := len(os.Args)
if argsLen < 2 {
fmt.Println("Usage: cleancli <subcommand> [options]")
fmt.Println("Available subcommands: api, feature")
os.Exit(1)
}
// Get the subcommand
subcommand := os.Args[1]
handleSubcommand(subcommand, mainDirectoryModel)
}
func handleSubcommand(subcommand string, mainDirectoryModel models.MainDirectoryModel) {
switch subcommand {
case "api":
generateAPI(mainDirectoryModel)
case "feature":
generateFeature(mainDirectoryModel)
default:
fmt.Printf("Unknown subcommand: %s\n", subcommand)
fmt.Println("Available subcommands: api, feature")
os.Exit(1)
}
}
func generateAPI(mainDirectoryModel models.MainDirectoryModel) {
var apiInfo models.ApiInfoModel = input.GetAPIInfos(mainDirectoryModel)
write.WriteApiService(mainDirectoryModel.GetApiServiceRoute(), apiInfo)
write.WriteDataSource(mainDirectoryModel.DataDir, apiInfo)
write.WriteRepo(mainDirectoryModel, apiInfo)
write.WriteUseCase(mainDirectoryModel, apiInfo)
write.WriteDI(mainDirectoryModel, apiInfo)
fmt.Println(constants.CompletedIcon, "Completed adding API.")
utils.ExecuteBuildRunner(mainDirectoryModel.DataDir)
}
func generateFeature(mainDirectoryModel models.MainDirectoryModel) {
// Define a FlagSet for the 'feature' subcommand
featureCmd := flag.NewFlagSet("feature", flag.ExitOnError)
// Add an optional flag --ignore-routes
ignoreRoutes := featureCmd.Bool("ignore-routes", false, "Ignore generating route files")
// Parse the flags
if err := featureCmd.Parse(os.Args[2:]); err != nil {
fmt.Printf("Error parsing flags for 'feature': %v\n", err)
os.Exit(1)
}
var featureInfo models.FeatureInfoModel = input.GetFeatureInfos()
fmt.Println(constants.LoadingIcon, " Creating feature page "+featureInfo.FeatureName)
if *ignoreRoutes {
// If the flag is set, skip generating route files
fmt.Println("Skipping route file generation.")
} else {
// If the flag is not set, proceed with generating route files
write.WriteFeatureRoute(featureInfo, mainDirectoryModel.PackageName)
}
write.WriteFeatureDI(featureInfo, mainDirectoryModel.PackageName)
write.WriteFeaturePages(featureInfo, mainDirectoryModel.PackageName)
fmt.Println(constants.CompletedIcon, "Completed adding New Feature Page.")
}