joschi / toot-together

:elephant: A GitHub action to toot from a repository
https://github.com/marketplace/actions/toot-together
MIT License
22 stars 3 forks source link
collaboration fediverse fediverse-bot github-action github-actions mastodon mastodon-bot

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 project. ❤️

Try it

You can submit a toot to this repository to see the magic happen. Please follow the instructions at 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.

Setup

  1. Create a Mastodon app 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 with the content below. Make sure to replace 'master' if you changed your repository's default branch.

    on: [push, pull_request]
    name: Toot, together!
    jobs:
     preview:
       name: Preview
       runs-on: ubuntu-latest
       if: github.event_name == 'pull_request'
       steps:
         - uses: joschi/toot-together@v1.x
           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/toot-together@v1.x
           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 for more information on how to contribute. You can also just say thanks 😊

Thanks to all contributors 💐

Thanks goes to these wonderful people (emoji key):

Jason Etcovitch
Jason Etcovitch

🎨 📖 💻
Erons
Erons

📖

This project follows the 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: @joschi@mastodon.social.

License

MIT