docs: 한글화 운영 적용본과 도움말 100개 작업 기록 보관
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import fs from 'node:fs';
|
||||
import crypto from 'node:crypto';
|
||||
const b='work/trilium';
|
||||
let main=fs.readFileSync(b+'/scoped/main.cjs','utf8');
|
||||
const needle='vr.init(()=>{LN.checkHiddenSubtree()})';
|
||||
if(main.split(needle).length!==2)throw Error('Startup patch point mismatch');
|
||||
const migration=`
|
||||
function triliumApplyKoreanNotes(){
|
||||
const fs=require('fs'),crypto=require('crypto');
|
||||
const filename='/home/node/trilium-data/korean-notes-pending.json';
|
||||
if(!fs.existsSync(filename))return;
|
||||
const plan=JSON.parse(fs.readFileSync(filename,'utf8'));
|
||||
if(plan.version!==1||!Array.isArray(plan.changes))throw Error('Invalid Korean migration');
|
||||
const digest=s=>crypto.createHash('sha256').update(s||'').digest('hex');
|
||||
let applied=0,unchanged=0;
|
||||
de.transactional(()=>{
|
||||
for(const change of plan.changes){
|
||||
const note=J.getNoteOrThrow(change.noteId);
|
||||
const content=note.getContent();
|
||||
if(note.title===change.title&&(!('content' in change)||content===change.content)){unchanged++;continue;}
|
||||
if(note.isDeleted||note.isProtected||note.title!==change.oldTitle)throw Error('Korean migration title conflict: '+change.noteId);
|
||||
if(change.oldContentSha256&&digest(content)!==change.oldContentSha256)throw Error('Korean migration content conflict: '+change.noteId);
|
||||
}
|
||||
for(const change of plan.changes){
|
||||
const note=J.getNoteOrThrow(change.noteId),content=note.getContent();
|
||||
if(note.title===change.title&&(!('content' in change)||content===change.content))continue;
|
||||
const revision=new Mk({noteId:note.noteId,title:note.title,type:note.type,mime:note.mime,isProtected:note.isProtected,utcDateLastEdited:note.utcDateModified,utcDateCreated:kr.utcNowDateTime(),utcDateModified:kr.utcNowDateTime(),dateLastEdited:note.dateModified,dateCreated:kr.localNowDateTime()},true);
|
||||
revision.save();revision.setContent(content);
|
||||
note.title=change.title;note.save();
|
||||
if('content' in change)note.setContent(change.content);
|
||||
applied++;
|
||||
}
|
||||
});
|
||||
fs.renameSync(filename,filename+'.applied-'+Date.now());
|
||||
console.log('KOREAN_MIGRATION '+JSON.stringify({applied,unchanged}));
|
||||
}
|
||||
`;
|
||||
main=main.replace(needle,'vr.init(()=>{LN.checkHiddenSubtree();triliumApplyKoreanNotes()})');
|
||||
main=migration+main;
|
||||
if(!main.includes('jg=`assets/v${CR.version}`'))throw Error('Asset version patch point mismatch');
|
||||
main=main.replace('jg=`assets/v${CR.version}`','jg=`assets/v${CR.version}-ko-20260905`');
|
||||
fs.writeFileSync(b+'/release/main.cjs',main);
|
||||
const sources={};
|
||||
for(const [local,remote] of [['scoped/main.cjs','patched/main.cjs'],['layout_commons.js','patched/layout_commons.js'],['translation.ko.json','i18n_ko/translation.json']])sources[remote]=crypto.createHash('sha256').update(fs.readFileSync(b+'/'+local)).digest('hex');
|
||||
fs.writeFileSync(b+'/release/source-hashes.json',JSON.stringify(sources));
|
||||
Reference in New Issue
Block a user