From 8525917a4c326b4e8377008bb34aed597b1b23c0 Mon Sep 17 00:00:00 2001
From: Oleksii Holub <1935960+Tyrrrz@users.noreply.github.com>
Date: Sun, 28 Apr 2024 02:24:23 +0300
Subject: [PATCH 1/3] Make the GUI x-platform and adapt the CI/CD pipeline to
accommodate that (#1222)
---
.docs/Docker.md | 14 ++--
.docs/Dotnet.md | 6 +-
.docs/Getting-started.md | 7 +-
.docs/Linux.md | 32 ---------
.docs/MacOS.md | 34 ----------
.docs/Message-filters.md | 6 +-
.docs/Readme.md | 3 +-
.docs/Scheduling-Linux.md | 4 +-
.docs/Scheduling-MacOS.md | 6 +-
.docs/Scheduling-Windows.md | 3 +-
.docs/Token-and-IDs.md | 4 +-
.docs/Troubleshooting.md | 25 ++-----
.docs/Using-the-CLI.md | 68 ++++++++-----------
.github/workflows/docker.yml | 3 +-
.github/workflows/main.yml | 49 +++++++++----
.../DiscordChatExporter.Cli.csproj | 6 +-
.../DiscordChatExporter.Cli.sh | 1 -
.../DiscordChatExporter.Gui.csproj | 2 +-
.../Services/UpdateService.cs | 11 ++-
Readme.md | 60 +++-------------
20 files changed, 115 insertions(+), 229 deletions(-)
delete mode 100644 .docs/Linux.md
delete mode 100644 .docs/MacOS.md
delete mode 100644 DiscordChatExporter.Cli/DiscordChatExporter.Cli.sh
diff --git a/.docs/Docker.md b/.docs/Docker.md
index ab7486872..294e353b9 100644
--- a/.docs/Docker.md
+++ b/.docs/Docker.md
@@ -10,7 +10,7 @@ Docker distribution of DiscordChatExporter provides a way to run the app in a vi
This will download the [Docker image from the registry](https://hub.docker.com/r/tyrrrz/discordchatexporter) to your computer. You can run this command again to update when a new version is released.
```console
-docker pull tyrrrz/discordchatexporter:stable
+$ docker pull tyrrrz/discordchatexporter:stable
```
Note the `:stable` tag. DiscordChatExporter images are tagged according to the following patterns:
@@ -26,19 +26,19 @@ You can see all available tags [here](https://hub.docker.com/r/tyrrrz/discordcha
To run the CLI in Docker and render help text:
```console
-docker run --rm tyrrrz/discordchatexporter:stable
+$ docker run --rm tyrrrz/discordchatexporter:stable
```
To export a channel:
```console
-docker run --rm -v /path/on/machine:/out tyrrrz/discordchatexporter:stable export -t TOKEN -c CHANNELID
+$ docker run --rm -v /path/on/machine:/out tyrrrz/discordchatexporter:stable export -t TOKEN -c CHANNELID
```
If you want colored output and real-time progress reporting, pass the `-it` (interactive + pseudo-terminal) option:
```console
-docker run --rm -it -v /path/on/machine:/out tyrrrz/discordchatexporter:stable export -t TOKEN -c CHANNELID
+$ docker run --rm -it -v /path/on/machine:/out tyrrrz/discordchatexporter:stable export -t TOKEN -c CHANNELID
```
The `-v /path/on/machine:/out` option instructs Docker to bind the `/out` directory inside the container to a path on your host machine. Replace `/path/on/machine` with the directory you want the files to be saved at.
@@ -47,7 +47,7 @@ The `-v /path/on/machine:/out` option instructs Docker to bind the `/out` direct
> If you are running SELinux, you will need to add the `:z` option after `/out`, e.g.:
>
> ```console
-> docker run --rm -v /path/on/machine:/out:z tyrrrz/discordchatexporter:stable export -t TOKEN -c CHANNELID
+> $ docker run --rm -v /path/on/machine:/out:z tyrrrz/discordchatexporter:stable export -t TOKEN -c CHANNELID
> ```
>
> For more information, refer to the [Docker docs SELinux labels for bind mounts page](https://docs.docker.com/storage/bind-mounts/#configure-the-selinux-label).
@@ -68,8 +68,8 @@ This image was designed with a user running as uid:gid of 1000:1000.
If your current user has different IDs, and you want to generate files directly editable for your user, you might want to run the container like this:
```console
-mkdir data # or chown -R $(id -u):$(id -g) data
-docker run -it --rm -v $PWD/data:/out --user $(id -u):$(id -g) tyrrrz/discordchatexporter:stable export -t TOKEN -g CHANNELID
+$ mkdir data # or chown -R $(id -u):$(id -g) data
+$ docker run -it --rm -v $PWD/data:/out --user $(id -u):$(id -g) tyrrrz/discordchatexporter:stable export -t TOKEN -g CHANNELID
```
## Environment variables
diff --git a/.docs/Dotnet.md b/.docs/Dotnet.md
index aebf28b1c..2555d3552 100644
--- a/.docs/Dotnet.md
+++ b/.docs/Dotnet.md
@@ -43,12 +43,8 @@ For other distros, please check the _'Install on Linux'_ menu on the left of [th
You can check which version of **.NET Runtime** is installed by running the following command in a terminal:
```console
-dotnet --info
-```
-
-If the **.NET Runtime** is correctly installed, the command will output something similar to the following:
+$ dotnet --info
-```console
.NET runtimes installed:
Microsoft.NETCore.App 7.0.x [C:\path\to\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 7.0.x [C:\path\to\dotnet\shared\Microsoft.WindowsDesktop.App]
diff --git a/.docs/Getting-started.md b/.docs/Getting-started.md
index a107adada..a5e8d74ef 100644
--- a/.docs/Getting-started.md
+++ b/.docs/Getting-started.md
@@ -15,12 +15,9 @@ The information presented on this page is valid for **all** platforms.
**DCE** has two different versions:
- **Graphical User Interface** (**GUI**) - it's the preferred version for newcomers as it is easy to use.
- You can get it by [downloading](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest) the `DiscordChatExporter.zip` file.
+ You can get it by [downloading](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest) the `DiscordChatExporter.*.zip` file.
- **Command-line Interface** (**CLI**) - offers greater flexibility and more features for advanced users, such as export scheduling, ID lists, and more specific date ranges.
- You can get it by [downloading](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest) the `DiscordChatExporter.CLI.zip` file.
-
-If you're not comfortable with **Windows'** Command-line (cmd), please choose the GUI.
-[**macOS**](MacOS.md), [**Linux**](Linux.md) and [**Docker**](Docker.md) users can only use the CLI version.
+ You can get it by [downloading](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest) the `DiscordChatExporter.Cli.*.zip` file.
There are dedicated guides for each version:
diff --git a/.docs/Linux.md b/.docs/Linux.md
deleted file mode 100644
index 740b6b1ba..000000000
--- a/.docs/Linux.md
+++ /dev/null
@@ -1,32 +0,0 @@
-# Linux usage instructions
-
-## Installing .NET Runtime
-
-Please follow the [instructions provided here](Dotnet.md).
-
-## Downloading and using DiscordChatExporter.Cli
-
-1. Download [DiscordChatExporter.CLI.zip](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest) and extract it to a folder.
-2. Open Terminal.
-3. Change the working directory into the extracted folder. You can do this in Terminal by typing `cd`, then press the SPACE key, drag and drop the extracted folder into the Terminal window, and press the ENTER key.
-4. Replace `TOKEN` and `CHANNEL`, then execute this command to export:
-
-```console
-./DiscordChatExporter.Cli.sh export -t TOKEN -c CHANNEL
-```
-
-If the above command throws a "Permission denied" error, use `chmod` to fix the permissions:
-
-```console
-chmod +x DiscordChatExporter.Cli.sh
-```
-
-Alternatively, if the script doesn't work, you can run the following command to run the application directly:
-
-```console
-dotnet DiscordChatExporter.Cli.dll export -t TOKEN -c CHANNEL
-```
-
-> [How to get Token and Channel IDs](Token-and-IDs.md).
-
-There's much more you can do with DCE.CLI! Read the [CLI explained](Using-the-CLI.md) page to get started.
diff --git a/.docs/MacOS.md b/.docs/MacOS.md
deleted file mode 100644
index 56bcd522b..000000000
--- a/.docs/MacOS.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# macOS usage instructions
-
-
-
-## Installing .NET Runtime
-
-Please follow the [instructions provided here](Dotnet.md).
-
-## Downloading and using DiscordChatExporter.Cli
-
-1. Download [DiscordChatExporter.CLI.zip](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest) and extract it to a folder.
-2. Search for `Terminal.app` in Spotlight (⌘+SPACE), then open it.
-3. In the Terminal window, type `cd` , press the SPACE key, then drag and drop the extracted folder into the window, then press the RETURN key.
-4. Execute the following command to export, replacing `TOKEN` and `CHANNEL` with your own values:
-
-```console
-./DiscordChatExporter.Cli.sh export -t TOKEN -c CHANNEL
-```
-
-If the above command throws a "Permission denied" error, use `chmod` to fix the permissions:
-
-```console
-chmod +x DiscordChatExporter.Cli.sh
-```
-
-Alternatively, if the script doesn't work, you can run the following command to run the application directly:
-
-```console
-dotnet DiscordChatExporter.Cli.dll export -t TOKEN -c CHANNEL
-```
-
-> [How to get Token and Channel IDs](Token-and-IDs.md).
-
-There's much more you can do with DCE.CLI! Read the [CLI explained](Using-the-CLI.md) page to get started.
diff --git a/.docs/Message-filters.md b/.docs/Message-filters.md
index 4d917d3d6..c228aa707 100644
--- a/.docs/Message-filters.md
+++ b/.docs/Message-filters.md
@@ -89,17 +89,17 @@ from:96\-LB
In most cases, you will need to enclose your filter in quotes (`"`) to escape characters that may have special meaning in your shell:
```console
-DiscordChatExporter.Cli export [...] --filter "from:Tyrrrz has:image"
+$ ./DiscordChatExporter.Cli export [...] --filter "from:Tyrrrz has:image"
```
If you need to include quotes inside the filter itself as well, use single quotes (`'`) for those instead:
```console
-DiscordChatExporter.Cli export [...] --filter "from:Tyrrrz 'hello world'"
+$ ./DiscordChatExporter.Cli export [...] --filter "from:Tyrrrz 'hello world'"
```
Additionally, negated filters (those that start with `-`) may cause parsing issues even when enclosed in quotes. To avoid this, use the tilde (`~`) character instead of the dash (`-`):
```console
-DiscordChatExporter.Cli export [...] --filter ~from:Tyrrrz
+$ ./DiscordChatExporter.Cli export [...] --filter ~from:Tyrrrz
```
diff --git a/.docs/Readme.md b/.docs/Readme.md
index b050817c0..c26734cd1 100644
--- a/.docs/Readme.md
+++ b/.docs/Readme.md
@@ -2,8 +2,7 @@
## Installation & Usage
-- [Get .NET Core Runtime](Dotnet.md) (Required for CLI; Installed automatically for GUI; Not required in Docker)
-- [Windows](Getting-started.md#gui-or-cli) | [macOS](MacOS.md) | [Linux](Linux.md) | [Docker](Docker.md)
+- [Get .NET Runtime](Dotnet.md)
- Getting started:
- [Using the GUI](Using-the-GUI.md)
- [Using the CLI](Using-the-CLI.md)
diff --git a/.docs/Scheduling-Linux.md b/.docs/Scheduling-Linux.md
index 63a5bfc17..7d1fcbdd8 100644
--- a/.docs/Scheduling-Linux.md
+++ b/.docs/Scheduling-Linux.md
@@ -1,6 +1,6 @@
# Scheduling exports with Cron
-Make sure you already have **DiscordChatExporter.CLI** and **.NET Core** properly installed ([instructions here](Linux.md)).
+Make sure you already have **DiscordChatExporter.CLI** downloaded and **.NET Runtime** installed.
## Creating the script
@@ -45,7 +45,7 @@ fi
cd $DLLFOLDER || exit 1
# This will export your chat
-dotnet DiscordChatExporter.Cli.dll export -t $TOKEN -c $CHANNELID -f $EXPORTFORMAT -o $FILENAME.tmp
+./DiscordChatExporter.Cli export -t $TOKEN -c $CHANNELID -f $EXPORTFORMAT -o $FILENAME.tmp
# This sets the current time to a variable
CURRENTTIME=$(date +"%Y-%m-%d-%H-%M-%S")
diff --git a/.docs/Scheduling-MacOS.md b/.docs/Scheduling-MacOS.md
index f2a9a3609..b40c2d897 100644
--- a/.docs/Scheduling-MacOS.md
+++ b/.docs/Scheduling-MacOS.md
@@ -1,8 +1,6 @@
# Scheduling exports on macOS
-Scheduling on macOS is a bit tricky, but it should work if you follow the instructions accordingly.
-
-Make sure you already have **DiscordChatExporter.CLI** and **.NET Core** properly installed ([instructions here](MacOS.md)).
+Make sure you already have **DiscordChatExporter.CLI** downloaded and **.NET Runtime** installed.
## Creating the script
@@ -51,7 +49,7 @@ fi
cd $DLLFOLDER || exit 1
# This will export your chat
-dotnet DiscordChatExporter.Cli.dll export -t $TOKEN -c $CHANNELID -f $EXPORTFORMAT -o $FILENAME.tmp
+./DiscordChatExporter.Cli export -t $TOKEN -c $CHANNELID -f $EXPORTFORMAT -o $FILENAME.tmp
# This sets the current time to a variable
CURRENTTIME=$(date +"%Y-%m-%d-%H-%M-%S")
diff --git a/.docs/Scheduling-Windows.md b/.docs/Scheduling-Windows.md
index 9cfed26a9..c7a83c490 100644
--- a/.docs/Scheduling-Windows.md
+++ b/.docs/Scheduling-Windows.md
@@ -1,6 +1,7 @@
# Scheduling exports on Windows
We'll be using [DiscordChatExporter CLI](https://github.com/Tyrrrz/DiscordChatExporter/releases/latest), PowerShell, and Task Scheduler.
+Make sure you already have **DiscordChatExporter.CLI** downloaded and **.NET Runtime** installed.
## Creating the script
@@ -19,7 +20,7 @@ $EXPORTFORMAT = "formathere"
cd $EXEPATH
-.\DiscordChatExporter.Cli.exe export -t $TOKEN -c $CHANNEL -f $EXPORTFORMAT -o "$FILENAME.tmp"
+./DiscordChatExporter.Cli export -t $TOKEN -c $CHANNEL -f $EXPORTFORMAT -o "$FILENAME.tmp"
$Date = Get-Date -Format "yyyy-MM-dd-HH-mm"
diff --git a/.docs/Token-and-IDs.md b/.docs/Token-and-IDs.md
index 7dbdf15d5..9374d9ff2 100644
--- a/.docs/Token-and-IDs.md
+++ b/.docs/Token-and-IDs.md
@@ -25,7 +25,7 @@ Prerequisite step: Navigate to [discord.com](https://discord.com) and login.
3. Type
- ```console
+ ```js
(webpackChunkdiscord_app.push([[''],{},e=>{m=[];for(let c in e.c)m.push(e.c[c])}]),m).find(m=>m?.exports?.default?.getToken!==void 0).exports.default.getToken()
```
@@ -118,7 +118,7 @@ Prerequisite step: Navigate to [discord.com](https://discord.com) and login.
1. Type
- ```console
+ ```js
(webpackChunkdiscord_app.push([[''],{},e=>{m=[];for(let c in e.c)m.push(e.c[c])}]),m).find(m=>m?.exports?.default?.getToken!==void 0).exports.default.getToken()
```
diff --git a/.docs/Troubleshooting.md b/.docs/Troubleshooting.md
index 7ff700b21..079e467d6 100644
--- a/.docs/Troubleshooting.md
+++ b/.docs/Troubleshooting.md
@@ -70,14 +70,7 @@ Check the following page: [Obtaining token](Token-and-IDs.md)
### When I open DCE a black window pops up quickly or nothing shows up
-If you have [.NET Core Runtime correctly installed](Dotnet.md), you might have downloaded the CLi flavor, try [downloading the GUI](Getting-started.md#gui-or-cli) instead.
-
-### How do I run DCE on macOS or Linux?
-
-Check the following pages:
-
-- [macOS usage instructions](MacOS.md)
-- [Linux usage instructions](Linux.md)
+If you have [.NET Runtime correctly installed](Dotnet.md), you might have downloaded the CLI flavor, try [downloading the GUI](Getting-started.md#gui-or-cli) instead.
### How can I set DCE to export automatically at certain times?
@@ -133,34 +126,26 @@ Make sure you're [copying the DM Channel ID](Token-and-IDs.md#how-to-get-a-direc
## Errors
-```console
+```yml
DiscordChatExporter.Domain.Exceptions.DiscordChatExporterException: Authentication token is invalid.
-...
```
↳ Make sure the provided token is correct.
-```console
+```yml
DiscordChatExporter.Domain.Exceptions.DiscordChatExporterException: Requested resource does not exist.
```
↳ Check your channel ID, it might be invalid. [Read this if you need help](Token-and-IDs.md).
-```console
+```yml
DiscordChatExporter.Domain.Exceptions.DiscordChatExporterException: Access is forbidden.
```
↳ This means you don't have access to the channel.
-```console
-The application to execute does not exist:
-```
-
-↳ The `DiscordChatExporter.Cli.dll` file is missing. Keep the `.exe` and all the `.dll` files together. If you didn't move the files, try unzipping again.
-
-```console
+```yml
System.Net.WebException: Error: TrustFailure ... Invalid certificate received from server.
-...
```
↳ Try running cert-sync.
diff --git a/.docs/Using-the-CLI.md b/.docs/Using-the-CLI.md
index 79db0d501..457bd8bbb 100644
--- a/.docs/Using-the-CLI.md
+++ b/.docs/Using-the-CLI.md
@@ -28,22 +28,10 @@ You can also drag and drop the folder on **every platform**.
Now we're ready to run the commands. The examples on this page follow the Windows file path format, change the file
paths according to your system.
-On **Windows**, type the following command in your terminal of choice, then press ENTER to run it. This will list all available subcommands and options.
+Type the following command in your terminal of choice, then press ENTER to run it. This will list all available subcommands and options.
```console
-DiscordChatExporter.Cli.exe
-```
-
-On **macOS** and **Linux**, run the following instead:
-
-```console
-./DiscordChatExporter.Cli.sh
-```
-
-If either of the above approaches don't work for you, you can also run **DiscordChatExporter** directly like this, regardless of the platform:
-
-```console
-dotnet DiscordChatExporter.Cli.dll
+$ ./DiscordChatExporter.Cli
```
> **Docker** users, please refer to the [Docker usage instructions](Docker.md).
@@ -61,18 +49,18 @@ dotnet DiscordChatExporter.Cli.dll
| guilds | Outputs the list of accessible servers |
| guide | Explains how to obtain token, server, and channel ID |
-To use the commands, you'll need a token. For the instructions on how to get a token, please refer to [this page](Token-and-IDs.md), or run `dotnet DiscordChatExporter.Cli.dll guide`.
+To use the commands, you'll need a token. For the instructions on how to get a token, please refer to [this page](Token-and-IDs.md), or run `./DiscordChatExporter.Cli guide`.
To get help with a specific command, run:
```console
-dotnet DiscordChatExporter.Cli.dll command --help
+$ ./DiscordChatExporter.Cli command --help
```
For example, to figure out how to use the `export` command, run:
```console
-dotnet DiscordChatExporter.Cli.dll export --help
+$ ./DiscordChatExporter.Cli export --help
```
## Export a specific channel
@@ -80,7 +68,7 @@ dotnet DiscordChatExporter.Cli.dll export --help
You can quickly export with DCE's default settings by using just `-t token` and `-c channelid`.
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555
```
#### Changing the format
@@ -89,7 +77,7 @@ You can change the export format to `HtmlDark`, `HtmlLight`, `PlainText` `Json`
format is `HtmlDark`.
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -f Json
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -f Json
```
#### Changing the output filename
@@ -97,7 +85,7 @@ dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -f Json
You can change the filename by using `-o name.ext`. e.g. for the `HTML` format:
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -o myserver.html
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -o myserver.html
```
#### Changing the output directory
@@ -107,7 +95,7 @@ extension.
If any of the folders in the path have a space in its name, escape them with quotes (").
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -o "C:\Discord Exports"
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -o "C:\Discord Exports"
```
#### Changing the filename and output directory
@@ -117,7 +105,7 @@ Note that the filename must have an extension, otherwise it will be considered a
If any of the folders in the path have a space in its name, escape them with quotes (").
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -o "C:\Discord Exports\myserver.html"
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -o "C:\Discord Exports\myserver.html"
```
#### Generating the filename and output directory dynamically
@@ -125,7 +113,7 @@ dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -o "C:\Discord
You can use template tokens to generate the output file path based on the server and channel metadata.
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -o "C:\Discord Exports\%G\%T\%C.html"
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -o "C:\Discord Exports\%G\%T\%C.html"
```
Assuming you are exporting a channel named `"my-channel"` in the `"Text channels"` category from a server
@@ -152,13 +140,13 @@ You can use partitioning to split files after a given number of messages or file
For example, a channel with 36 messages set to be partitioned every 10 messages will output 4 files.
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -p 10
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -p 10
```
A 45 MB channel set to be partitioned every 20 MB will output 3 files.
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 -p 20mb
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 -p 20mb
```
#### Downloading assets
@@ -169,7 +157,7 @@ downloaded when using the plain text (TXT) export format.
A folder containing the assets will be created along with the exported chat. They must be kept together.
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --media
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --media
```
#### Reusing assets
@@ -178,7 +166,7 @@ Previously downloaded assets can be reused to skip redundant downloads as long a
same folder. Using this option can speed up future exports. This option requires the `--media` option.
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --media --reuse-media
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --media --reuse-media
```
#### Changing the media directory
@@ -187,7 +175,7 @@ By default, the media directory is created alongside the exported chat. You can
providing a path that ends with a slash. All of the exported media will be stored in this directory.
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --media --media-dir "C:\Discord Media"
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --media --media-dir "C:\Discord Media"
```
#### Changing the date format
@@ -196,7 +184,7 @@ You can customize how dates are formatted in the exported files by using `--loca
locales. The default locale is `en-US`.
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --locale "de-DE"
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --locale "de-DE"
```
#### Date ranges
@@ -205,14 +193,14 @@ dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --locale "de-DE
Use `--before` to export messages sent before the provided date. E.g. messages sent before September 18th, 2019:
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --before 2019-09-18
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --before 2019-09-18
```
**Messages sent after a date**
Use `--after` to export messages sent after the provided date. E.g. messages sent after September 17th, 2019 11:34 PM:
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --after "2019-09-17 23:34"
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --after "2019-09-17 23:34"
```
**Messages sent in a date range**
@@ -220,7 +208,7 @@ Use `--before` and `--after` to export messages sent during the provided date ra
September 17th, 2019 11:34 PM and September 18th:
```console
-dotnet DiscordChatExporter.Cli.dll export -t "mfa.Ifrn" -c 53555 --after "2019-09-17 23:34" --before "2019-09-18"
+$ ./DiscordChatExporter.Cli export -t "mfa.Ifrn" -c 53555 --after "2019-09-17 23:34" --before "2019-09-18"
```
You can try different formats like `17-SEP-2019 11:34 PM` or even refine your ranges down to
@@ -234,7 +222,7 @@ formats [here](https://docs.microsoft.com/en-us/dotnet/standard/base-types/custo
To export all channels in a specific server, use the `exportguild` command and provide the server ID through the `-g|--guild` option:
```console
-dotnet DiscordChatExporter.Cli.dll exportguild -t "mfa.Ifrn" -g 21814
+$ ./DiscordChatExporter.Cli exportguild -t "mfa.Ifrn" -g 21814
```
#### Including threads
@@ -244,7 +232,7 @@ specifying which threads should be included. It has possible values of `none`, `
threads should be included. To include both active and archived threads, use `--include-threads all`.
```console
-dotnet DiscordChatExporter.Cli.dll exportguild -t "mfa.Ifrn" -g 21814 --include-threads all
+$ ./DiscordChatExporter.Cli exportguild -t "mfa.Ifrn" -g 21814 --include-threads all
```
#### Including voice channels
@@ -254,7 +242,7 @@ specifying whether to include voice channels in the export. It has possible valu
voice channels, use `--include-vc false`.
```console
-dotnet DiscordChatExporter.Cli.dll exportguild -t "mfa.Ifrn" -g 21814 --include-vc false
+$ ./DiscordChatExporter.Cli exportguild -t "mfa.Ifrn" -g 21814 --include-vc false
```
### Export all channels
@@ -262,7 +250,7 @@ dotnet DiscordChatExporter.Cli.dll exportguild -t "mfa.Ifrn" -g 21814 --include-
To export all accessible channels, use the `exportall` command:
```console
-dotnet DiscordChatExporter.Cli.dll exportall -t "mfa.Ifrn"
+$ ./DiscordChatExporter.Cli exportall -t "mfa.Ifrn"
```
#### Excluding DMs
@@ -270,7 +258,7 @@ dotnet DiscordChatExporter.Cli.dll exportall -t "mfa.Ifrn"
To exclude DMs, add the `--include-dm false` option.
```console
-dotnet DiscordChatExporter.Cli.dll exportall -t "mfa.Ifrn" --include-dm false
+$ ./DiscordChatExporter.Cli exportall -t "mfa.Ifrn" --include-dm false
```
### List channels in a server
@@ -278,7 +266,7 @@ dotnet DiscordChatExporter.Cli.dll exportall -t "mfa.Ifrn" --include-dm false
To list the channels available in a specific server, use the `channels` command and provide the server ID through the `-g|--guild` option:
```console
-dotnet DiscordChatExporter.Cli.dll channels -t "mfa.Ifrn" -g 21814
+$ ./DiscordChatExporter.Cli channels -t "mfa.Ifrn" -g 21814
```
### List direct message channels
@@ -286,7 +274,7 @@ dotnet DiscordChatExporter.Cli.dll channels -t "mfa.Ifrn" -g 21814
To list all DM channels accessible to the current account, use the `dm` command:
```console
-dotnet DiscordChatExporter.Cli.dll dm -t "mfa.Ifrn"
+$ ./DiscordChatExporter.Cli dm -t "mfa.Ifrn"
```
### List servers
@@ -294,5 +282,5 @@ dotnet DiscordChatExporter.Cli.dll dm -t "mfa.Ifrn"
To list all servers accessible by the current account, use the `guilds` command:
```console
-dotnet DiscordChatExporter.Cli.dll guilds -t "mfa.Ifrn" > C:\path\to\output.txt
+$ ./DiscordChatExporter.Cli guilds -t "mfa.Ifrn" > C:\path\to\output.txt
```
\ No newline at end of file
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
index ceed2cf9f..d0dfaeaea 100644
--- a/.github/workflows/docker.yml
+++ b/.github/workflows/docker.yml
@@ -12,8 +12,7 @@ on:
- master
jobs:
- # Outputs from this job aren't really used, but it's here to verify that
- # the Dockerfile builds correctly on pull requests.
+ # Outputs from this job aren't really used, but it's here to verify that the Dockerfile builds correctly
pack:
runs-on: ubuntu-latest
timeout-minutes: 10
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 5d57fce79..e53568d5d 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -18,7 +18,7 @@ env:
jobs:
format:
- runs-on: windows-latest
+ runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
@@ -43,7 +43,7 @@ jobs:
# Tests need access to secrets, so we can't run them against PRs because of limited trust
if: ${{ github.event_name != 'pull_request' }}
- runs-on: windows-latest
+ runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
@@ -82,7 +82,24 @@ jobs:
app:
- DiscordChatExporter.Cli
- DiscordChatExporter.Gui
+ rid:
+ - win-arm64
+ - win-x86
+ - win-x64
+ - linux-arm
+ - linux-arm64
+ - linux-musl-x64
+ - linux-x64
+ - osx-arm64
+ - osx-x64
+ include:
+ - app: DiscordChatExporter.Cli
+ asset: DiscordChatExporter.Cli
+ - app: DiscordChatExporter.Gui
+ # GUI assets aren't suffixed, unlike the CLI assets
+ asset: DiscordChatExporter
+ # Need to run on Windows because of DotnetRuntimeBootstrapper's dependency on Ressy
runs-on: windows-latest
timeout-minutes: 10
@@ -106,12 +123,13 @@ jobs:
-p:CSharpier_Bypass=true
--output ${{ matrix.app }}/bin/publish/
--configuration Release
- --use-current-runtime
+ --runtime ${{ matrix.rid }}
+ --no-self-contained
- name: Upload artifacts
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
- name: ${{ matrix.app }}
+ name: ${{ matrix.asset }}.${{ matrix.rid }}
path: ${{ matrix.app }}/bin/publish/
if-no-files-found: error
@@ -148,11 +166,21 @@ jobs:
app:
- DiscordChatExporter.Cli
- DiscordChatExporter.Gui
+ rid:
+ - win-arm64
+ - win-x86
+ - win-x64
+ - linux-arm
+ - linux-arm64
+ - linux-musl-x64
+ - linux-x64
+ - osx-arm64
+ - osx-x64
include:
- app: DiscordChatExporter.Cli
asset: DiscordChatExporter.Cli
- app: DiscordChatExporter.Gui
- # GUI asset isn't suffixed, unlike the CLI asset
+ # GUI assets aren't suffixed, unlike the CLI assets
asset: DiscordChatExporter
runs-on: ubuntu-latest
@@ -166,25 +194,20 @@ jobs:
- name: Download artifacts
uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4.1.1
with:
- name: ${{ matrix.app }}
+ name: ${{ matrix.asset }}.${{ matrix.rid }}
path: ${{ matrix.app }}/
- - name: Configure permissions
- # Remove this when the GUI also becomes cross-platform
- if: ${{ matrix.app == 'DiscordChatExporter.Cli' }}
- run: chmod +x ${{ matrix.app }}/${{ matrix.app }}.sh
-
- name: Create package
# Change into the artifacts directory to avoid including the directory itself in the zip archive
working-directory: ${{ matrix.app }}/
- run: zip -rX ../${{ matrix.asset }}.zip .
+ run: zip -r ../${{ matrix.asset }}.${{ matrix.rid }}.zip .
- name: Upload release asset
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: >
gh release upload ${{ github.ref_name }}
- ${{ matrix.asset }}.zip
+ ${{ matrix.asset }}.${{ matrix.rid }}.zip
--repo ${{ github.event.repository.full_name }}
notify:
diff --git a/DiscordChatExporter.Cli/DiscordChatExporter.Cli.csproj b/DiscordChatExporter.Cli/DiscordChatExporter.Cli.csproj
index 95ebf1824..938f41b2f 100644
--- a/DiscordChatExporter.Cli/DiscordChatExporter.Cli.csproj
+++ b/DiscordChatExporter.Cli/DiscordChatExporter.Cli.csproj
@@ -4,16 +4,12 @@
- | Downloads | -Supported OS | -
---|---|---|
GUI | -
-
|
-
-
|
-
CLI | -
-
|
-
-
|
-