@@ -155,6 +155,8 @@ func canWriteLanguage(existingLanguages []string, language string, overwriteTemp
155155// It returns the existing languages and the fetched languages
156156// It also returns an error if the templates cannot be read
157157func moveTemplates (localTemplatesDir , extractedPath , templateName string , overwriteTemplate bool , repository string , refName string , sha string ) ([]string , []string , error ) {
158+ // Get the template name without prefix
159+ template := strings .SplitN (templateName , "@" , 2 )[0 ]
158160
159161 var (
160162 existingLanguages []string
@@ -197,13 +199,29 @@ func moveTemplates(localTemplatesDir, extractedPath, templateName string, overwr
197199 refSuffix = "@" + refName
198200 }
199201
202+ // Only copy the requested template when a template name is provided
203+ // copy all templates otherwise.
204+ if len (template ) > 0 && language != template {
205+ continue
206+ }
207+
200208 if canWriteLanguage (existingLanguages , language , overwriteTemplate ) {
201209 // Do cp here
202210 languageSrc := filepath .Join (extractedPath , TemplateDirectory , language )
203- languageDest := filepath .Join (localTemplatesDir , language )
211+
212+ var languageDest string
213+
214+ if len (templateName ) > 0 {
215+ languageDest = filepath .Join (localTemplatesDir , templateName )
216+ } else {
217+ languageDest = filepath .Join (localTemplatesDir , language )
218+ if refName != "" {
219+ languageDest += "@" + refName
220+ }
221+ }
222+
204223 langName := language
205224 if refName != "" {
206- languageDest += "@" + refName
207225 langName = language + "@" + refName
208226 }
209227 fetchedLanguages = append (fetchedLanguages , langName )
0 commit comments