snapshot of https://github.com/tldraw/tldraw.git (main, 2026-09-23; blobs > 131072B omitted)
Some checks failed
Deploy analytics worker / Deploy analytics worker to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
i18n upload strings / Upload latest strings (push) Failing after 1s
Deploy bemo / Deploy bemo to ${{ (github.ref == 'refs/heads/bemo-production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
Deploy grafana resources / ${{ github.event_name == 'push' && 'Deploy grafana resources' || 'Validate grafana resources (dry run)' }} (push) Failing after 0s
End to end tests (dotcom) / Check for relevant changes (push) Failing after 0s
End to end tests (examples) / Check for relevant changes (push) Failing after 0s
End to end tests (mermaid readability) / Check for relevant changes (push) Failing after 1s
End to end tests (perf) / Check for relevant changes (push) Failing after 0s
Publish editor extensions / Publish editor extensions (push) Failing after 1s
Publish SDK packages / Remove the publish-packages label (push) Has been skipped
Checks / Tests & checks (push) Has been cancelled
Checks / Build all projects (push) Has been cancelled
Deploy templates / Deploy templates (push) Has been cancelled
End to end tests (dotcom) / End to end tests (dotcom) (push) Has been cancelled
End to end tests (mermaid readability) / End to end tests (mermaid readability) (push) Has been cancelled
End to end tests (perf) / End to end tests (perf) (push) Has been cancelled
Deploy .com / Deploy dotcom to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Has been cancelled
End to end tests (examples) / End to end tests (examples) (push) Has been cancelled
Publish SDK packages / Publish SDK packages (push) Has been cancelled
Publish SDK packages / Tell user released version (push) Has been cancelled
Publish SDK packages / Publishes code templates to separate repositories (push) Has been cancelled
Publish SDK packages / Deploys the template demos with the new SDK version (push) Has been cancelled
Some checks failed
Deploy analytics worker / Deploy analytics worker to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
i18n upload strings / Upload latest strings (push) Failing after 1s
Deploy bemo / Deploy bemo to ${{ (github.ref == 'refs/heads/bemo-production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
Deploy grafana resources / ${{ github.event_name == 'push' && 'Deploy grafana resources' || 'Validate grafana resources (dry run)' }} (push) Failing after 0s
End to end tests (dotcom) / Check for relevant changes (push) Failing after 0s
End to end tests (examples) / Check for relevant changes (push) Failing after 0s
End to end tests (mermaid readability) / Check for relevant changes (push) Failing after 1s
End to end tests (perf) / Check for relevant changes (push) Failing after 0s
Publish editor extensions / Publish editor extensions (push) Failing after 1s
Publish SDK packages / Remove the publish-packages label (push) Has been skipped
Checks / Tests & checks (push) Has been cancelled
Checks / Build all projects (push) Has been cancelled
Deploy templates / Deploy templates (push) Has been cancelled
End to end tests (dotcom) / End to end tests (dotcom) (push) Has been cancelled
End to end tests (mermaid readability) / End to end tests (mermaid readability) (push) Has been cancelled
End to end tests (perf) / End to end tests (perf) (push) Has been cancelled
Deploy .com / Deploy dotcom to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Has been cancelled
End to end tests (examples) / End to end tests (examples) (push) Has been cancelled
Publish SDK packages / Publish SDK packages (push) Has been cancelled
Publish SDK packages / Tell user released version (push) Has been cancelled
Publish SDK packages / Publishes code templates to separate repositories (push) Has been cancelled
Publish SDK packages / Deploys the template demos with the new SDK version (push) Has been cancelled
This commit is contained in:
76
internal/scripts/lib/exec.ts
Normal file
76
internal/scripts/lib/exec.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
import { execFile } from 'child_process'
|
||||
import { nicelog } from './nicelog'
|
||||
|
||||
interface ExecOpts {
|
||||
pwd?: string
|
||||
processStdoutLine?(line: string): void
|
||||
processStderrLine?(line: string): void
|
||||
env?: Partial<NodeJS.ProcessEnv>
|
||||
}
|
||||
|
||||
export function prefixOutput(prefix: string) {
|
||||
return {
|
||||
processStdoutLine: (line: string) => process.stdout.write(`${prefix}${line}\n`),
|
||||
processStderrLine: (line: string) => process.stderr.write(`${prefix}${line}\n`),
|
||||
}
|
||||
}
|
||||
|
||||
export async function exec(
|
||||
command: string,
|
||||
args: (string | null)[],
|
||||
{
|
||||
pwd = process.cwd(),
|
||||
processStdoutLine = (line) => process.stdout.write(`${line}\n`),
|
||||
processStderrLine = (line) => process.stderr.write(`${line}\n`),
|
||||
env,
|
||||
}: ExecOpts = {}
|
||||
): Promise<string> {
|
||||
nicelog(`> $ ${command} ${args.join(' ')} (in ${pwd}))`)
|
||||
return new Promise((resolve, reject) => {
|
||||
const data: string[] = []
|
||||
|
||||
const childProcess = execFile(
|
||||
command,
|
||||
args.filter((arg): arg is string => !!arg),
|
||||
{ cwd: pwd, env: { ...process.env, ...env } },
|
||||
(err) => {
|
||||
if (err) reject(err)
|
||||
else resolve(data.join(''))
|
||||
}
|
||||
)
|
||||
|
||||
let pendingStdoutLine = ''
|
||||
childProcess.stdout!.on('data', (chunk) => {
|
||||
const chunkString: string = chunk.toString('utf-8')
|
||||
data.push(chunkString)
|
||||
|
||||
const lines = chunkString.split('\n')
|
||||
lines[0] = pendingStdoutLine + lines[0]
|
||||
pendingStdoutLine = lines.pop() ?? ''
|
||||
|
||||
for (const line of lines) {
|
||||
processStdoutLine(line)
|
||||
}
|
||||
})
|
||||
childProcess.stdout!.on('close', () => {
|
||||
processStdoutLine(pendingStdoutLine)
|
||||
})
|
||||
|
||||
let pendingStderrLine = ''
|
||||
childProcess.stderr!.on('data', (chunk) => {
|
||||
const chunkString: string = chunk.toString('utf-8')
|
||||
data.push(chunkString)
|
||||
|
||||
const lines = chunkString.split('\n')
|
||||
lines[0] = pendingStderrLine + lines[0]
|
||||
pendingStderrLine = lines.pop() ?? ''
|
||||
|
||||
for (const line of lines) {
|
||||
processStderrLine(line)
|
||||
}
|
||||
})
|
||||
childProcess.stderr!.on('close', () => {
|
||||
processStderrLine(pendingStderrLine)
|
||||
})
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user