1
- import { IReadFile , ParsedRule , Rule , Ruleset } from "@app/api/models" ;
2
- import yaml from "js-yaml" ;
1
+ import { IReadFile , ParsedRule , Ruleset } from "@app/api/models" ;
3
2
4
3
type RuleFileType = "YAML" | "XML" | null ;
5
4
@@ -14,69 +13,43 @@ export const checkRuleFileType = (filename: string): RuleFileType => {
14
13
15
14
export const parseRules = ( file : IReadFile ) : ParsedRule => {
16
15
if ( file . data ) {
17
- if ( checkRuleFileType ( file . fileName ) === "YAML" ) {
18
- const yamlDoc = yaml . load ( file . data ) as any [ ] ;
19
- const yamlLabels = yamlDoc ?. reduce ( ( acc , parsedLine ) => {
20
- const newLabels = parsedLine ?. labels ? parsedLine ?. labels : [ ] ;
21
- return [ ...acc , ...newLabels ] ;
22
- } , [ ] ) ;
23
- const allLabels = getLabels ( yamlLabels ) ;
24
- return {
25
- source : allLabels ?. sourceLabel ,
26
- target : allLabels ?. targetLabel ,
27
- otherLabels : allLabels ?. otherLabels ,
28
- allLabels : allLabels ?. allLabels ,
29
- total : 0 ,
30
- ...( file . responseID && {
31
- fileID : file . responseID ,
32
- } ) ,
33
- } ;
34
- } else if ( checkRuleFileType ( file . fileName ) === "XML" ) {
35
- let source : string | null = null ;
36
- let target : string | null = null ;
37
- let rulesCount = 0 ;
16
+ let source : string | null = null ;
17
+ let target : string | null = null ;
18
+ let rulesCount = 0 ;
38
19
39
- const parser = new DOMParser ( ) ;
40
- const xml = parser . parseFromString ( file . data , "text/xml" ) ;
20
+ const parser = new DOMParser ( ) ;
21
+ const xml = parser . parseFromString ( file . data , "text/xml" ) ;
41
22
42
- const ruleSets = xml . getElementsByTagName ( "ruleset" ) ;
23
+ const ruleSets = xml . getElementsByTagName ( "ruleset" ) ;
43
24
44
- if ( ruleSets && ruleSets . length > 0 ) {
45
- const metadata = ruleSets [ 0 ] . getElementsByTagName ( "metadata" ) ;
25
+ if ( ruleSets && ruleSets . length > 0 ) {
26
+ const metadata = ruleSets [ 0 ] . getElementsByTagName ( "metadata" ) ;
46
27
47
- if ( metadata && metadata . length > 0 ) {
48
- const sources = metadata [ 0 ] . getElementsByTagName ( "sourceTechnology" ) ;
49
- if ( sources && sources . length > 0 ) source = sources [ 0 ] . id ;
28
+ if ( metadata && metadata . length > 0 ) {
29
+ const sources = metadata [ 0 ] . getElementsByTagName ( "sourceTechnology" ) ;
30
+ if ( sources && sources . length > 0 ) source = sources [ 0 ] . id ;
50
31
51
- const targets = metadata [ 0 ] . getElementsByTagName ( "targetTechnology" ) ;
52
- if ( targets && targets . length > 0 ) target = targets [ 0 ] . id ;
53
- }
54
-
55
- const rulesGroup = ruleSets [ 0 ] . getElementsByTagName ( "rules" ) ;
56
- if ( rulesGroup && rulesGroup . length > 0 )
57
- rulesCount = rulesGroup [ 0 ] . getElementsByTagName ( "rule" ) . length ;
32
+ const targets = metadata [ 0 ] . getElementsByTagName ( "targetTechnology" ) ;
33
+ if ( targets && targets . length > 0 ) target = targets [ 0 ] . id ;
58
34
}
59
- const allLabels = [
60
- ...( source ? [ `konveyor.io/source=${ source } ` ] : [ ] ) ,
61
- ...( target ? [ `konveyor.io/target=${ target } ` ] : [ ] ) ,
62
- ] ;
63
- return {
64
- source : source ,
65
- target : target ,
66
- otherLabels : allLabels ,
67
- allLabels : allLabels ,
68
- total : rulesCount ,
69
- ...( file . responseID && {
70
- fileID : file . responseID ,
71
- } ) ,
72
- } ;
73
- } else {
74
- return {
75
- source : null ,
76
- target : null ,
77
- total : 0 ,
78
- } ;
35
+
36
+ const rulesGroup = ruleSets [ 0 ] . getElementsByTagName ( "rules" ) ;
37
+ if ( rulesGroup && rulesGroup . length > 0 )
38
+ rulesCount = rulesGroup [ 0 ] . getElementsByTagName ( "rule" ) . length ;
79
39
}
40
+ const allLabels = [
41
+ ...( source ? [ `konveyor.io/source=${ source } ` ] : [ ] ) ,
42
+ ...( target ? [ `konveyor.io/target=${ target } ` ] : [ ] ) ,
43
+ ] ;
44
+ return {
45
+ source,
46
+ target,
47
+ total : rulesCount ,
48
+ allLabels,
49
+ ...( file . responseID && {
50
+ fileID : file . responseID ,
51
+ } ) ,
52
+ } ;
80
53
} else {
81
54
return {
82
55
source : null ,
@@ -85,7 +58,6 @@ export const parseRules = (file: IReadFile): ParsedRule => {
85
58
} ;
86
59
}
87
60
} ;
88
-
89
61
interface ILabelMap {
90
62
sourceLabel : string ;
91
63
targetLabel : string ;
0 commit comments