44from utils .config import Config
55from utils .plane import PlaneEnum
66from utils .readme_helper import parse_readme_file
7+ from utils .exceptions import InvalidAPIUsage , VerificationError
78from ps .model import PSModuleConfig
89from swagger .controller .specs_manager import SwaggerSpecsManager
9- from swagger .model .specs import SwaggerModule
1010from command .controller .specs_manager import AAZSpecsManager
1111from swagger .model .specs import OpenAPIResourceProvider
1212from swagger .utils .tools import resolve_path_to_uri
@@ -36,10 +36,10 @@ def swagger_specs(self):
3636 def _find_module_folder (self ):
3737 powershell_folder = Config .POWERSHELL_PATH
3838 if not os .path .exists (powershell_folder ) or not os .path .isdir (powershell_folder ):
39- raise ValueError (f"Invalid PowerShell folder: '{ powershell_folder } '" )
39+ raise VerificationError (f"Invalid PowerShell folder: '{ powershell_folder } '" )
4040 module_folder = os .path .join (powershell_folder , "src" )
4141 if not os .path .exists (module_folder ):
42- raise ValueError (f"Invalid PowerShell folder: cannot find modules in: '{ module_folder } '" )
42+ raise VerificationError (f"Invalid PowerShell folder: cannot find modules in: '{ module_folder } '" )
4343 return module_folder
4444
4545 def list_modules (self ):
@@ -67,7 +67,7 @@ def load_module(self, module_names):
6767 module_names = module_names .split ('/' )
6868 folder = os .path .join (self .folder , * module_names )
6969 if not os .path .exists (folder ):
70- raise ValueError (f"Module folder not found: '{ folder } '" )
70+ raise VerificationError (f"Module folder not found: '{ folder } '" )
7171 config = self .load_module_config (module_names )
7272 return config
7373
@@ -77,7 +77,7 @@ def load_autorest_config(self, module_names):
7777 folder = os .path .join (self .folder , * module_names )
7878 readme_file = os .path .join (folder , "README.md" )
7979 if not os .path .exists (readme_file ):
80- raise ValueError (f"README.md not found in: '{ readme_file } '" )
80+ raise VerificationError (f"README.md not found in: '{ readme_file } '" )
8181 content = parse_readme_file (readme_file )
8282 return content ['config' ], content ['title' ]
8383
@@ -92,15 +92,15 @@ def load_module_config(self, module_names):
9292 config .name = "/" .join (module_names )
9393 config .folder = self .folder
9494 if not autorest_config :
95- raise ValueError (f"autorest config not found in README.md for module: { config .name } " )
95+ raise VerificationError (f"autorest config not found in README.md for module: { config .name } " )
9696
9797 # config.swagger = autorest_config
9898 repo = autorest_config .get ('repo' , "https://github.com/Azure/azure-rest-api-specs/blob/$(commit)" )
9999 if commit := autorest_config .get ('commit' ):
100100 repo = repo .replace ("$(commit)" , commit )
101101 if "$(commit)" in repo :
102102 # make sure the repo is valid https link or valid folder path
103- raise ValueError (f"commit is not defined in autorest config for module: { config .name } " )
103+ raise VerificationError (f"commit is not defined in autorest config for module: { config .name } " )
104104 config .repo = repo
105105
106106 readme_file = None
@@ -124,7 +124,7 @@ def load_module_config(self, module_names):
124124 readme_file = resolve_path_to_uri (readme_file )
125125 break
126126 if not readme_file :
127- raise ValueError (f"swagger readme.md not defined in autorest config for module: { config .name } " )
127+ raise VerificationError (f"swagger readme.md not defined in autorest config for module: { config .name } " )
128128
129129 # use the local swagger specs to find the resource provider even the repo is in remote
130130 # we can always suppose the local swagger specs will always be newer than the used commit in submitted azure.powershell code
@@ -144,7 +144,7 @@ def load_module_config(self, module_names):
144144 if rp :
145145 break
146146 if not rp :
147- raise ValueError (f"Resource provider not found in autorest config for module: { config .name } " )
147+ raise VerificationError (f"Resource provider not found in autorest config for module: { config .name } " )
148148 config .rp = rp
149149 config .swagger = str (rp )
150150
@@ -153,11 +153,22 @@ def load_module_config(self, module_names):
153153 if input_files := autorest_config .get ('input-file' ):
154154 config .input_files = []
155155 for input_file in input_files :
156- if input_file .startswith ('$(repo)/' ):
157- input_file = input_file .replace ('$(repo)/' , '' )
158- config .input_files .append (input_file )
156+ if '/specification/' in input_file :
157+ file_path = input_file .split ('/specification/' )[1 ]
158+ file_path = os .path .join (self .swagger_specs .specs .spec_folder_path , * file_path .split ('/' ))
159+ if not os .path .exists (file_path ):
160+ raise VerificationError (f"Input file not found for module: { config .name } , input file: { file_path } " )
161+ config .input_files .append (file_path )
159162 if not config .input_files and not config .tag :
163+ # using the tag from swagger readme config
160164 config .tag = readme_config .get ('tag' , None )
165+ if config .tag and config .tag not in rp .tags :
166+ raise VerificationError (f"Tag not found in resource provider for module: { config .name } with tag: { config .tag } " )
167+ if not config .input_files and config .tag :
168+ config .input_files = list (rp .tags [config .tag ])
169+
170+ if not config .input_files :
171+ raise VerificationError (f"Input file not found in autorest config for module: { config .name } " )
161172
162173 if readme_title .startswith ("Az." ):
163174 config .service_name = readme_title .split ("." )[1 ]
@@ -168,6 +179,7 @@ def load_module_config(self, module_names):
168179 config .title = readme_config .get ('title' , None )
169180
170181 if not config .title :
171- raise ValueError (f"Title not found in autorest config or swagger readme for module: { config .name } " )
182+ # TODO: get title from swagger json file
183+ raise VerificationError (f"Title not found in autorest config or swagger readme for module: { config .name } " )
172184
173185 return config
0 commit comments