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.Binding;
|
||||||
using CliFx.Infrastructure;
|
using CliFx.Infrastructure;
|
||||||
using DiscordChatExporter.Cli.Commands.Base;
|
using DiscordChatExporter.Cli.Commands.Base;
|
||||||
|
using DiscordChatExporter.Cli.Utils.Extensions;
|
||||||
using DiscordChatExporter.Core.Discord;
|
using DiscordChatExporter.Core.Discord;
|
||||||
using DiscordChatExporter.Core.Discord.Data;
|
using DiscordChatExporter.Core.Discord.Data;
|
||||||
using DiscordChatExporter.Core.Utils.Extensions;
|
using DiscordChatExporter.Core.Utils.Extensions;
|
||||||
|
|
@ -33,26 +34,8 @@ public partial class ExportChannelsCommand : ExportCommandBase
|
||||||
var channelIds = new List<Snowflake>(ChannelIds);
|
var channelIds = new List<Snowflake>(ChannelIds);
|
||||||
if (channelIds.Count == 0 && console.IsInputRedirected)
|
if (channelIds.Count == 0 && console.IsInputRedirected)
|
||||||
{
|
{
|
||||||
var lineNumber = 0;
|
await foreach (var line in console.Input.ReadAllLinesAsync())
|
||||||
string? line;
|
channelIds.Add(Snowflake.Parse(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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channelIds.Count == 0)
|
if (channelIds.Count == 0)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using CliFx.Infrastructure;
|
using CliFx.Infrastructure;
|
||||||
using Spectre.Console;
|
using Spectre.Console;
|
||||||
|
|
@ -61,4 +63,15 @@ internal static class ConsoleExtensions
|
||||||
progressTask.StopTask();
|
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