mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
|
|
||
|
import { CommandRuntime, CommandDeclaration } from '@joplin/lib/services/CommandService';
|
||
|
import { _ } from '@joplin/lib/locale';
|
||
|
import shim from '@joplin/lib/shim';
|
||
|
import Setting from '@joplin/lib/models/Setting';
|
||
|
import bridge from '../services/bridge';
|
||
|
import { formatMsToLocal } from '@joplin/utils/time';
|
||
|
|
||
|
export const declaration: CommandDeclaration = {
|
||
|
name: 'exportDeletionLog',
|
||
|
label: () => _('Export deletion log'),
|
||
|
};
|
||
|
|
||
|
const getDeletionLines = async (filePath: string) => {
|
||
|
const logFile: string = await shim.fsDriver().readFile(`${Setting.value('profileDir')}/${filePath}`);
|
||
|
|
||
|
const deletionLines = logFile
|
||
|
.split('\n')
|
||
|
.filter(line => line.includes('DeleteAction'));
|
||
|
|
||
|
if (!deletionLines.length) return '';
|
||
|
|
||
|
return `${deletionLines.join('\n')}\n`;
|
||
|
};
|
||
|
|
||
|
export const runtime = (): CommandRuntime => {
|
||
|
return {
|
||
|
execute: async () => {
|
||
|
const files = await shim.fsDriver().readDirStats(Setting.value('profileDir'));
|
||
|
// Get all log.txt and log-{timestamp}.txt files but ignore deletion_log.txt
|
||
|
const logFiles = files.filter(f => f.path.match(/^log(-\d+)?\.txt$/gi));
|
||
|
|
||
|
const lastOneAndCurrent = logFiles.sort().slice(logFiles.length - 2);
|
||
|
|
||
|
let allDeletionLines = '';
|
||
|
for (const file of lastOneAndCurrent) {
|
||
|
|
||
|
const deletionLines = await getDeletionLines(file.path);
|
||
|
|
||
|
allDeletionLines += deletionLines;
|
||
|
}
|
||
|
|
||
|
const fileName = `deletion_log_${formatMsToLocal(Date.now(), 'YYYYMMDD')}.txt`;
|
||
|
|
||
|
const deletionLogPath = `${Setting.value('profileDir')}/${fileName}`;
|
||
|
|
||
|
await shim.fsDriver().writeFile(deletionLogPath, allDeletionLines, 'utf8');
|
||
|
|
||
|
await bridge().openItem(deletionLogPath);
|
||
|
},
|
||
|
};
|
||
|
};
|