artifacts.ts 862 B

123456789101112131415161718192021222324252627282930313233343536
  1. import { randomBytes } from 'node:crypto';
  2. import fs = require('node:fs/promises');
  3. import path = require('node:path');
  4. const IS_CI = !!process.env.CI;
  5. const ARTIFACT_DIR = path.join(__dirname, '..', 'artifacts');
  6. async function ensureArtifactDir (): Promise<void> {
  7. if (!IS_CI) {
  8. return;
  9. }
  10. await fs.mkdir(ARTIFACT_DIR, { recursive: true });
  11. }
  12. export async function createArtifact (
  13. fileName: string,
  14. data: Buffer
  15. ): Promise<void> {
  16. if (!IS_CI) {
  17. return;
  18. }
  19. await ensureArtifactDir();
  20. await fs.writeFile(path.join(ARTIFACT_DIR, fileName), data);
  21. }
  22. export async function createArtifactWithRandomId (
  23. makeFileName: (id: string) => string,
  24. data: Buffer
  25. ): Promise<string> {
  26. const randomId = randomBytes(12).toString('hex');
  27. const fileName = makeFileName(randomId);
  28. await createArtifact(fileName, data);
  29. return fileName;
  30. }