@@ -13,6 +13,12 @@ import (
13
13
"kops.dev/internal/templates"
14
14
)
15
15
16
+ const (
17
+ golang = "golang"
18
+ java = "java"
19
+ js = "js"
20
+ )
21
+
16
22
var (
17
23
errDepKeyNotProvided = errors .New ("KOPS_DEPLOYMENT_KEY not provided, " +
18
24
"please download the key form https://kops.dev" )
@@ -37,20 +43,7 @@ func Deploy(ctx *gofr.Context) (interface{}, error) {
37
43
if fi != nil {
38
44
fmt .Println ("Dockerfile present, using already created dockerfile" )
39
45
} 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 {
54
47
return nil , err
55
48
}
56
49
}
@@ -61,16 +54,34 @@ func Deploy(ctx *gofr.Context) (interface{}, error) {
61
54
return "Successful" , nil
62
55
}
63
56
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
+ }
66
77
67
78
// get the template content for dockerFile based on the language
68
79
switch strings .ToLower (lang ) {
69
- case "go" :
80
+ case golang :
70
81
content = templates .Golang
71
- case " java" :
82
+ case java :
72
83
content = templates .Java
73
- case "js" :
84
+ case js :
74
85
content = templates .Js
75
86
default :
76
87
ctx .Logger .Errorf ("creating DockerFile for %s is not supported yet," +
@@ -106,3 +117,24 @@ func createDockerFile(ctx *gofr.Context, lang, port string) error {
106
117
107
118
return nil
108
119
}
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