diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..233032f --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,20 @@ +image: golang:latest + +stages: + - test + - build + +format: + stage: test + script: + - go fmt $(go list ./... | grep -v /vendor/) + - go vet $(go list ./... | grep -v /vendor/) + +build: + stage: build + script: + - go build + artifacts: + paths: + - fediresolve + expire_in: 1 week diff --git a/README.md b/README.md index 1721057..44143a2 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,32 @@ # FediResolve -FediResolve is a command-line tool for resolving and displaying Fediverse content. It can parse and display ActivityPub content from various Fediverse platforms including Mastodon, Mbin, Lemmy, PeerTube, and others. +FediResolve is a command-line tool for resolving and displaying Fediverse content. + +It can parse and display ActivityPub content from various Fediverse platforms including Mastodon, Mbin, Lemmy, PeerTube, and others. For easy reading or debugging purposes. + +~ Vibe coded within 2 hours. ## Features - Resolve Fediverse URLs to their ActivityPub representation - Resolve Fediverse handles (e.g., @username@domain.tld) - Display both the full JSON data and a human-readable summary -- Support for various ActivityPub types (Person, Note, Article, Create, Announce, etc.) +- Support for various ActivityPub types (Person, Page, Note, Article, etc.) - Automatic resolution of shared/forwarded content to the original source +![Demo of FediResolve](./demo-fediresolve.png) + +## Download + +[FediResolve for Linux](https://gitlab.melroy.org/melroy/fediresolve/-/releases) + ## Installation +Either download the prebuild binary from [releases](https://gitlab.melroy.org/melroy/fediresolve/-/releases) or build from source, see below. + ### Prerequisites -- Go 1.16 or later +- Go 1.21 or later ### Building from source @@ -39,26 +51,31 @@ go build ## Examples +### Resolving a Mbin thread + +```bash +./fediresolve https://kbin.melroy.org/m/til/t/875629/Context7-Up-to-date-documentation-for-LLMs-and-AI-code-editors +``` + ### Resolving a Mastodon post ```bash -./fediresolve https://mastodon.social/@Gargron/12345 +./fediresolve https://mastodon.melroy.org/@melroy/114297155915355913 ``` ### Resolving a user profile ```bash -./fediresolve @Gargron@mastodon.social +./fediresolve @melroy@melroy.org ``` ## How it works FediResolve uses the following process to resolve Fediverse content: -1. For handles (@username@domain.tld), it uses the WebFinger protocol to discover the ActivityPub actor URL -2. For URLs, it attempts to fetch the ActivityPub representation directly -3. It checks if the content is shared/forwarded and resolves to the original source if needed -4. It parses the ActivityPub JSON and displays both the raw data and a formatted summary +1. For handles (`@username@domain.tld`), it uses the WebFinger protocol to discover the ActivityPub actor URL +2. For URLs, it attempts to fetch the ActivityPub representation directly. Or if the content is needs to be resolved from another Fediverse instance. +3. Content is parsed and displays both the raw JSON object and a nice looking summary. ## License diff --git a/demo-fediresolve.png b/demo-fediresolve.png new file mode 100644 index 0000000..32a3a23 Binary files /dev/null and b/demo-fediresolve.png differ