Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/joschi/toot-together

:elephant: A GitHub action to toot from a repository
https://github.com/joschi/toot-together

collaboration fediverse fediverse-bot github-action github-actions mastodon mastodon-bot

Last synced: 3 months ago
JSON representation

:elephant: A GitHub action to toot from a repository

Awesome Lists containing this project

README

        


Toot together logo

Toot, together! 🐘


Build Status
Coverage

For Open Source or event maintainers that share a project Mastodon account, `toot-together` is a GitHub Action that utilizes text files to publish toots from a GitHub repository. Rather than posting your toots directly, GitHub’s pull request review process encourages more collaboration, Mastodon activity and editorial contributions by enabling everyone to submit toot drafts to a project.


Screencast demonstrating toot-together

`toot-together` is based on the amazing work of the [`twitter-together`](https://github.com/gr2m/twitter-together) project. ❤️

- [Try it](#try-it)
- [Setup](#setup)
- [Contribute](#contribute)
- [How it works](#how-it-works)
- [The `push` event](#the-push-event)
- [The `pull_request` event](#the-pull_request-event)
- [Motivation](#motivation)
- [License](#license)

## Try it

You can submit a toot to this repository to see the magic happen. Please follow the instructions at [toots/README.md](toots/README.md) and mention your own Mastodon username in the toot. This repository has been set up to send toots via [https://social.tchncs.de/@commit2toot](https://social.tchncs.de/@commit2toot).

## Setup

1. [Create a Mastodon app](docs/01-create-mastodon-app.md) for your shared Mastodon account and store the credentials as `MASTODON_ACCESS_TOKEN` in your repository’s secrets settings.
2. [Create a `.github/workflows/toot-together.yml` file](docs/02-create-toot-together-workflow.md) with the content below. Make sure to replace `'master'` if you changed your repository's default branch.

```yml
on: [push, pull_request]
name: Toot, together!
jobs:
preview:
name: Preview
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
steps:
- uses: joschi/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
toot:
name: Toot
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
steps:
- name: checkout master
uses: actions/checkout@v2
- name: Toot
uses: joschi/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# URL to the instance hosting your Mastodon account
MASTODON_URL: https://www.mastodon.example/
MASTODON_ACCESS_TOKEN: ${{ secrets.MASTODON_ACCESS_TOKEN }}
```

3. After creating or updating `.github/workflows/toot-together.yml` in your repository’s default branch, a pull request will be created with further instructions.

Happy collaborative tooting! 🐘

## Contribute

All contributions welcome!

Especially if you try `toot-together` for the first time, I’d love to hear if you ran into any trouble. I greatly appreciate any documentation improvements to make things more clear, I am not a native English speaker myself.

See [CONTRIBUTING.md](CONTRIBUTING.md) for more information on how to contribute. You can also [just say thanks](https://github.com/joschi/toot-together/issues/new?labels=feature&template=04_thanks.md) 😊

## Thanks to all contributors 💐

Thanks goes to these wonderful people ([emoji key](https://github.com/all-contributors/all-contributors#emoji-key)):

Jason Etcovitch
Jason Etcovitch

🎨 📖 💻Erons
Erons

📖

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!

## How it works

`toot-together` is using two workflows

1. `push` event to publish new toots
2. `pull_request` event to validate and preview new toots

### The `push` event

When triggered by the `push` event, the script looks for added `*.toot` files in the `toots/` folder or subfolders. If there are any, a toot for each added `*.toot` file is published.

If there is no `toots/` subfolder, the script opens a pull request creating the folder with further instructions.

### The `pull_request` event

For the `pull_request` event, the script handles only `opened` and `synchronize` actions. It looks for new `*.toot` files in the `toots/` folder or subfolders. If there are any, the length of each toot is validated. If one is too long, a failed check run with an explanation is created. If all toots are valid, a check run with a preview of all toots is created.

## Motivation

I think we can make Open Source more inclusive to people with more diverse interests by making it easier to contribute other things than code and documentation. I see a particularly big opportunity to be more welcoming towards editorial contributions by creating tools using GitHub’s Actions, Apps and custom user interfaces backed by GitHub’s REST & GraphQL APIs.

I’ve plenty more ideas that I’d like to build out. Please ping me on Mastodon if you’d like to chat: [@[email protected]](https://mastodon.social/@joschi).

## License

[MIT](LICENSE)