refactor: 迁移至 bashly CLI 与功能域模块结构

- CLI 定义迁移至 src/bashly.yml(bashly 1.4 生成参数解析),入口收敛为 src/root_command.sh
- 源码按功能域重组:config/storage/integrate/media/pipeline,消除扁平散落
- 新增零依赖测试框架 tests/(123 用例)与 CI 流水线(lint + test + build + 产物一致性)
- build.sh 支持版本单一来源注入与 --check 产物校验;新增 lint.sh(bash -n + shellcheck 零容忍)
- 删除旧单文件 media_organizer.sh 与旧扁平模块
This commit is contained in:
Shuery committed 2026-08-14 22:41:28 +08:00
1 parent d978a13a83
commit 0df07ad0ae
48 files changed
+5813 -6812

No files matched your search

+53
View File
@@ -0,0 +1,53 @@
# ============================================================================
# 特典命名模块测试(src/lib/ai_resolve.sh)
# ============================================================================
setup() {
FOLDER_MOVIES="/media/Movies"
FOLDER_SHOWS="/media/Shows"
FOLDER_UNKNOWN="/media/Unknown"
}
# special_category_tag:特典类别识别
test_special_category_tag_mapping() {
assert_eq "Menu" "$(special_category_tag "Menu01")"
assert_eq "NCED" "$(special_category_tag "NCED02")"
assert_eq "NCOP" "$(special_category_tag "NCOP")"
assert_eq "CM" "$(special_category_tag "CM01")"
assert_eq "CM" "$(special_category_tag "TVSP")"
assert_eq "PV" "$(special_category_tag "Announcement")"
assert_eq "ED" "$(special_category_tag "Lyric")"
assert_eq "Picture Drama" "$(special_category_tag "Drama")"
assert_eq "Music Video" "$(special_category_tag "MV")"
assert_eq "Special" "$(special_category_tag "OVA")"
assert_eq "Special" "$(special_category_tag "未知词")"
}
# special_s00_dest:S00 目标路径(show_dir 含年份段,由 NAMING_SHOW 渲染)
test_special_s00_dest_path() {
# 参数:show_dir + fragment + ext
assert_eq "/media/Shows/Show (2020)/Season 00|S00Menu - Menu01.mkv" \
"$(special_s00_dest "Show (2020)" "Menu01" "mkv")"
assert_eq "/media/Shows/Show/Season 00|S00Special - SP.mkv" \
"$(special_s00_dest "Show" "SP" "mkv")"
}
# fallback_naming:电影回退命名
test_fallback_naming_movie() {
assert_eq "/media/Movies/Movie (2020)|Movie (2020).mkv" \
"$(fallback_naming "movie" "Movie" "2020" "" "" "" "" "mkv")"
}
# fallback_naming:剧集回退命名
test_fallback_naming_tv() {
assert_eq "/media/Shows/Show/Season 01|S01E02.mkv" \
"$(fallback_naming "tv" "Show" "" "1" "2" "" "" "mkv")"
assert_eq "/media/Shows/Show (2021)/Season 02|S02E03-E04.mkv" \
"$(fallback_naming "tv" "Show" "2021" "2" "3" "4" "" "mkv")"
}
# fallback_naming:特典回退命名(走 special_s00_dest)
test_fallback_naming_special() {
assert_eq "/media/Shows/Show/Season 00|S00CM - CM01.mkv" \
"$(fallback_naming "tv" "Show" "" "0" "1" "" "CM01" "mkv")"
}