mirror of
https://github.com/Tyrrrz/DiscordChatExporter.git
synced 2026-04-04 03:23:05 -06:00
Simplify stdin reading: use ReadAllLinesAsync extension and Snowflake.Parse
Agent-Logs-Url: https://github.com/Tyrrrz/DiscordChatExporter/sessions/59c1113d-3c9c-4900-a9b0-5c6116ce7c75 Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com>
This commit is contained in:
parent
1087173fef
commit
316e8c6ea8
|
|
@ -4,6 +4,7 @@ using CliFx;
|
|||
using CliFx.Binding;
|
||||
using CliFx.Infrastructure;
|
||||
using DiscordChatExporter.Cli.Commands.Base;
|
||||
using DiscordChatExporter.Cli.Utils.Extensions;
|
||||
using DiscordChatExporter.Core.Discord;
|
||||
using DiscordChatExporter.Core.Discord.Data;
|
||||
using DiscordChatExporter.Core.Utils.Extensions;
|
||||
|
|
@ -33,26 +34,8 @@ public partial class ExportChannelsCommand : ExportCommandBase
|
|||
var channelIds = new List<Snowflake>(ChannelIds);
|
||||
if (channelIds.Count == 0 && console.IsInputRedirected)
|
||||
{
|
||||
var lineNumber = 0;
|
||||
string? line;
|
||||
while ((line = await console.Input.ReadLineAsync()) is not null)
|
||||
{
|
||||
lineNumber++;
|
||||
line = line.Trim();
|
||||
if (string.IsNullOrEmpty(line))
|
||||
continue;
|
||||
|
||||
var snowflake = Snowflake.TryParse(line);
|
||||
if (snowflake is null)
|
||||
{
|
||||
throw new CommandException(
|
||||
$"Invalid channel ID on line {lineNumber}: '{line}'. "
|
||||
+ "Each line must contain a valid channel ID."
|
||||
);
|
||||
}
|
||||
|
||||
channelIds.Add(snowflake.Value);
|
||||
}
|
||||
await foreach (var line in console.Input.ReadAllLinesAsync())
|
||||
channelIds.Add(Snowflake.Parse(line));
|
||||
}
|
||||
|
||||
if (channelIds.Count == 0)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
using CliFx.Infrastructure;
|
||||
using Spectre.Console;
|
||||
|
|
@ -61,4 +63,15 @@ internal static class ConsoleExtensions
|
|||
progressTask.StopTask();
|
||||
}
|
||||
}
|
||||
|
||||
public static async IAsyncEnumerable<string> ReadAllLinesAsync(this TextReader reader)
|
||||
{
|
||||
string? line;
|
||||
while ((line = await reader.ReadLineAsync()) is not null)
|
||||
{
|
||||
line = line.Trim();
|
||||
if (!string.IsNullOrEmpty(line))
|
||||
yield return line;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue