@@ -74,149 +74,143 @@ public ModuleMetadata GetModuleMetadata(string assemblyPath)
7474 ModuleMetadata . Cmdlets = results ;
7575 return ModuleMetadata ;
7676 }
77- try
77+
78+ var assembly = Assembly . LoadFrom ( assemblyPath ) ;
79+ foreach ( var type in assembly . GetCmdletTypes ( ) )
7880 {
79- var assembly = Assembly . LoadFrom ( assemblyPath ) ;
80- foreach ( var type in assembly . GetCmdletTypes ( ) )
81+ var cmdlet = type . GetAttribute < CmdletAttribute > ( ) ;
82+ var outputs = type . GetAttributes < OutputTypeAttribute > ( ) ;
83+ var parameters = type . GetParameters ( ) ;
84+
85+ var cmdletMetadata = new CmdletMetadata
86+ {
87+ VerbName = cmdlet . VerbName ,
88+ NounName = cmdlet . NounName ,
89+ ConfirmImpact = cmdlet . ConfirmImpact ,
90+ SupportsPaging = cmdlet . SupportsPaging ,
91+ SupportsShouldProcess = cmdlet . SupportsShouldProcess ,
92+ ClassName = type . FullName ,
93+ DefaultParameterSetName = cmdlet . DefaultParameterSetName ?? "__AllParameterSets"
94+ } ;
95+
96+ if ( type . HasAttribute < AliasAttribute > ( ) )
97+ {
98+ var aliases = type . GetAttributes < AliasAttribute > ( ) ;
99+ cmdletMetadata . AliasList . AddRange (
100+ aliases . SelectMany ( a => a . AliasNames ) ) ;
101+ }
102+
103+ foreach ( var output in outputs )
81104 {
82- var cmdlet = type . GetAttribute < CmdletAttribute > ( ) ;
83- var outputs = type . GetAttributes < OutputTypeAttribute > ( ) ;
84- var parameters = type . GetParameters ( ) ;
105+ foreach ( var outputType in output . Type )
106+ {
107+ var outputMetadata = new OutputMetadata
108+ {
109+ Type = outputType . Type
110+ } ;
111+ outputMetadata . ParameterSets . AddRange ( output . ParameterSetName ) ;
112+ cmdletMetadata . OutputTypes . Add ( outputMetadata ) ;
113+ }
114+ }
115+
116+ var globalParameters = new List < Parameter > ( ) ;
117+
118+ foreach ( var parameter in parameters )
119+ {
120+ if ( string . Equals ( parameter . MemberInfo . Name , "Force" , StringComparison . OrdinalIgnoreCase ) && parameter . ParameterType == typeof ( SwitchParameter ) )
121+ {
122+ cmdletMetadata . HasForceSwitch = true ;
123+ }
85124
86- var cmdletMetadata = new CmdletMetadata
125+ var parameterData = new Models . ParameterMetadata
87126 {
88- VerbName = cmdlet . VerbName ,
89- NounName = cmdlet . NounName ,
90- ConfirmImpact = cmdlet . ConfirmImpact ,
91- SupportsPaging = cmdlet . SupportsPaging ,
92- SupportsShouldProcess = cmdlet . SupportsShouldProcess ,
93- ClassName = type . FullName ,
94- DefaultParameterSetName = cmdlet . DefaultParameterSetName ?? "__AllParameterSets"
127+ Type = parameter . ParameterType ,
128+ Name = parameter . MemberInfo . Name
95129 } ;
96130
97- if ( type . HasAttribute < AliasAttribute > ( ) )
131+ if ( parameter . HasAttribute < AliasAttribute > ( ) )
98132 {
99- var aliases = type . GetAttributes < AliasAttribute > ( ) ;
100- cmdletMetadata . AliasList . AddRange (
133+ var aliases = parameter . GetAttributes < AliasAttribute > ( ) ;
134+ parameterData . AliasList . AddRange (
101135 aliases . SelectMany ( a => a . AliasNames ) ) ;
102136 }
103137
104- foreach ( var output in outputs )
138+ if ( parameter . HasAttribute < ValidateSetAttribute > ( ) )
105139 {
106- foreach ( var outputType in output . Type )
107- {
108- var outputMetadata = new OutputMetadata
109- {
110- Type = outputType . Type
111- } ;
112- outputMetadata . ParameterSets . AddRange ( output . ParameterSetName ) ;
113- cmdletMetadata . OutputTypes . Add ( outputMetadata ) ;
114- }
140+ var validateSet = parameter . GetAttribute < ValidateSetAttribute > ( ) ;
141+ parameterData . ValidateSet . AddRange ( validateSet . ValidValues ) ;
115142 }
116143
117- var globalParameters = new List < Parameter > ( ) ;
118-
119- foreach ( var parameter in parameters )
144+ if ( parameter . HasAttribute < ValidateRangeAttribute > ( ) )
120145 {
121- if ( string . Equals ( parameter . MemberInfo . Name , "Force" , StringComparison . OrdinalIgnoreCase ) && parameter . ParameterType == typeof ( SwitchParameter ) )
122- {
123- cmdletMetadata . HasForceSwitch = true ;
124- }
146+ var validateRange = parameter . GetAttribute < ValidateRangeAttribute > ( ) ;
147+ parameterData . ValidateRangeMin = Convert . ToInt64 ( validateRange . MinRange ) ;
148+ parameterData . ValidateRangeMax = Convert . ToInt64 ( validateRange . MaxRange ) ;
149+ }
125150
126- var parameterData = new Models . ParameterMetadata
127- {
128- Type = parameter . ParameterType ,
129- Name = parameter . MemberInfo . Name
130- } ;
151+ parameterData . ValidateNotNullOrEmpty = parameter . HasAttribute < ValidateNotNullOrEmptyAttribute > ( ) ;
131152
132- if ( parameter . HasAttribute < AliasAttribute > ( ) )
133- {
134- var aliases = parameter . GetAttributes < AliasAttribute > ( ) ;
135- parameterData . AliasList . AddRange (
136- aliases . SelectMany ( a => a . AliasNames ) ) ;
137- }
153+ cmdletMetadata . Parameters . Add ( parameterData ) ;
154+
155+ foreach ( var parameterSet in parameter . GetAttributes < ParameterAttribute > ( ) )
156+ {
157+ var parameterSetMetadata =
158+ cmdletMetadata . ParameterSets . FirstOrDefault ( s => s . Name . Equals ( parameterSet . ParameterSetName ) )
159+ ?? new Models . ParameterSetMetadata
160+ {
161+ Name = parameterSet . ParameterSetName ?? "__AllParameterSets"
162+ } ;
138163
139- if ( parameter . HasAttribute < ValidateSetAttribute > ( ) )
164+ var param = new Parameter
140165 {
141- var validateSet = parameter . GetAttribute < ValidateSetAttribute > ( ) ;
142- parameterData . ValidateSet . AddRange ( validateSet . ValidValues ) ;
143- }
166+ ParameterMetadata = parameterData ,
167+ Mandatory = parameterSet . Mandatory ,
168+ Position = parameterSet . Position ,
169+ ValueFromPipeline = parameterSet . ValueFromPipeline ,
170+ ValueFromPipelineByPropertyName = parameterSet . ValueFromPipelineByPropertyName
171+ } ;
144172
145- if ( parameter . HasAttribute < ValidateRangeAttribute > ( ) )
173+ if ( parameterSet . ParameterSetName . Equals ( "__AllParameterSets" ) )
146174 {
147- var validateRange = parameter . GetAttribute < ValidateRangeAttribute > ( ) ;
148- parameterData . ValidateRangeMin = Convert . ToInt64 ( validateRange . MinRange ) ;
149- parameterData . ValidateRangeMax = Convert . ToInt64 ( validateRange . MaxRange ) ;
175+ globalParameters . Add ( param ) ;
150176 }
151177
152- parameterData . ValidateNotNullOrEmpty = parameter . HasAttribute < ValidateNotNullOrEmptyAttribute > ( ) ;
178+ parameterSetMetadata . Parameters . Add ( param ) ;
153179
154- cmdletMetadata . Parameters . Add ( parameterData ) ;
155-
156- foreach ( var parameterSet in parameter . GetAttributes < ParameterAttribute > ( ) )
180+ if ( parameterSetMetadata . Parameters . Count == 1 )
157181 {
158- var parameterSetMetadata =
159- cmdletMetadata . ParameterSets . FirstOrDefault ( s => s . Name . Equals ( parameterSet . ParameterSetName ) )
160- ?? new Models . ParameterSetMetadata
161- {
162- Name = parameterSet . ParameterSetName ?? "__AllParameterSets"
163- } ;
164-
165- var param = new Parameter
166- {
167- ParameterMetadata = parameterData ,
168- Mandatory = parameterSet . Mandatory ,
169- Position = parameterSet . Position ,
170- ValueFromPipeline = parameterSet . ValueFromPipeline ,
171- ValueFromPipelineByPropertyName = parameterSet . ValueFromPipelineByPropertyName
172- } ;
173-
174- if ( parameterSet . ParameterSetName . Equals ( "__AllParameterSets" ) )
175- {
176- globalParameters . Add ( param ) ;
177- }
178-
179- parameterSetMetadata . Parameters . Add ( param ) ;
180-
181- if ( parameterSetMetadata . Parameters . Count == 1 )
182- {
183- cmdletMetadata . ParameterSets . Add ( parameterSetMetadata ) ;
184- }
182+ cmdletMetadata . ParameterSets . Add ( parameterSetMetadata ) ;
185183 }
186184 }
185+ }
187186
188- foreach ( var parameterSet in cmdletMetadata . ParameterSets )
187+ foreach ( var parameterSet in cmdletMetadata . ParameterSets )
188+ {
189+ if ( parameterSet . Name . Equals ( "__AllParameterSets" ) )
189190 {
190- if ( parameterSet . Name . Equals ( "__AllParameterSets" ) )
191- {
192- continue ;
193- }
194-
195- foreach ( var parameter in globalParameters )
196- {
197- var param = parameterSet . Parameters . FirstOrDefault ( p => p . ParameterMetadata . Name . Equals ( parameter . ParameterMetadata . Name ) ) ;
198- if ( param == null )
199- {
200- parameterSet . Parameters . Add ( parameter ) ;
201- }
202- }
191+ continue ;
203192 }
204193
205- if ( ! cmdletMetadata . ParameterSets . Any ( p => p . Name . Equals ( cmdletMetadata . DefaultParameterSetName , StringComparison . OrdinalIgnoreCase ) ) )
194+ foreach ( var parameter in globalParameters )
206195 {
207- var defaultSet = new Models . ParameterSetMetadata
196+ var param = parameterSet . Parameters . FirstOrDefault ( p => p . ParameterMetadata . Name . Equals ( parameter . ParameterMetadata . Name ) ) ;
197+ if ( param == null )
208198 {
209- Name = cmdletMetadata . DefaultParameterSetName
210- } ;
211- cmdletMetadata . ParameterSets . Add ( defaultSet ) ;
199+ parameterSet . Parameters . Add ( parameter ) ;
200+ }
212201 }
202+ }
213203
214- results . Add ( cmdletMetadata ) ;
204+ if ( ! cmdletMetadata . ParameterSets . Any ( p => p . Name . Equals ( cmdletMetadata . DefaultParameterSetName , StringComparison . OrdinalIgnoreCase ) ) )
205+ {
206+ var defaultSet = new Models . ParameterSetMetadata
207+ {
208+ Name = cmdletMetadata . DefaultParameterSetName
209+ } ;
210+ cmdletMetadata . ParameterSets . Add ( defaultSet ) ;
215211 }
216- }
217- catch ( Exception ex )
218- {
219- throw ;
212+
213+ results . Add ( cmdletMetadata ) ;
220214 }
221215
222216 ModuleMetadata . Cmdlets = results ;
0 commit comments