@@ -15,14 +15,6 @@ import (
1515 "github.com/livekit/protocol/logger"
1616)
1717
18- const (
19- pythonDockerfileURL = "https://raw.githubusercontent.com/livekit-examples/agent-deployment/refs/heads/main/python-agent-example-app/Dockerfile"
20- pythonDockerIgnoreURL = "https://raw.githubusercontent.com/livekit-examples/agent-deployment/refs/heads/main/python-agent-example-app/.dockerignore"
21- pythonEntrypoint = "main.py"
22- nodeDockerfileURL = "https://raw.githubusercontent.com/livekit-examples/agent-deployment/refs/heads/main/node-agent-example-docker/Dockerfile"
23- nodeDockerIgnoreURL = "https://raw.githubusercontent.com/livekit-examples/agent-deployment/refs/heads/main/node-agent-example-docker/.dockerignore"
24- )
25-
2618func FindDockerfile (dir string ) (bool , error ) {
2719 entries , err := os .ReadDir (dir )
2820 if err != nil {
@@ -37,7 +29,11 @@ func FindDockerfile(dir string) (bool, error) {
3729 return false , nil
3830}
3931
40- func CreateDockerfile (dir string ) error {
32+ func CreateDockerfile (dir string , settingsMap map [string ]string ) error {
33+ if len (settingsMap ) == 0 {
34+ return fmt .Errorf ("unable to fetch client settings from server, please try again later" )
35+ }
36+
4137 projectType := ""
4238 if isNode (dir ) {
4339 projectType = "node"
@@ -52,27 +48,37 @@ func CreateDockerfile(dir string) error {
5248 var err error
5349 switch projectType {
5450 case "python" :
55- dockerfileContent , err = downloadFile ( pythonDockerfileURL )
51+ err = validateSettingsMap ( settingsMap , [] string { "python_docker_file" , "python_docker_ignore" } )
5652 if err != nil {
5753 return err
5854 }
59- dockerIgnoreContent , err = downloadFile (pythonDockerIgnoreURL )
55+ dockerfileContent , err = downloadFile (settingsMap ["python_docker_file" ])
56+ if err != nil {
57+ return err
58+ }
59+
60+ dockerIgnoreContent , err = downloadFile (settingsMap ["python_docker_ignore" ])
6061 if err != nil {
6162 return err
6263 }
6364 case "node" :
64- dockerfileContent , err = downloadFile ( nodeDockerfileURL )
65+ err = validateSettingsMap ( settingsMap , [] string { "node_docker_file" , "node_docker_ignore" } )
6566 if err != nil {
6667 return err
6768 }
68- dockerIgnoreContent , err = downloadFile (nodeDockerIgnoreURL )
69+
70+ dockerfileContent , err = downloadFile (settingsMap ["node_docker_file" ])
71+ if err != nil {
72+ return err
73+ }
74+ dockerIgnoreContent , err = downloadFile (settingsMap ["node_docker_ignore" ])
6975 if err != nil {
7076 return err
7177 }
7278 }
7379
7480 if projectType == "python" {
75- dockerfileContent , err = validateEntrypoint (dir , dockerfileContent , projectType )
81+ dockerfileContent , err = validateEntrypoint (dir , dockerfileContent , projectType , settingsMap )
7682 if err != nil {
7783 return err
7884 }
@@ -110,7 +116,7 @@ func downloadFile(url string) ([]byte, error) {
110116 return data , nil
111117}
112118
113- func validateEntrypoint (dir string , dockerfileContent []byte , projectType string ) ([]byte , error ) {
119+ func validateEntrypoint (dir string , dockerfileContent []byte , projectType string , settingsMap map [ string ] string ) ([]byte , error ) {
114120 fileList := make (map [string ]bool )
115121 entries , err := os .ReadDir (dir )
116122 if err != nil {
@@ -168,6 +174,12 @@ func validateEntrypoint(dir string, dockerfileContent []byte, projectType string
168174 return selected , nil
169175 }
170176
177+ err = validateSettingsMap (settingsMap , []string {"python_entrypoint" })
178+ if err != nil {
179+ return nil , err
180+ }
181+
182+ pythonEntrypoint := settingsMap ["python_entrypoint" ]
171183 newEntrypoint , err := valFile (pythonEntrypoint )
172184 if err != nil {
173185 return nil , err
0 commit comments