This commit introduces a new command `borg collect discord import` to import and archive Discord server exports. The command processes a JSON export from tools like DiscordChatExporter, converts the messages into Markdown files organized by channel, downloads all attachments to create a self-contained archive, and generates a searchable `INDEX.json` file. Key features: - Parses DiscordChatExporter JSON format. - Converts chat logs to Markdown, preserving metadata. - Downloads and localizes all message attachments. - Creates a searchable `INDEX.json`. - Sanitizes server and channel names to prevent path traversal. Co-authored-by: Snider <631881+Snider@users.noreply.github.com>
2.5 KiB
CLI Usage
borg is a command-line tool for collecting repositories, websites, and PWAs into portable data artifacts (DataNodes) or Terminal Isolation Matrices.
Use borg --help and borg <command> --help to see all flags.
Top-level
borg --helpborg --version
Commands
collect
Collect and package inputs.
Subcommands:
borg collect github repo <repo-url> [--output <file>] [--format datanode|tim|trix] [--compression none|gz|xz]borg collect github release <release-url> [--output <file>]borg collect github repos <org-or-user> [--output <file>] [--format ...] [--compression ...]borg collect website <url> [--depth N] [--output <file>] [--format ...] [--compression ...]borg collect pwa --uri <url> [--output <file>] [--format ...] [--compression ...]borg collect discord import <path/to/export.json>
Examples:
borg collect discord import ./discord-export/export.jsonborg collect github repo https://github.com/Snider/Borg --output borg.datborg collect website https://example.com --depth 1 --output site.datborg collect pwa --uri https://squoosh.app --output squoosh.dat
all
Collect all public repositories from a GitHub user or organization.
borg all <url> [--output <file>]
Example:
borg all https://github.com/Snider --output snider.dat
compile
Compile a Borgfile into a Terminal Isolation Matrix (TIM).
borg compile [--file <Borgfile>] [--output <file>]
Example:
borg compile --file Borgfile --output a.tim
run
Execute a Terminal Isolation Matrix (TIM).
borg run <tim-file>
Example:
borg run a.tim
serve
Serve a packaged DataNode or TIM via a static file server.
borg serve <file> [--port 8080]
Examples:
borg serve squoosh.dat --port 8888borg serve borg.tim --port 9999
decode
Decode a .trix or .tim file back into a DataNode (.dat).
borg decode <file> [--output <file>] [--password <password>]
Examples:
borg decode borg.trix --output borg.dat --password "secret"borg decode borg.tim --output borg.dat --i-am-in-isolation
Compression
All collect commands accept --compression with values:
none(default)gzxz
Output filenames gain the appropriate extension automatically.
Formats
Borg supports three output formats via the --format flag:
datanode: A simple tarball containing the collected resources. (Default)tim: Terminal Isolation Matrix, a runc-compatible bundle.trix: Encrypted and structured file format.