@@ -65,6 +65,7 @@ internal sealed class SearchCommand : AsyncCommand<SearchCommandSettings>, IDisp
6565 public SearchCommand ( )
6666 {
6767 Config = new SearchConfig ( ) ;
68+
6869 // Config = (SearchConfig) cfg;
6970 Client = new SearchClient ( Config ) ;
7071
@@ -78,7 +79,7 @@ public SearchCommand()
7879 Query = SearchQuery . Null ;
7980 }
8081
81- #region
82+ #region
8283
8384 private async Task SetupSearchAsync ( ProgressContext ctx )
8485 {
@@ -96,8 +97,6 @@ private async Task SetupSearchAsync(ProgressContext ctx)
9697 if ( url == null ) {
9798 throw new SmartImageException ( ) ; //todo
9899 }
99-
100- AConsole . WriteLine ( $ "{ url } ") ;
101100
102101 p . Increment ( COMPLETE / 2 ) ;
103102 }
@@ -141,7 +140,8 @@ private async Task RunSearchAsync(ProgressContext c)
141140 }
142141
143142 await search ;
144- Debug . WriteLine ( $ "{ nameof ( RunSearchAsync ) } complete") ;
143+
144+ // Debug.WriteLine($"{nameof(RunSearchAsync)} complete");
145145
146146 return ;
147147
@@ -183,7 +183,8 @@ public override async Task<int> ExecuteAsync(CommandContext context, SearchComma
183183 break ;
184184
185185 case OutputFileFormat . Delimited :
186- run = run . ContinueWith ( WriteOutputFileAsync , m_cts . Token , TaskContinuationOptions . OnlyOnRanToCompletion ,
186+ run = run . ContinueWith ( WriteOutputFileAsync , m_cts . Token ,
187+ TaskContinuationOptions . OnlyOnRanToCompletion ,
187188 TaskScheduler . Default ) ;
188189 break ;
189190
@@ -193,12 +194,7 @@ public override async Task<int> ExecuteAsync(CommandContext context, SearchComma
193194
194195 }
195196
196- try {
197- await run ;
198- }
199- catch ( TaskCanceledException e ) {
200- Debugger . Break ( ) ;
201- }
197+ await run ;
202198
203199 return EC_OK ;
204200 }
@@ -216,6 +212,18 @@ private async Task WriteOutputFileAsync([CBN] object o)
216212 var res = m_results . ToArray ( ) ;
217213 var fields = m_scs . OutputFields ;
218214
215+ bool fName = fields . HasFlag ( OutputFields . Name ) ;
216+ var fUrl = fields . HasFlag ( OutputFields . Url ) ;
217+ var fSim = fields . HasFlag ( OutputFields . Similarity ) ;
218+ var fArtist = fields . HasFlag ( OutputFields . Artist ) ;
219+ var fSite = fields . HasFlag ( OutputFields . Site ) ;
220+
221+ var names = Enum . GetValues < OutputFields > ( )
222+ . Where ( f => fields . HasFlag ( f ) && ! f . Equals ( default ( OutputFields ) ) )
223+ . Select ( f => Enum . GetName ( f ) ) ;
224+
225+ sw . WriteLine ( String . Join ( m_scs . OutputFileDelimiter , names ) ) ;
226+
219227 for ( int i = 0 ; i < res . Length ; i ++ ) {
220228 var sr = res [ i ] ;
221229
@@ -224,18 +232,26 @@ private async Task WriteOutputFileAsync([CBN] object o)
224232
225233 var rg = new List < string > ( ) ;
226234
227- if ( fields . HasFlag ( OutputFields . Name ) ) {
235+ if ( fName ) {
228236 rg . Add ( $ "{ sr . Engine . Name } #{ j + 1 } ") ;
229237 }
230238
231- if ( fields . HasFlag ( OutputFields . Url ) ) {
239+ if ( fUrl ) {
232240 rg . Add ( sri . Url ) ;
233241 }
234242
235- if ( fields . HasFlag ( OutputFields . Similarity ) ) {
243+ if ( fSim ) {
236244 rg . Add ( $ "{ sri . Similarity } ") ;
237245 }
238246
247+ if ( fArtist ) {
248+ rg . Add ( $ "{ sri . Artist } ") ;
249+ }
250+
251+ if ( fSite ) {
252+ rg . Add ( $ "{ sri . Site } ") ;
253+ }
254+
239255 // string[] items = [$"{sr.Engine.Name} #{j + 1}", sri.Url?.ToString()];
240256 sw . WriteLine ( String . Join ( m_scs . OutputFileDelimiter , rg ) ) ;
241257 }
@@ -317,7 +333,8 @@ private Grid CreateInfoGrid()
317333 [ R1 . S_AutoSearch ] = Config . AutoSearch ,
318334 [ R1 . S_ReadCookies ] = Config . ReadCookies ,
319335
320- [ "Input" ] = Query
336+ [ "Input" ] = Query ,
337+ [ "Upload" ] = Query . Upload
321338 } ;
322339
323340 foreach ( var o in kv ) {
0 commit comments