기록 · 배치 파일 (--log-file · --write-batch · --read-batch · --only-write-batch) 의 상대 경로도 막음 (검토 대기)
관리자 지시 (10/20, 28 확인): 상대 경로면 응답 파일 임시 폴더에 생겼다가 함께 지워져 사용자가 기록을 찾지 못함 - "기록 · 배치 파일은 전체 경로로 적어 주세요". --backup-dir · --partial-dir · --temp-dir · --compare-dest 류는 받는 쪽 기준이라 그대로 (시험에 둠). 번역 en · ja · zh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>msys_args
parent
634fcbc920
commit
849c83031d
|
|
@ -820,6 +820,7 @@
|
||||||
"기기 안에서 그리려면 모델을 받아야 합니다 ({0})": "To draw on this device, download the model first ({0})",
|
"기기 안에서 그리려면 모델을 받아야 합니다 ({0})": "To draw on this device, download the model first ({0})",
|
||||||
"기기에 따라 앱 목록이 열리면, 목록에서 JJ_MKVMaker 를 찾아 켜세요.": "On some devices a list of apps opens instead - find JJ_MKVMaker in the list and turn it on.",
|
"기기에 따라 앱 목록이 열리면, 목록에서 JJ_MKVMaker 를 찾아 켜세요.": "On some devices a list of apps opens instead - find JJ_MKVMaker in the list and turn it on.",
|
||||||
"기능 버튼 줄": "Button bar",
|
"기능 버튼 줄": "Button bar",
|
||||||
|
"기록 · 배치 파일은 전체 경로로 적어 주세요: {0}": "Please write the full path of the log or batch file: {0}",
|
||||||
"기본": "Default",
|
"기본": "Default",
|
||||||
"기본 DNS": "Primary DNS",
|
"기본 DNS": "Primary DNS",
|
||||||
"기본 앱으로 열기": "Open with default app",
|
"기본 앱으로 열기": "Open with default app",
|
||||||
|
|
|
||||||
|
|
@ -820,6 +820,7 @@
|
||||||
"기기 안에서 그리려면 모델을 받아야 합니다 ({0})": "この端末で描くにはモデルのダウンロードが必要です ({0})",
|
"기기 안에서 그리려면 모델을 받아야 합니다 ({0})": "この端末で描くにはモデルのダウンロードが必要です ({0})",
|
||||||
"기기에 따라 앱 목록이 열리면, 목록에서 JJ_MKVMaker 를 찾아 켜세요.": "機器によってはアプリ一覧が開きます。その場合は一覧から JJ_MKVMaker を探してオンにしてください。",
|
"기기에 따라 앱 목록이 열리면, 목록에서 JJ_MKVMaker 를 찾아 켜세요.": "機器によってはアプリ一覧が開きます。その場合は一覧から JJ_MKVMaker を探してオンにしてください。",
|
||||||
"기능 버튼 줄": "機能ボタンの列",
|
"기능 버튼 줄": "機能ボタンの列",
|
||||||
|
"기록 · 배치 파일은 전체 경로로 적어 주세요: {0}": "ログ・バッチファイルはフルパスで書いてください: {0}",
|
||||||
"기본": "既定",
|
"기본": "既定",
|
||||||
"기본 DNS": "優先 DNS",
|
"기본 DNS": "優先 DNS",
|
||||||
"기본 앱으로 열기": "既定のアプリで開く",
|
"기본 앱으로 열기": "既定のアプリで開く",
|
||||||
|
|
|
||||||
|
|
@ -820,6 +820,7 @@
|
||||||
"기기 안에서 그리려면 모델을 받아야 합니다 ({0})": "要在本设备上绘制,需要先下载模型 ({0})",
|
"기기 안에서 그리려면 모델을 받아야 합니다 ({0})": "要在本设备上绘制,需要先下载模型 ({0})",
|
||||||
"기기에 따라 앱 목록이 열리면, 목록에서 JJ_MKVMaker 를 찾아 켜세요.": "在某些设备上会打开应用列表,请在列表中找到 JJ_MKVMaker 并开启。",
|
"기기에 따라 앱 목록이 열리면, 목록에서 JJ_MKVMaker 를 찾아 켜세요.": "在某些设备上会打开应用列表,请在列表中找到 JJ_MKVMaker 并开启。",
|
||||||
"기능 버튼 줄": "功能按钮栏",
|
"기능 버튼 줄": "功能按钮栏",
|
||||||
|
"기록 · 배치 파일은 전체 경로로 적어 주세요: {0}": "请填写日志或批处理文件的完整路径: {0}",
|
||||||
"기본": "默认",
|
"기본": "默认",
|
||||||
"기본 DNS": "首选 DNS",
|
"기본 DNS": "首选 DNS",
|
||||||
"기본 앱으로 열기": "用默认应用打开",
|
"기본 앱으로 열기": "用默认应用打开",
|
||||||
|
|
|
||||||
|
|
@ -240,9 +240,23 @@ List<String> unreadableOptions(String options, {bool? windows}) {
|
||||||
for (final f in listFileValues(parsed.words)) {
|
for (final f in listFileValues(parsed.words)) {
|
||||||
if (!_absolutePath(f)) bad.add(trf('목록 파일은 전체 경로로 적어 주세요: {0}', [f]));
|
if (!_absolutePath(f)) bad.add(trf('목록 파일은 전체 경로로 적어 주세요: {0}', [f]));
|
||||||
}
|
}
|
||||||
|
// 관리자 지시 (10/20, 28 확인): 기록 · 배치 파일도 - 상대 경로면 응답 파일 임시 폴더에 생겼다가 함께 지워져 찾을 수 없다.
|
||||||
|
// --backup-dir · --partial-dir · --temp-dir · --compare-dest 류는 받는 쪽 기준이라 그대로
|
||||||
|
for (final f in _optionValues(parsed.words, const {'--log-file', '--write-batch', '--read-batch', '--only-write-batch'})) {
|
||||||
|
if (!_absolutePath(f)) bad.add(trf('기록 · 배치 파일은 전체 경로로 적어 주세요: {0}', [f]));
|
||||||
|
}
|
||||||
return bad;
|
return bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 긴 옵션 [names] 의 값 (--이름=값 · --이름 값)
|
||||||
|
List<String> _optionValues(List<String> words, Set<String> names) => [
|
||||||
|
for (var i = 0; i < words.length; i++)
|
||||||
|
if (words[i].contains('=') && names.contains(words[i].substring(0, words[i].indexOf('='))))
|
||||||
|
words[i].substring(words[i].indexOf('=') + 1)
|
||||||
|
else if (names.contains(words[i]) && i + 1 < words.length)
|
||||||
|
words[i + 1],
|
||||||
|
];
|
||||||
|
|
||||||
/// 파일을 받는 옵션의 값 (--exclude-from · --include-from · --files-from · --filter / -f 의 ". 파일" · "merge 파일").
|
/// 파일을 받는 옵션의 값 (--exclude-from · --include-from · --files-from · --filter / -f 의 ". 파일" · "merge 파일").
|
||||||
/// ": 이름" · dir-merge 는 폴더마다 읽는 파일 이름이라 (원래 상대) 빼고
|
/// ": 이름" · dir-merge 는 폴더마다 읽는 파일 이름이라 (원래 상대) 빼고
|
||||||
List<String> listFileValues(List<String> words) {
|
List<String> listFileValues(List<String> words) {
|
||||||
|
|
|
||||||
|
|
@ -63,9 +63,16 @@ void main() {
|
||||||
'-a --filter="dir-merge .x"',
|
'-a --filter="dir-merge .x"',
|
||||||
'-a -F',
|
'-a -F',
|
||||||
'-a --exclude=list.txt',
|
'-a --exclude=list.txt',
|
||||||
|
// 받는 쪽 기준이라 그대로 (28 확인)
|
||||||
|
'-a --backup-dir=old --partial-dir=.part --temp-dir=tmp --compare-dest=../base',
|
||||||
|
r'-a --log-file=C:\logs\r.log --write-batch=/cygdrive/c/b/batch',
|
||||||
]) {
|
]) {
|
||||||
expect(unreadableOptions(o, windows: true), isEmpty, reason: o);
|
expect(unreadableOptions(o, windows: true), isEmpty, reason: o);
|
||||||
}
|
}
|
||||||
|
// 관리자 지시 (10/20, 28 확인): 기록 · 배치 파일도 전체 경로만 (상대면 응답 파일 임시 폴더에 생겼다가 함께 지워짐)
|
||||||
|
for (final o in ['-a --log-file=r.log', '-a --log-file r.log', '-a --write-batch=b', '-a --only-write-batch b', '-a --read-batch=./b']) {
|
||||||
|
expect(unreadableOptions(o, windows: true), [contains('기록 · 배치 파일은 전체 경로로 적어 주세요')], reason: o);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
group('실제 rsync', () {
|
group('실제 rsync', () {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue