private static async Task <int> OnExecuteAsync(Options options) { if (!options.ListKeys && !options.Sign && !options.VerifySignature) { throw new Exception(Resources.ValidCommandAction); } GpgOutputHelper.FileDescriptor = options.StatusFileDescriptor; try { int result = 1; if (options.ListKeys) { result = await ListKeysAction.Do().ConfigureAwait(false); } if (options.Sign) { result = await SignAction.Do(options.FileNames.FirstOrDefault(), options.LocalUser, options.GetTimestampAuthorityUri(), options.DetachedSign, options.Armor, options.IncludeOption).ConfigureAwait(false); } if (options.VerifySignature) { result = VerifyAction.Do(options.FileNames.ToArray()); } if (result == 1) { throw new Exception(Resources.ValidCommandAction); } return(result); } catch (SignClientException ex) { InfoOutputHelper.WriteLine(ex.ToString()); TelemetryHelper.Client?.TrackException(ex); } catch (Exception ex) { InfoOutputHelper.WriteLine(ex.ToString()); // Don't pass the exception in the generic case, due to it might contain personal information. TelemetryHelper.Client?.TrackTrace(ex.GetType().FullName, SeverityLevel.Critical); } return(1); }
private static async Task <int> OnExecuteAsync(Options options) { if (!options.ListKeys && !options.Sign && !options.VerifySignature) { throw new Exception(Resources.ValidCommandAction); } GpgOutputHelper.FileDescriptor = options.StatusFileDescriptor; try { int result = 1; if (options.ListKeys) { result = await ListKeysAction.Do().ConfigureAwait(false); } if (options.Sign) { result = await SignAction.Do(options.FileNames.FirstOrDefault(), options.LocalUser, options.GetTimestampAuthorityUri(), options.DetachedSign, options.Armor, options.IncludeOption).ConfigureAwait(false); } if (options.VerifySignature) { result = VerifyAction.Do(options.FileNames.ToArray()); } if (result == 1) { throw new Exception(Resources.ValidCommandAction); } return(result); } catch (SignClientException ex) { InfoOutputHelper.WriteLine(ex.ToString()); } catch (Exception ex) { InfoOutputHelper.WriteLine(ex.ToString()); } return(1); }