Skip to content

Commit

Permalink
feat: add new backup-chat option
Browse files Browse the repository at this point in the history
  • Loading branch information
snowyu committed Jul 18, 2024
1 parent 58992c8 commit 97039c5
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 3 deletions.
12 changes: 9 additions & 3 deletions src/lib/run-script.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ interface IRunScriptOptions {
data?: any,
apiUrl?: string,
newChat?: boolean,
backupChat?: boolean,
agentDirs?: string[],
theme?: any,
consoleClear?: boolean,
Expand Down Expand Up @@ -60,7 +61,7 @@ function findCreatedAt(messages: any[]) {
}
}
}
function renameOldFile(filename: string) {
function renameOldFile(filename: string, backupChat?: boolean) {
if (fs.existsSync(filename)) {
const content = ConfigFile.loadSync(filename)
let createdAtStr = findCreatedAt(content)
Expand All @@ -70,7 +71,12 @@ function renameOldFile(filename: string) {
const basename = path.basename(filename, extName)
// rename to history-2023-01-01T00_00_00_000Z.yaml
createdAtStr = createdAt.toISO().replace(/[:.]/g, '_')
fs.renameSync(filename, path.join(dirname, `${basename}-${createdAtStr}${extName}`))
const newFileName = path.join(dirname, `${basename}-${createdAtStr}${extName}`)
if (backupChat) {
fs.cpSync(filename, newFileName)
} else {
fs.renameSync(filename, newFileName)
}
}
}
export async function runScript(filename: string, options: IRunScriptOptions) {
Expand All @@ -95,7 +101,7 @@ export async function runScript(filename: string, options: IRunScriptOptions) {
process.exit(1)
}
const chatsFilename = script.getChatsFilename()
if (options.newChat && chatsFilename) { renameOldFile(chatsFilename) }
if ((options.newChat || options.backupChat) && chatsFilename) { renameOldFile(chatsFilename, options.backupChat) }

let isSilence = false

Expand Down
1 change: 1 addition & 0 deletions src/oclif/lib/ai-command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ export const AICommonFlags = {
interactive: Flags.boolean({char: 'i', description: 'interactive mode', allowNo: true}),
histories: Flags.directory({char: 'h', description: 'the chat histories folder to record', exists: true}),
newChat: Flags.boolean({char:'n', aliases:['new-chat'], description: 'whether to start a new chat history, defaults to false in interactive mode, true in non-interactive', allowNo: true}),
backupChat: Flags.boolean({char:'k', aliases:['backup-chat'], description: 'whether to backup chat history before start, defaults to false'}),
inputs: Flags.directory({char: 't', description: 'the input histories folder for interactive mode to record', exists: true, dependsOn: ['interactive']}),
'no-chats': Flags.boolean({description: 'disable chat histories, defaults to false'}),
'no-inputs': Flags.boolean({description: 'disable input histories, defaults to false', dependsOn: ['interactive']}),
Expand Down

0 comments on commit 97039c5

Please sign in to comment.