Skip to content

Commit 53a1aa0

Browse files
committed
fix: 修复option扫描逻辑并添加CLI的头部引用命名空间
1 parent 25c8be2 commit 53a1aa0

3 files changed

Lines changed: 33 additions & 15 deletions

File tree

ChuChartManager.CLI/Program.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
using System.Text;
2+
using ChuChartManager;
23
using ChuChartManager.CLI.Commands;
4+
using ChuChartManager.CLI.Utils;
35
using Spectre.Console.Cli;
46

57
Console.OutputEncoding = Encoding.UTF8;
8+
Console.CancelKeyPress += (_, _) => TerminalProgress.Clear();
69

710
var app = new CommandApp();
811

ChuChartManager/MusicScanner.cs

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,15 @@ public void ScanAll()
5858
if (!OptionDirRegex().IsMatch(dirName)) continue;
5959

6060
var musicDir = Path.Combine(optDir, "music");
61-
if (!Directory.Exists(musicDir)) continue;
62-
63-
var count = ScanMusicDirectory(musicDir, dirName);
61+
if (Directory.Exists(musicDir)) // 当 music 目录 存在 时
62+
{
63+
ScanMusicDirectory(musicDir, dirName); // 扫描曲目
64+
}
65+
else // 当 music 目录 不存在 时
66+
{
67+
// 即使没有 music,也注册为空的源
68+
MusicBySource[dirName] = new List<MusicXml>();
69+
}
6470
AvailableSources.Add(dirName);
6571
}
6672

@@ -72,22 +78,31 @@ private int ScanMusicDirectory(string musicDir, string assetDir)
7278
{
7379
var list = new List<MusicXml>();
7480

75-
foreach (var subDir in Directory.EnumerateDirectories(musicDir))
81+
try
7682
{
77-
var xmlPath = Path.Combine(subDir, "Music.xml");
78-
if (!File.Exists(xmlPath)) continue;
79-
80-
try
81-
{
82-
var music = MusicXml.Load(xmlPath, assetDir, "");
83-
list.Add(music);
84-
}
85-
catch (Exception ex)
83+
foreach (var subDir in Directory.EnumerateDirectories(musicDir))
8684
{
87-
Log.Error($"加载 {xmlPath} 失败", ex);
88-
Errors.Add($"加载 {xmlPath} 失败: {ex.Message}");
85+
var xmlPath = Path.Combine(subDir, "Music.xml");
86+
if (!File.Exists(xmlPath)) continue;
87+
88+
try
89+
{
90+
var music = MusicXml.Load(xmlPath, assetDir, "");
91+
list.Add(music);
92+
}
93+
catch (Exception ex)
94+
{
95+
Log.Error($"加载 {xmlPath} 失败", ex);
96+
Errors.Add($"加载 {xmlPath} 失败: {ex.Message}");
97+
}
8998
}
9099
}
100+
catch (DirectoryNotFoundException ex)
101+
{
102+
Log.Warn($"扫描时目录已被删除: {musicDir}{ex.Message}");
103+
Errors.Add($"目录访问失败: {musicDir}");
104+
return 0;
105+
}
91106

92107
if (list.Count > 0)
93108
MusicBySource[assetDir] = list;

logo-full.png

110 KB
Loading

0 commit comments

Comments
 (0)