From 20366f0d5551c777ab1b005046db47ec923522dd Mon Sep 17 00:00:00 2001 From: Dannii Willis Date: Sun, 17 Mar 2024 16:03:08 +1000 Subject: [PATCH] AsyncDialog: set_storyfile_dir --- src/dialog/common/interface.ts | 3 +++ src/dialog/node/async.ts | 21 ++++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/dialog/common/interface.ts b/src/dialog/common/interface.ts index b391314..8d89a4f 100644 --- a/src/dialog/common/interface.ts +++ b/src/dialog/common/interface.ts @@ -19,6 +19,7 @@ export type AutosaveData = { } export interface DialogDirectories { + storyfile: string temp: string working: string } @@ -42,6 +43,8 @@ export interface AsyncDialog { prompt(extension: string, save: boolean): Promise /** Read a file */ read(path: string): Promise + /** Set storyfile directory and return directories */ + set_storyfile_dir(path: string): DialogDirectories /** Write a file */ write(path: string, data: Uint8Array): void } diff --git a/src/dialog/node/async.ts b/src/dialog/node/async.ts index 56759d5..43a6a96 100644 --- a/src/dialog/node/async.ts +++ b/src/dialog/node/async.ts @@ -19,10 +19,18 @@ import {get_stdio, HackableReadline} from '../../glkote/cheap/stdio.js' export class CheapAsyncDialog implements AsyncDialog { 'async' = true as const + private dirs: DialogDirectories private rl: HackableReadline private stdout: MuteStream constructor() { + const cwd = process.cwd() + this.dirs = { + storyfile: cwd, + temp: os.tmpdir(), + working: cwd, + } + const cheap_stdio = get_stdio() this.rl = cheap_stdio.rl this.stdout = cheap_stdio.stdout @@ -49,11 +57,8 @@ export class CheapAsyncDialog implements AsyncDialog { } } - get_dirs(): DialogDirectories { - return { - temp: os.tmpdir(), - working: process.cwd(), - } + get_dirs() { + return this.dirs } prompt(extension: string, _save: boolean): Promise { @@ -74,6 +79,12 @@ export class CheapAsyncDialog implements AsyncDialog { } } + set_storyfile_dir(path: string) { + this.dirs.storyfile = path + this.dirs.working = path + return this.dirs + } + write(path: string, data: Uint8Array) { fs.writeFileSync(path, data, {flush: true}) }