clear-wallet/CI/index.ts
2024-10-13 14:22:38 +03:00

130 lines
3.8 KiB
TypeScript

import { YupAPI } from 'yup-api-interact'
import { FCHubUtils } from 'farcaster-hub-utils'
const args = Bun.argv.slice(2);
const secrets = args[0]
const event = args[1]
const action = args[2]
type TGithubEvent = {
inputs: {
version: string
fconly: boolean
},
forced: boolean,
repository: {
name: string,
full_name: string,
html_url: string,
description: string
},
head_commit: {
id: string,
message: string,
timestamp: string,
url: string,
author: {
name: string,
email: string,
username: string
},
committer: {
name: string,
email: string,
username: string
}
}
}
const main = async () => {
const ENABLED = true;
let YUP_PK = '';
let FC_SIGNER = ''
let HUB_URL = ''
let HUB_USER = ''
let HUB_PASS = ''
let GithubEvent: TGithubEvent = {} as TGithubEvent;
const USER_FID = 709233;
console.log('Anouncement enabled status: ', '[ ', ENABLED, ' ]');
try {
const parsedSecrets = JSON.parse(secrets);
YUP_PK = parsedSecrets.YUP_PK;
FC_SIGNER = parsedSecrets.FC_SIGNER;
HUB_URL = parsedSecrets.HUB_URL;
HUB_USER = parsedSecrets.HUB_USER;
HUB_PASS = parsedSecrets.HUB_PASS;
GithubEvent = JSON.parse(event);
} catch (e) {
console.error('Error parsing data', e)
}
const yupAPI = new YupAPI({ PK: YUP_PK });
const fchubUtils = new FCHubUtils(FC_SIGNER, USER_FID, HUB_URL, HUB_USER, HUB_PASS);
if (action === 'update') {
const VERSION = GithubEvent.inputs.version;
const FCONLY = GithubEvent.inputs.fconly;
const message = `Clear Wallet - New version ${VERSION} released! \n
- ChromeStore: https://bit.ly/clw-evm \n
- ChangeLog: https://bit.ly/clw-cl \n
- Submited by @andrei0x309 \n`
if (ENABLED) {
if (!FCONLY) {
await yupAPI.sendPost({
content: message,
platforms: ['twitter', 'threads', 'bsky', 'lens']
})
}
const fcPost = await fchubUtils.createFarcasterPost({
content: message,
})
const fcPostHash = Buffer.from(fcPost).toString('hex');
if (fcPostHash) {
await new Promise((resolve) => setTimeout(resolve, 3000));
const launchCasterMessage = `@launch`
await fchubUtils.createFarcasterPost({
content: launchCasterMessage, replyTo: {
hash: fcPostHash,
fid: String(USER_FID)
}
})
}
} else {
console.log('No action required')
}
} else if (action === 'push') {
if (ENABLED && !GithubEvent.forced && GithubEvent?.head_commit?.message.includes('chore:') && !GithubEvent?.head_commit?.message.includes('!')) {
const commiter = GithubEvent?.head_commit?.author.username || GithubEvent?.head_commit?.committer?.username || ''
const message = `Github ClearWallet new repo commit!\n
- ChromeStore: https://bit.ly/clw-evm \n
- Docs: https://clear-wallet.flashsoft.eu \n
- Commit: ${GithubEvent.head_commit.url} \n
${commiter ? `- Commiter: @${commiter}` : ''}
`;
await yupAPI.sendPost({
content: message,
platforms: ['twitter', 'threads', 'bsky', 'lens', 'mastodon']
})
await fchubUtils.createFarcasterPost({
content: message,
})
} else {
console.log('No action required')
}
}
console.log('Workflow executed successfully');
}
main().catch(console.error);