import { projectDirectoryPath, projectFilePath } from './project-path';
import type { ProjectStorageProvider } from './types';

export const DEFAULT_LEARNITIVE_MAIN_TEX = String.raw`\documentclass{article}

\title{Untitled Document}
\author{Author Name}
\date{\today}

\begin{document}
\maketitle

\section{Introduction}
Start writing here.

\end{document}
`;

export type InitializeBlankLearnitiveProjectResult =
  | { created: true; rootFile: 'main.tex' }
  | { created: false; rootFile: undefined };

/**
 * Initializes a newly-created empty workspace as a real LaTeX project.
 * Existing folders are never modified: Native FS can point at an existing
 * project, so an existing entry is treated as authoritative user content.
 */
export async function initializeBlankLearnitiveProject(
  provider: ProjectStorageProvider,
  signal?: AbortSignal,
): Promise<InitializeBlankLearnitiveProjectResult> {
  const existing = await provider.listEntries(signal);
  if (existing.length > 0) {
    return { created: false, rootFile: undefined };
  }

  await provider.createDirectory(projectDirectoryPath('figures/'), signal);
  await provider.writeFile(
    projectFilePath('main.tex'),
    new TextEncoder().encode(DEFAULT_LEARNITIVE_MAIN_TEX),
    signal,
  );
  return { created: true, rootFile: 'main.tex' };
}
