Files
crossfade/lib/utils/paths.ts
T

56 lines
1.6 KiB
TypeScript

import path from 'path';
import fs from 'fs-extra';
// The watch folder is in the project root, which is the parent of the 'src' directory.
// process.cwd() in Next.js usually points to the project root (where package.json is).
// If package.json is in 'src', then process.cwd() is 'src'.
// Let's assume the structure:
// /Project
// /src (Next.js app)
// /watch
export const WATCH_DIR_NAME = 'watch';
export const SPECTROGRAMS_DIR_NAME = 'spectrograms';
export function getWatchPath(): string {
if (process.env.WATCH_DIR) {
return process.env.WATCH_DIR;
}
// We assume the app is running from 'src' or the root containing 'src'.
// If process.cwd() is .../Crossfade/src, then watch is ../watch
// If process.cwd() is .../Crossfade, then watch is ./watch
const cwd = process.cwd();
if (cwd.endsWith('src')) {
return path.join(cwd, '..', WATCH_DIR_NAME);
}
return path.join(cwd, WATCH_DIR_NAME);
}
export function getSpectrogramsPath(): string {
const cwd = process.cwd();
if (cwd.endsWith('src')) {
return path.join(cwd, '..', SPECTROGRAMS_DIR_NAME);
}
return path.join(cwd, SPECTROGRAMS_DIR_NAME);
}
export async function ensureWatchDir() {
const watchPath = getWatchPath();
await fs.ensureDir(watchPath);
return watchPath;
}
export async function ensureSpectrogramsDir() {
const specPath = getSpectrogramsPath();
await fs.ensureDir(specPath);
return specPath;
}
export function getOutputDir(): string | null {
const outputDir = process.env.OUTPUT_DIR;
if (!outputDir) return null;
return outputDir;
}