@@ -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+
1622var (
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