Skip to content

Commit 756aa21

Browse files
feat: Dockerfile feature integrated
1 parent 5c7b2f3 commit 756aa21

File tree

2 files changed

+70
-32
lines changed

2 files changed

+70
-32
lines changed

cmd/root.go

+36-32
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
/*
22
Copyright © 2024 NAME HERE <EMAIL ADDRESS>
3-
43
*/
54
package cmd
65

76
import (
8-
"os"
9-
"fmt"
10-
"bufio"
11-
"github.com/spf13/cobra"
12-
"strings"
137
"Utkarsh4517/ginister/config"
14-
"Utkarsh4517/ginister/models"
158
"Utkarsh4517/ginister/controllers"
9+
"Utkarsh4517/ginister/models"
1610
"Utkarsh4517/ginister/routes"
17-
11+
"bufio"
12+
"fmt"
13+
"os"
14+
"strings"
15+
"Utkarsh4517/ginister/docker"
16+
"github.com/spf13/cobra"
1817
)
1918

2019
var rootCmd = &cobra.Command{
@@ -44,32 +43,37 @@ func runGenerator(cmd *cobra.Command, args []string) {
4443
}
4544

4645
func createProject(projectName string, reader *bufio.Reader) {
47-
fmt.Println("Creating project:", projectName, "powered by ginister")
48-
49-
createProjectStructure(projectName)
50-
51-
config.GenerateConfigFile(projectName)
52-
53-
var modelNames []string
54-
55-
for {
56-
fmt.Print("Enter a model name (or press enter to finish): ")
57-
modelName, _ := reader.ReadString('\n')
58-
modelName = strings.TrimSpace(modelName)
59-
60-
if modelName == "" {
61-
break
62-
}
63-
64-
modelNames = append(modelNames, modelName)
65-
fields := getModelFields(reader)
66-
models.GenerateModelFile(projectName, modelName, fields)
67-
controllers.GenerateControllerFile(projectName, modelName)
68-
}
69-
routes.GenerateRoutesFile(projectName, modelNames)
70-
fmt.Println("Project setup complete!")
46+
fmt.Println("Creating project:", projectName, "powered by ginister")
47+
48+
createProjectStructure(projectName)
49+
50+
config.GenerateConfigFile(projectName)
51+
err := docker.CreateDockerfile(projectName)
52+
if err != nil {
53+
fmt.Printf("Error creating Dockerfile: %v\n", err)
54+
}
55+
56+
var modelNames []string
57+
58+
for {
59+
fmt.Print("Enter a model name (or press enter to finish): ")
60+
modelName, _ := reader.ReadString('\n')
61+
modelName = strings.TrimSpace(modelName)
62+
63+
if modelName == "" {
64+
break
65+
}
66+
67+
modelNames = append(modelNames, modelName)
68+
fields := getModelFields(reader)
69+
models.GenerateModelFile(projectName, modelName, fields)
70+
controllers.GenerateControllerFile(projectName, modelName)
71+
}
72+
routes.GenerateRoutesFile(projectName, modelNames)
73+
fmt.Println("Project setup complete!")
7174
}
7275

76+
7377
func createProjectStructure(projectName string) {
7478
directories := []string{"", "/config", "/controllers", "/models", "/routes"}
7579
for _, dir := range directories {

docker/docker.go

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package docker
2+
3+
import (
4+
"fmt"
5+
"os"
6+
)
7+
8+
func CreateDockerfile(projectDir string) error {
9+
content := `FROM golang:1.23
10+
11+
WORKDIR /app
12+
13+
COPY go.mod go.sum ./
14+
RUN go mod download
15+
16+
COPY . .
17+
18+
RUN go build -o main .
19+
20+
EXPOSE 8080
21+
22+
CMD ["./main"]
23+
`
24+
25+
filePath := fmt.Sprintf("%s/Dockerfile", projectDir)
26+
file, err := os.Create(filePath)
27+
if err != nil {
28+
return err
29+
}
30+
defer file.Close()
31+
32+
_, err = file.WriteString(content)
33+
return err
34+
}

0 commit comments

Comments
 (0)