Skip to content
← Public packages

@danj/hey-email

HEY.com email for Kody: search threads, read messages, download PDF attachments, and write drafts. Sending is barred until you allow it.

scripts/check-sending-policy.mjs

32 lines · 1.1 KB · JavaScript
Raw
import { execFileSync } from 'node:child_process'
import { SENDING } from '../src/config.js'

const baseRef = process.env.SENDING_BASE_REF || 'origin/main'

async function baseSending() {
  let source
  try {
    source = execFileSync('git', ['show', `${baseRef}:src/config.js`], {
      encoding: 'utf8',
      stdio: ['ignore', 'pipe', 'pipe'],
    })
  } catch (error) {
    if (/does not exist in|exists on disk, but not in/.test(String(error.stderr))) return undefined
    console.error(`sending-gate: cannot read src/config.js at ${baseRef}`)
    console.error(String(error.stderr).trim())
    process.exit(1)
  }
  const config = await import(`data:text/javascript,${encodeURIComponent(source)}`)
  return config.SENDING
}

const base = await baseSending()
const summary = `SENDING=${JSON.stringify(SENDING)}, ${baseRef} has ${JSON.stringify(base)}`

// Only the owner turns sending on, on main. A branch may inherit 'allowed' from main.
if (SENDING === 'allowed' && base !== 'allowed') {
  console.error(`sending-gate: this branch turns sending on. ${summary}`)
  process.exit(1)
}

console.log(`sending-gate: ${summary}`)