mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 12:22:44 +00:00 
			
		
		
		
	 0e680cb17a
			
		
	
	
		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);
 | |
|         }
 | |
|     }
 | |
| })();
 |