@@ -228,24 +228,28 @@ private void OnPluginsCommand()
228
228
{
229
229
try
230
230
{
231
- var plugins = GetPluginListAsync ( ) . GetAwaiter ( ) . GetResult ( ) ;
232
- if ( plugins == null ) return ;
233
- plugins
234
- . Order ( )
235
- . ForEach ( f =>
231
+ var plugins = GetPluginListAsync ( ) . GetAwaiter ( ) . GetResult ( ) ? . ToArray ( ) ?? [ ] ;
232
+ var installedPlugins = Plugin . Plugins . ToList ( ) ;
233
+
234
+ var maxLength = installedPlugins . Count == 0 ? 0 : installedPlugins . Max ( s => s . Name . Length ) ;
235
+ if ( plugins . Length > 0 )
236
236
{
237
- var installedPlugin = Plugin . Plugins . SingleOrDefault ( pp => string . Equals ( pp . Name , f , StringComparison . CurrentCultureIgnoreCase ) ) ;
238
- if ( installedPlugin != null )
237
+ maxLength = Math . Max ( maxLength , plugins . Max ( s => s . Length ) ) ;
238
+ }
239
+
240
+ plugins . Select ( s => ( name : s , installedPlugin : Plugin . Plugins . SingleOrDefault ( pp => string . Equals ( pp . Name , s , StringComparison . InvariantCultureIgnoreCase ) ) ) )
241
+ . Concat ( installedPlugins . Select ( u => ( name : u . Name , installedPlugin : ( Plugin ? ) u ) ) . Where ( u => ! plugins . Contains ( u . name , StringComparer . InvariantCultureIgnoreCase ) ) )
242
+ . OrderBy ( u => u . name )
243
+ . ForEach ( ( f ) =>
239
244
{
240
- var maxLength = plugins . Select ( s => s . Length ) . OrderDescending ( ) . First ( ) ;
241
- string tabs = string . Empty ;
242
- if ( f . Length < maxLength )
243
- tabs = "\t " ;
244
- ConsoleHelper . Info ( "" , $ "[Installed]\t { f , 6 } { tabs } ", " @" , $ "{ installedPlugin . Version . ToString ( 3 ) } { installedPlugin . Description } ") ;
245
- }
246
- else
247
- ConsoleHelper . Info ( $ "[Not Installed]\t { f } ") ;
248
- } ) ;
245
+ if ( f . installedPlugin != null )
246
+ {
247
+ var tabs = f . name . Length < maxLength ? "\t " : string . Empty ;
248
+ ConsoleHelper . Info ( "" , $ "[Installed]\t { f . name , 6 } { tabs } ", " @" , $ "{ f . installedPlugin . Version . ToString ( 3 ) } { f . installedPlugin . Description } ") ;
249
+ }
250
+ else
251
+ ConsoleHelper . Info ( $ "[Not Installed]\t { f . name } ") ;
252
+ } ) ;
249
253
}
250
254
catch ( Exception ex )
251
255
{
0 commit comments