mirror of
https://github.com/SerenityOS/serenity
synced 2024-11-03 03:29:38 +00:00
0e680cb17a
Abbreviating the commit message to 240 characters was not always enough. As a bonus, we now add an ellipsis to abbreviated messages.
35 lines
1.3 KiB
JavaScript
35 lines
1.3 KiB
JavaScript
const fs = require("fs");
|
|
const Twit = require("twit");
|
|
const { CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET } = process.env;
|
|
const tweetLength = 280;
|
|
// Twitter always considers t.co links to be 23 chars, see https://help.twitter.com/en/using-twitter/how-to-tweet-a-link
|
|
const twitterLinkLength = 23;
|
|
|
|
const T = new Twit({
|
|
consumer_key: CONSUMER_KEY,
|
|
consumer_secret: CONSUMER_SECRET,
|
|
access_token: ACCESS_TOKEN,
|
|
access_token_secret: ACCESS_TOKEN_SECRET,
|
|
});
|
|
|
|
(async () => {
|
|
const githubEvent = JSON.parse(fs.readFileSync(0).toString());
|
|
const tweets = [];
|
|
for (const commit of githubEvent["commits"]) {
|
|
const authorLine = `Author: ${commit["author"]["name"]}`;
|
|
const maxMessageLength = tweetLength - authorLine.length - twitterLinkLength - 2; // -2 for newlines
|
|
const commitMessage =
|
|
commit["message"].length > maxMessageLength
|
|
? commit["message"].substring(0, maxMessageLength - 2) + "…" // Ellipsis counts as 2 characters
|
|
: commit["message"];
|
|
|
|
tweets.push(`${commitMessage}\n${authorLine}\n${commit["url"]}`);
|
|
}
|
|
for (const tweet of tweets) {
|
|
try {
|
|
await T.post("statuses/update", { status: tweet });
|
|
} catch (e) {
|
|
console.error("Failed to post a tweet!", e.message);
|
|
}
|
|
}
|
|
})();
|