@@ -24,12 +24,12 @@ const DefaultTemplateRepository = "https://github.com/openfaas/templates.git"
2424const TemplateDirectory = "./template/"
2525
2626// fetchTemplates fetch code templates using git clone.
27- func fetchTemplates (templateURL , refName , templateName string , overwrite bool ) error {
27+ func fetchTemplates (templateURL , refName , templateName string , overwriteTemplates bool ) error {
2828 if len (templateURL ) == 0 {
2929 return fmt .Errorf ("pass valid templateURL" )
3030 }
3131
32- log .Printf ("Fetching templates from %s] " , templateURL )
32+ log .Printf ("Fetching templates from %s" , templateURL )
3333
3434 targetDir , err := os .MkdirTemp ("" , "openfaas-templates-*" )
3535 if err != nil {
@@ -68,7 +68,7 @@ func fetchTemplates(templateURL, refName, templateName string, overwrite bool) e
6868 return err
6969 }
7070
71- protectedLanguages , fetchedLanguages , err := moveTemplates (targetDir , templateName , overwrite , templateURL , refName , sha )
71+ protectedLanguages , fetchedLanguages , err := moveTemplates (targetDir , templateName , overwriteTemplates , templateURL , refName , sha )
7272 if err != nil {
7373 return err
7474 }
@@ -85,17 +85,18 @@ func fetchTemplates(templateURL, refName, templateName string, overwrite bool) e
8585// canWriteLanguage tells whether the language can be expanded from the zip or not.
8686// availableLanguages map keeps track of which languages we know to be okay to copy.
8787// overwrite flag will allow to force copy the language template
88- func canWriteLanguage (existingLanguages []string , language string , overwrite bool ) bool {
89- if overwrite {
88+ func canWriteLanguage (existingLanguages []string , language string , overwriteTemplate bool ) bool {
89+ if overwriteTemplate {
9090 return true
9191 }
92- return slices .Contains (existingLanguages , language )
92+
93+ return ! slices .Contains (existingLanguages , language )
9394}
9495
9596// moveTemplates moves the templates from the repository to the template directory
9697// It returns the existing languages and the fetched languages
9798// It also returns an error if the templates cannot be read
98- func moveTemplates (repoPath , templateName string , overwrite bool , repository string , refName string , sha string ) ([]string , []string , error ) {
99+ func moveTemplates (repoPath , templateName string , overwriteTemplate bool , repository string , refName string , sha string ) ([]string , []string , error ) {
99100
100101 var (
101102 existingLanguages []string
@@ -110,23 +111,25 @@ func moveTemplates(repoPath, templateName string, overwrite bool, repository str
110111 }
111112
112113 destTemplatePath := filepath .Join (cwd , TemplateDirectory )
113- if _ , err := os .Stat (destTemplatePath ); err != nil && ! os .IsNotExist (err ) {
114- os .MkdirAll (destTemplatePath , 0755 )
114+ if _ , err := os .Stat (destTemplatePath ); err != nil && os .IsNotExist (err ) {
115+ if err := os .MkdirAll (destTemplatePath , 0755 ); err != nil {
116+ return nil , nil , fmt .Errorf ("can't create template directory: %s" , err )
117+ }
115118 }
116119
117- // availableLanguages := make(map[string]bool)
118-
119- templateEntries , _ := os .ReadDir (destTemplatePath )
120+ templateEntries , err := os .ReadDir (destTemplatePath )
121+ if err != nil {
122+ return nil , nil , fmt .Errorf ("unable to read directory: %s" , destTemplatePath )
123+ }
120124
121125 // OK if nothing exists yet
122-
123126 for _ , entry := range templateEntries {
124127 if ! entry .IsDir () {
125128 continue
126129 }
127130
128131 templateFile := filepath .Join (destTemplatePath , entry .Name (), "template.yml" )
129- if _ , err := os .Stat (templateFile ); err != nil {
132+ if _ , err := os .Stat (templateFile ); err != nil && ! os . IsNotExist ( err ) {
130133 return nil , nil , fmt .Errorf ("can't find template.yml in: %s" , templateFile )
131134 }
132135
@@ -148,7 +151,7 @@ func moveTemplates(repoPath, templateName string, overwrite bool, repository str
148151 refSuffix = "@" + refName
149152 }
150153
151- if canWriteLanguage (existingLanguages , language , overwrite ) {
154+ if canWriteLanguage (existingLanguages , language , overwriteTemplate ) {
152155 // Do cp here
153156 languageSrc := filepath .Join (repoPath , TemplateDirectory , language )
154157 languageDest := filepath .Join (destTemplatePath , language )
@@ -167,53 +170,11 @@ func moveTemplates(repoPath, templateName string, overwrite bool, repository str
167170 return nil , nil , err
168171 }
169172 } else {
170-
171173 protectedLanguages = append (protectedLanguages , language + refSuffix )
172174 continue
173175 }
174176 }
175177
176- // if len(templateName) == 0 {
177-
178- // canWrite := canWriteLanguage(availableLanguages, language, overwrite)
179- // if canWrite {
180- // fetchedLanguages = append(fetchedLanguages, language)
181- // // Do cp here
182- // languageSrc := filepath.Join(templatePath, language)
183- // languageDest := filepath.Join(templateDirectory, language)
184- // if refName != "" {
185- // languageDest += "@" + refName
186- // }
187- // builder.CopyFiles(languageSrc, languageDest)
188-
189- // if err := writeTemplateMeta(languageDest, repository, refName, sha); err != nil {
190- // return nil, nil, err
191- // }
192-
193- // } else {
194- // existingLanguages = append(existingLanguages, language)
195- // continue
196- // }
197- // } else if language == templateName {
198-
199- // if canWriteLanguage(availableLanguages, language, overwrite) {
200- // fetchedLanguages = append(fetchedLanguages, language)
201- // // Do cp here
202- // languageSrc := filepath.Join(templatePath, language)
203- // languageDest := filepath.Join(templateDirectory, language)
204- // if refName != "" {
205- // languageDest += "@" + refName
206- // }
207- // builder.CopyFiles(languageSrc, languageDest)
208-
209- // if err := writeTemplateMeta(languageDest, repository, refName, sha); err != nil {
210- // return nil, nil, err
211- // }
212-
213- // }
214- // }
215- // }
216-
217178 return protectedLanguages , fetchedLanguages , nil
218179}
219180
@@ -238,7 +199,7 @@ func writeTemplateMeta(languageDest, repository, refName, sha string) error {
238199 return nil
239200}
240201
241- func pullTemplate (repository , templateName string ) error {
202+ func pullTemplate (repository , templateName string , overwriteTemplates bool ) error {
242203
243204 baseRepository := repository
244205
@@ -275,8 +236,8 @@ func pullTemplate(repository, templateName string) error {
275236 }
276237 }
277238
278- if err := fetchTemplates (repository , refName , templateName , overwrite ); err != nil {
279- return fmt .Errorf ("error while fetching templates: %s " , err )
239+ if err := fetchTemplates (repository , refName , templateName , overwriteTemplates ); err != nil {
240+ return fmt .Errorf ("error while fetching templates: %w " , err )
280241 }
281242
282243 return nil
0 commit comments