Skip to content

Commit 45e6eac

Browse files
authored
Rename DevFile to Devfile everywhere in the code. (#18)
* Remove SelectDevFileTypes from readme Signed-off-by: thepetk <[email protected]> * Update documentation with new devfile naming Signed-off-by: thepetk <[email protected]> * Refactor naming from DevFile to Devfile Signed-off-by: thepetk <[email protected]> --------- Signed-off-by: thepetk <[email protected]>
1 parent aa486b0 commit 45e6eac

File tree

7 files changed

+156
-138
lines changed

7 files changed

+156
-138
lines changed

README.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,19 @@ It selects a devfile from a list of devfiles (from a devfile registry or other s
9797

9898
```go
9999
import "github.com/devfile/alizer/pkg/apis/recognizer"
100+
import "github.com/devfile/alizer/pkg/apis/model"
100101

101-
devfile, err := recognizer.SelectDevFileFromTypes("your/project/path", devfiles)
102+
// In case you want specific range of schemaVersion for matched devfiles
103+
devifileFilter := model.DevfileFilter {
104+
MinSchemaVersion: "<minimum-schema-version>",
105+
MaxSchemaVersion: "<maximum-schema-version>",
106+
}
107+
108+
// If you don't want a specific range of schemaVersion values
109+
devfileFilter := model.DevfileFilter{}
110+
111+
// Call match devfiles func
112+
devfiles, err := recognizer.MatchDevfiles("myproject", devfiles, devifileFilter)
102113
```
103114

104115
## Outputs

docs/proposals/support_22x_devfiles.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ type Version struct {
199199
Version string
200200
}
201201
202-
type DevFileType struct {
202+
type DevfileType struct {
203203
Name string
204204
Language string
205205
ProjectType string

docs/public/alizer-spec.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ This document outlines the features Alizer offers and how they actually work.
77
Currently, Alizer provides 3 detection options:
88

99
- _Language Detection_ (Language/Tools/Frameworks)
10-
- _DevFile Detection_
10+
- _Devfile Detection_
1111
- _Component Detection_
1212

1313
## Language Detection
@@ -129,7 +129,7 @@ At this point, it reads its content looking for dependencies to discover framewo
129129
}
130130
```
131131

132-
## DevFile detection
132+
## Devfile detection
133133

134134
It is possible to select a devfile from a list of devfile metadatas provided by the caller based on information that
135135
Alizer extracts from the source.

pkg/apis/model/model.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ type Version struct {
4949
Version string
5050
}
5151

52-
type DevFileType struct {
52+
type DevfileType struct {
5353
Name string
5454
Language string
5555
ProjectType string
@@ -82,7 +82,7 @@ type PortMatchSubRule struct {
8282
SubRegex *regexp.Regexp
8383
}
8484

85-
type DevFileScore struct {
86-
DevFileIndex int
85+
type DevfileScore struct {
86+
DevfileIndex int
8787
Score int
8888
}

pkg/apis/recognizer/devfile_recognizer.go

Lines changed: 86 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -28,134 +28,141 @@ import (
2828

2929
const MinimumAllowedVersion = "2.0.0"
3030

31-
func SelectDevFilesFromTypes(path string, devFileTypes []model.DevFileType) ([]int, error) {
31+
// DEPRECATION WARNING: This function is deprecated, please use devfile_recognizer.MatchDevfiles
32+
// instead.
33+
// func SelectDevFilesFromTypes: Returns a list of devfiles matched for the given application
34+
func SelectDevFilesFromTypes(path string, devfileTypes []model.DevfileType) ([]int, error) {
3235
alizerLogger := utils.GetOrCreateLogger()
3336
ctx := context.Background()
3437
alizerLogger.V(0).Info("Applying component detection to match a devfile")
35-
devFilesIndexes := selectDevFilesFromComponentsDetectedInPath(path, devFileTypes)
36-
if len(devFilesIndexes) > 0 {
37-
alizerLogger.V(0).Info(fmt.Sprintf("Found %d potential matches", len(devFilesIndexes)))
38-
return devFilesIndexes, nil
38+
devfilesIndexes := selectDevfilesFromComponentsDetectedInPath(path, devfileTypes)
39+
if len(devfilesIndexes) > 0 {
40+
alizerLogger.V(0).Info(fmt.Sprintf("Found %d potential matches", len(devfilesIndexes)))
41+
return devfilesIndexes, nil
3942
}
4043
alizerLogger.V(0).Info("No components found, applying language analysis for devfile matching")
4144
languages, err := analyze(path, &ctx)
4245
if err != nil {
4346
return []int{}, err
4447
}
45-
devfile, err := SelectDevFileUsingLanguagesFromTypes(languages, devFileTypes)
48+
devfile, err := SelectDevfileUsingLanguagesFromTypes(languages, devfileTypes)
4649
if err != nil {
4750
return []int{}, errors.New("No valid devfile found for project in " + path)
4851
}
4952
return []int{devfile}, nil
5053
}
5154

52-
func selectDevFilesFromComponentsDetectedInPath(path string, devFileTypes []model.DevFileType) []int {
55+
func selectDevfilesFromComponentsDetectedInPath(path string, devfileTypes []model.DevfileType) []int {
5356
components, _ := DetectComponentsInRoot(path)
54-
devFilesIndexes := selectDevFilesFromComponents(components, devFileTypes)
55-
if len(devFilesIndexes) > 0 {
56-
return devFilesIndexes
57+
devfilesIndexes := selectDevfilesFromComponents(components, devfileTypes)
58+
if len(devfilesIndexes) > 0 {
59+
return devfilesIndexes
5760
}
5861

5962
components, _ = DetectComponents(path)
60-
return selectDevFilesFromComponents(components, devFileTypes)
63+
return selectDevfilesFromComponents(components, devfileTypes)
6164
}
6265

63-
func selectDevFilesFromComponents(components []model.Component, devFileTypes []model.DevFileType) []int {
64-
var devFilesIndexes []int
66+
func selectDevfilesFromComponents(components []model.Component, devfileTypes []model.DevfileType) []int {
67+
var devfilesIndexes []int
6568
for _, component := range components {
66-
devFiles, err := selectDevFilesByLanguage(component.Languages[0], devFileTypes)
69+
devfiles, err := selectDevfilesByLanguage(component.Languages[0], devfileTypes)
6770
if err == nil {
68-
devFilesIndexes = append(devFilesIndexes, devFiles...)
71+
devfilesIndexes = append(devfilesIndexes, devfiles...)
6972
}
7073
}
71-
return devFilesIndexes
74+
return devfilesIndexes
7275
}
7376

74-
func SelectDevFileFromTypes(path string, devFileTypes []model.DevFileType) (int, error) {
75-
devfiles, err := SelectDevFilesFromTypes(path, devFileTypes)
77+
// DEPRECATION WARNING: This function is deprecated, please use devfile_recognizer.MatchDevfiles
78+
// instead.
79+
// func SelectDevFileFromTypes: Returns the first devfile from the list of devfiles returned
80+
// from SelectDevFilesFromTypes func. It also returns an error if exists.
81+
func SelectDevFileFromTypes(path string, devfileTypes []model.DevfileType) (int, error) {
82+
devfiles, err := SelectDevFilesFromTypes(path, devfileTypes)
7683
if err != nil {
7784
return -1, err
7885
}
7986
return devfiles[0], nil
8087
}
8188

82-
func SelectDevFilesUsingLanguagesFromTypes(languages []model.Language, devFileTypes []model.DevFileType) ([]int, error) {
83-
var devFilesIndexes []int
89+
func SelectDevfilesUsingLanguagesFromTypes(languages []model.Language, devfileTypes []model.DevfileType) ([]int, error) {
90+
var devfilesIndexes []int
8491
alizerLogger := utils.GetOrCreateLogger()
8592
alizerLogger.V(1).Info("Searching potential matches from detected languages")
8693
for _, language := range languages {
8794
alizerLogger.V(1).Info(fmt.Sprintf("Accessing %s language", language.Name))
88-
devFiles, err := selectDevFilesByLanguage(language, devFileTypes)
95+
devfiles, err := selectDevfilesByLanguage(language, devfileTypes)
8996
if err == nil {
90-
alizerLogger.V(1).Info(fmt.Sprintf("Found %d potential matches for language %s", len(devFiles), language.Name))
91-
devFilesIndexes = append(devFilesIndexes, devFiles...)
97+
alizerLogger.V(1).Info(fmt.Sprintf("Found %d potential matches for language %s", len(devfiles), language.Name))
98+
devfilesIndexes = append(devfilesIndexes, devfiles...)
9299
}
93100
}
94-
if len(devFilesIndexes) > 0 {
95-
return devFilesIndexes, nil
101+
if len(devfilesIndexes) > 0 {
102+
return devfilesIndexes, nil
96103
}
97104
return []int{}, errors.New("no valid devfile found by using those languages")
98105
}
99106

100-
func SelectDevFileUsingLanguagesFromTypes(languages []model.Language, devFileTypes []model.DevFileType) (int, error) {
101-
devFilesIndexes, err := SelectDevFilesUsingLanguagesFromTypes(languages, devFileTypes)
107+
func SelectDevfileUsingLanguagesFromTypes(languages []model.Language, devfileTypes []model.DevfileType) (int, error) {
108+
devfilesIndexes, err := SelectDevfilesUsingLanguagesFromTypes(languages, devfileTypes)
102109
if err != nil {
103110
return -1, err
104111
}
105-
return devFilesIndexes[0], nil
112+
return devfilesIndexes[0], nil
106113
}
107114

108-
func MatchDevfiles(path string, url string, filter model.DevfileFilter) ([]model.DevFileType, error) {
115+
func MatchDevfiles(path string, url string, filter model.DevfileFilter) ([]model.DevfileType, error) {
109116
alizerLogger := utils.GetOrCreateLogger()
110117
alizerLogger.V(0).Info("Starting devfile matching")
111118
alizerLogger.V(1).Info(fmt.Sprintf("Downloading devfiles from registry %s", url))
112-
devFileTypesFromRegistry, err := DownloadDevFileTypesFromRegistry(url, filter)
119+
devfileTypesFromRegistry, err := DownloadDevfileTypesFromRegistry(url, filter)
113120
if err != nil {
114-
return []model.DevFileType{}, err
121+
return []model.DevfileType{}, err
115122
}
116123

117-
return selectDevfiles(path, devFileTypesFromRegistry)
124+
return selectDevfiles(path, devfileTypesFromRegistry)
118125
}
119126

120-
func SelectDevFilesFromRegistry(path string, url string) ([]model.DevFileType, error) {
127+
func SelectDevfilesFromRegistry(path string, url string) ([]model.DevfileType, error) {
121128
alizerLogger := utils.GetOrCreateLogger()
122129
alizerLogger.V(0).Info("Starting devfile matching")
123130
alizerLogger.V(1).Info(fmt.Sprintf("Downloading devfiles from registry %s", url))
124-
devFileTypesFromRegistry, err := DownloadDevFileTypesFromRegistry(url, model.DevfileFilter{MinSchemaVersion: "", MaxSchemaVersion: ""})
131+
devfileTypesFromRegistry, err := DownloadDevfileTypesFromRegistry(url, model.DevfileFilter{MinSchemaVersion: "", MaxSchemaVersion: ""})
125132
if err != nil {
126-
return []model.DevFileType{}, err
133+
return []model.DevfileType{}, err
127134
}
128135

129-
return selectDevfiles(path, devFileTypesFromRegistry)
136+
return selectDevfiles(path, devfileTypesFromRegistry)
130137
}
131138

132139
// selectDevfiles is exposed as global var in the purpose of mocking tests
133-
var selectDevfiles = func(path string, devFileTypesFromRegistry []model.DevFileType) ([]model.DevFileType, error) {
134-
indexes, err := SelectDevFilesFromTypes(path, devFileTypesFromRegistry)
140+
var selectDevfiles = func(path string, devfileTypesFromRegistry []model.DevfileType) ([]model.DevfileType, error) {
141+
indexes, err := SelectDevFilesFromTypes(path, devfileTypesFromRegistry)
135142
if err != nil {
136-
return []model.DevFileType{}, err
143+
return []model.DevfileType{}, err
137144
}
138145

139-
var devFileTypes []model.DevFileType
146+
var devfileTypes []model.DevfileType
140147
for _, index := range indexes {
141-
devFileTypes = append(devFileTypes, devFileTypesFromRegistry[index])
148+
devfileTypes = append(devfileTypes, devfileTypesFromRegistry[index])
142149
}
143150

144-
return devFileTypes, nil
151+
return devfileTypes, nil
145152

146153
}
147154

148-
func SelectDevFileFromRegistry(path string, url string) (model.DevFileType, error) {
149-
devFileTypes, err := DownloadDevFileTypesFromRegistry(url, model.DevfileFilter{MinSchemaVersion: "", MaxSchemaVersion: ""})
155+
func SelectDevfileFromRegistry(path string, url string) (model.DevfileType, error) {
156+
devfileTypes, err := DownloadDevfileTypesFromRegistry(url, model.DevfileFilter{MinSchemaVersion: "", MaxSchemaVersion: ""})
150157
if err != nil {
151-
return model.DevFileType{}, err
158+
return model.DevfileType{}, err
152159
}
153160

154-
index, err := SelectDevFileFromTypes(path, devFileTypes)
161+
index, err := SelectDevFileFromTypes(path, devfileTypes)
155162
if err != nil {
156-
return model.DevFileType{}, err
163+
return model.DevfileType{}, err
157164
}
158-
return devFileTypes[index], nil
165+
return devfileTypes[index], nil
159166
}
160167

161168
func GetUrlWithVersions(url, minSchemaVersion, maxSchemaVersion string) (string, error) {
@@ -204,8 +211,8 @@ func GetUrlWithVersions(url, minSchemaVersion, maxSchemaVersion string) (string,
204211
}
205212
}
206213

207-
// DownloadDevFileTypesFromRegistry is exposed as a global variable for the purpose of running mock tests
208-
var DownloadDevFileTypesFromRegistry = func(url string, filter model.DevfileFilter) ([]model.DevFileType, error) {
214+
// DownloadDevfileTypesFromRegistry is exposed as a global variable for the purpose of running mock tests
215+
var DownloadDevfileTypesFromRegistry = func(url string, filter model.DevfileFilter) ([]model.DevfileType, error) {
209216
url = adaptUrl(url)
210217
tmpUrl := appendIndexPath(url)
211218
url, err := GetUrlWithVersions(tmpUrl, filter.MinSchemaVersion, filter.MaxSchemaVersion)
@@ -215,7 +222,7 @@ var DownloadDevFileTypesFromRegistry = func(url string, filter model.DevfileFilt
215222
// This value is set by the user in order to configure the registry
216223
resp, err := http.Get(url) // #nosec G107
217224
if err != nil {
218-
return []model.DevFileType{}, err
225+
return []model.DevfileType{}, err
219226
}
220227
defer func() error {
221228
if err := resp.Body.Close(); err != nil {
@@ -226,21 +233,21 @@ var DownloadDevFileTypesFromRegistry = func(url string, filter model.DevfileFilt
226233

227234
// Check server response
228235
if resp.StatusCode != http.StatusOK {
229-
return []model.DevFileType{}, errors.New("unable to fetch devfiles from the registry")
236+
return []model.DevfileType{}, errors.New("unable to fetch devfiles from the registry")
230237
}
231238

232239
body, err2 := ioutil.ReadAll(resp.Body)
233240
if err2 != nil {
234-
return []model.DevFileType{}, errors.New("unable to fetch devfiles from the registry")
241+
return []model.DevfileType{}, errors.New("unable to fetch devfiles from the registry")
235242
}
236243

237-
var devFileTypes []model.DevFileType
238-
err = json.Unmarshal(body, &devFileTypes)
244+
var devfileTypes []model.DevfileType
245+
err = json.Unmarshal(body, &devfileTypes)
239246
if err != nil {
240-
return []model.DevFileType{}, errors.New("unable to fetch devfiles from the registry")
247+
return []model.DevfileType{}, errors.New("unable to fetch devfiles from the registry")
241248
}
242249

243-
return devFileTypes, nil
250+
return devfileTypes, nil
244251
}
245252

246253
func appendIndexPath(url string) string {
@@ -263,7 +270,7 @@ func adaptUrl(url string) string {
263270
return url
264271
}
265272

266-
// selectDevFilesByLanguage detects devfiles that fit best with a project.
273+
// selectDevfilesByLanguage detects devfiles that fit best with a project.
267274
//
268275
// Performs a search in two steps looping through all devfiles available.
269276
// When a framework is detected, this is stored in a map but still not saved. A check is made eventually as there could be that a future or
@@ -272,21 +279,21 @@ func adaptUrl(url string) string {
272279
//
273280
// At the end, if some framework is supported by some devfile, they are returned. Otherwise, Alizer was not able to find any
274281
// specific devfile for the frameworks detected and returned the devfiles which got the largest score.
275-
func selectDevFilesByLanguage(language model.Language, devFileTypes []model.DevFileType) ([]int, error) {
276-
var devFileIndexes []int
277-
frameworkPerDevFile := make(map[string]model.DevFileScore)
282+
func selectDevfilesByLanguage(language model.Language, devfileTypes []model.DevfileType) ([]int, error) {
283+
var devfileIndexes []int
284+
frameworkPerDevfile := make(map[string]model.DevfileScore)
278285
scoreTarget := 0
279286

280-
for index, devFile := range devFileTypes {
287+
for index, devfile := range devfileTypes {
281288
score := 0
282289
frameworkPerDevfileTmp := make(map[string]interface{})
283-
if strings.EqualFold(devFile.Language, language.Name) || matches(language.Aliases, devFile.Language) != "" {
290+
if strings.EqualFold(devfile.Language, language.Name) || matches(language.Aliases, devfile.Language) != "" {
284291
score++
285-
if frw := matchesFormatted(language.Frameworks, devFile.ProjectType); frw != "" {
292+
if frw := matchesFormatted(language.Frameworks, devfile.ProjectType); frw != "" {
286293
frameworkPerDevfileTmp[frw] = nil
287294
score += utils.FRAMEWORK_WEIGHT
288295
}
289-
for _, tag := range devFile.Tags {
296+
for _, tag := range devfile.Tags {
290297
if frw := matchesFormatted(language.Frameworks, tag); frw != "" {
291298
frameworkPerDevfileTmp[frw] = nil
292299
score += utils.FRAMEWORK_WEIGHT
@@ -297,37 +304,37 @@ func selectDevFilesByLanguage(language model.Language, devFileTypes []model.DevF
297304
}
298305

299306
for framework := range frameworkPerDevfileTmp {
300-
devFileObj := frameworkPerDevFile[framework]
301-
if score > devFileObj.Score {
302-
frameworkPerDevFile[framework] = model.DevFileScore{
303-
DevFileIndex: index,
307+
devfileObj := frameworkPerDevfile[framework]
308+
if score > devfileObj.Score {
309+
frameworkPerDevfile[framework] = model.DevfileScore{
310+
DevfileIndex: index,
304311
Score: score,
305312
}
306313
}
307314
}
308315

309-
if len(frameworkPerDevFile) == 0 {
316+
if len(frameworkPerDevfile) == 0 {
310317
if score == scoreTarget {
311-
devFileIndexes = append(devFileIndexes, index)
318+
devfileIndexes = append(devfileIndexes, index)
312319
} else if score > scoreTarget {
313320
scoreTarget = score
314-
devFileIndexes = []int{index}
321+
devfileIndexes = []int{index}
315322
}
316323
}
317324
}
318325
}
319326

320-
if len(frameworkPerDevFile) > 0 {
321-
devFileIndexes = []int{}
322-
for _, val := range frameworkPerDevFile {
323-
devFileIndexes = append(devFileIndexes, val.DevFileIndex)
327+
if len(frameworkPerDevfile) > 0 {
328+
devfileIndexes = []int{}
329+
for _, val := range frameworkPerDevfile {
330+
devfileIndexes = append(devfileIndexes, val.DevfileIndex)
324331
}
325332
}
326333

327-
if len(devFileIndexes) == 0 {
328-
return devFileIndexes, errors.New("No valid devfile found for current language " + language.Name)
334+
if len(devfileIndexes) == 0 {
335+
return devfileIndexes, errors.New("No valid devfile found for current language " + language.Name)
329336
}
330-
return devFileIndexes, nil
337+
return devfileIndexes, nil
331338
}
332339

333340
func matchesFormatted(values []string, valueToFind string) string {

0 commit comments

Comments
 (0)