Skip to content
This repository was archived by the owner on Oct 24, 2024. It is now read-only.

Commit 798e4b1

Browse files
authored
add language detection conditionals (#9)
1 parent 41da2d7 commit 798e4b1

File tree

1 file changed

+51
-19
lines changed

1 file changed

+51
-19
lines changed

deploy.go

Lines changed: 51 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ import (
1313
"kops.dev/internal/templates"
1414
)
1515

16+
const (
17+
golang = "golang"
18+
java = "java"
19+
js = "js"
20+
)
21+
1622
var (
1723
errDepKeyNotProvided = errors.New("KOPS_DEPLOYMENT_KEY not provided, " +
1824
"please download the key form https://kops.dev")
@@ -37,20 +43,7 @@ func Deploy(ctx *gofr.Context) (interface{}, error) {
3743
if fi != nil {
3844
fmt.Println("Dockerfile present, using already created dockerfile")
3945
} else {
40-
// removing the cloud-specific logic from cli to hosted service
41-
lang := ctx.Param("lang")
42-
if lang == "" {
43-
ctx.Logger.Errorf("%v", errLanguageNotProvided)
44-
45-
return nil, errLanguageNotProvided
46-
}
47-
48-
port := ctx.Param("p")
49-
if port == "" {
50-
port = "8000"
51-
}
52-
53-
if err := createDockerFile(ctx, lang, port); err != nil {
46+
if err := createDockerFile(ctx); err != nil {
5447
return nil, err
5548
}
5649
}
@@ -61,16 +54,34 @@ func Deploy(ctx *gofr.Context) (interface{}, error) {
6154
return "Successful", nil
6255
}
6356

64-
func createDockerFile(ctx *gofr.Context, lang, port string) error {
65-
var content string
57+
func createDockerFile(ctx *gofr.Context) error {
58+
var content, lang, port string
59+
60+
// removing the cloud-specific logic from cli to hosted service
61+
lang = ctx.Param("lang")
62+
if lang == "" {
63+
lang = detect()
64+
if lang == "" {
65+
ctx.Logger.Errorf("%v", errLanguageNotProvided)
66+
67+
return errLanguageNotProvided
68+
}
69+
70+
fmt.Println("detected language is", lang)
71+
}
72+
73+
port = ctx.Param("p")
74+
if port == "" {
75+
port = "8000"
76+
}
6677

6778
// get the template content for dockerFile based on the language
6879
switch strings.ToLower(lang) {
69-
case "go":
80+
case golang:
7081
content = templates.Golang
71-
case "java":
82+
case java:
7283
content = templates.Java
73-
case "js":
84+
case js:
7485
content = templates.Js
7586
default:
7687
ctx.Logger.Errorf("creating DockerFile for %s is not supported yet,"+
@@ -106,3 +117,24 @@ func createDockerFile(ctx *gofr.Context, lang, port string) error {
106117

107118
return nil
108119
}
120+
121+
func detect() string {
122+
switch {
123+
case checkFile("go.mod"):
124+
return golang
125+
case checkFile("package.json"):
126+
return js
127+
case checkFile("pom.xml") || checkFile("build.gradle"):
128+
return java
129+
}
130+
131+
return ""
132+
}
133+
134+
func checkFile(fileName string) bool {
135+
if _, err := os.Stat(fileName); err != nil {
136+
return false
137+
}
138+
139+
return true
140+
}

0 commit comments

Comments
 (0)