2121
2222from typing import Any
2323from sonar import utilities as util
24+ from sonar .util import constants as c
2425from sonar .util import common_json_helper
2526
2627
@@ -29,11 +30,41 @@ def convert_portfolio_json(old_json: dict[str, Any]) -> dict[str, Any]:
2930 new_json = common_json_helper .convert_common_fields (old_json .copy ())
3031 if "projects" in new_json :
3132 new_json ["projects" ] = common_json_helper .convert_common_fields (new_json ["projects" ])
33+ if "manual" in new_json ["projects" ]:
34+ projs = {}
35+ for k , v in new_json ["projects" ]["manual" ].items ():
36+ projs [k ] = {"key" : k , "branches" : sorted (["" if e == c .DEFAULT_BRANCH else e for e in util .csv_to_list (v )])}
37+ if projs [k ]["branches" ] == ["" ]:
38+ projs [k ].pop ("branches" , None )
39+ new_json ["projectSelection" ] = {"manual" : new_json ["projects" ]}
40+ new_json ["projectSelection" ]["manual" ] = util .dict_to_list (projs , "key" , "branches" )
41+ elif "regexp" in new_json ["projects" ]:
42+ new_json ["projectSelection" ] = "regexp"
43+ new_json ["projectSelection" ] = {"regexp" : new_json ["projects" ]["regexp" ]}
44+ if new_json ["projects" ].get ("branch" , c .DEFAULT_BRANCH ) != c .DEFAULT_BRANCH :
45+ new_json ["projectSelection" ]["branch" ] = new_json ["projects" ]["branch" ]
46+ elif "tags" in new_json ["projects" ]:
47+ new_json ["projectSelection" ] = {"tags" : new_json ["projects" ]["tags" ]}
48+ if new_json ["projects" ].get ("branch" , c .DEFAULT_BRANCH ) != c .DEFAULT_BRANCH :
49+ new_json ["projectSelection" ]["branch" ] = new_json ["projects" ]["branch" ]
50+ elif "rest" in new_json ["projects" ]:
51+ new_json ["projectSelection" ] = {"rest" : True }
52+ if new_json ["projects" ].get ("branch" , c .DEFAULT_BRANCH ) != c .DEFAULT_BRANCH :
53+ new_json ["projectSelection" ]["branch" ] = new_json ["projects" ]["branch" ]
54+ new_json .pop ("projects" )
55+ if "applications" in new_json :
56+ for k , v in new_json ["applications" ].items ():
57+ new_json ["applications" ][k ] = {"key" : k , "branches" : sorted (["" if e == c .DEFAULT_BRANCH else e for e in util .csv_to_list (v )])}
58+ if new_json ["applications" ][k ]["branches" ] == ["" ]:
59+ new_json ["applications" ][k ].pop ("branches" , None )
60+ new_json ["applications" ] = util .dict_to_list (new_json ["applications" ], "key" , "branches" )
61+
3262 for key in "children" , "portfolios" :
3363 if key in new_json :
3464 new_json [key ] = convert_portfolios_json (new_json [key ])
3565 if "branches" in old_json :
3666 new_json ["branches" ] = util .dict_to_list (old_json ["branches" ], "name" )
67+ new_json = util .order_keys (new_json , "key" , "name" , "visibility" , "projectSelection" , "applications" , "portfolios" , "permissions" )
3768 return new_json
3869
3970
0 commit comments