Rebrand: Renamr -> Aurora Curator (new logo/app icon, renamed crate aurora-curator-core, package/identifier/window-title updates, README + in-app text)
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
[package]
|
||||
name = "renamr-core"
|
||||
name = "aurora-curator-core"
|
||||
version.workspace = true
|
||||
edition.workspace = true
|
||||
license.workspace = true
|
||||
description = "Renamr core: naming-expression engine, media matching, and rename engine (UI-agnostic)."
|
||||
description = "Aurora Curator core: naming-expression engine, media matching, and rename engine (UI-agnostic)."
|
||||
|
||||
[dependencies]
|
||||
# Embeddable scripting engine powering the {expression} naming-scheme language.
|
||||
@@ -1,4 +1,4 @@
|
||||
//! Renamr's naming-scheme expression language.
|
||||
//! Aurora Curator's naming-scheme expression language.
|
||||
//!
|
||||
//! A format string is literal text with `{ ... }` scriptlets spliced in, e.g.
|
||||
//! `"{n} - {s00e00} - {t}"`
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
//! Rename history: a persisted log of past rename batches (what changed, from what to
|
||||
//! what) and the ability to revert one - Renamr's only safety net beyond the
|
||||
//! what) and the ability to revert one - Aurora Curator's only safety net beyond the
|
||||
//! confirmation-before-execute step, since a plain filesystem rename has no OS-level
|
||||
//! undo. Loosely inspired by `net.filebot.HistoryDialog`/the original's rename-history
|
||||
//! log, but as a flat JSON-backed undo stack (see [`push_batch`]) rather than a full
|
||||
@@ -93,7 +93,7 @@ fn revert_one(entry: &HistoryEntry, action: RenameAction) -> RevertOutcome {
|
||||
};
|
||||
}
|
||||
|
||||
// The original's parent directory should still exist (nothing in Renamr
|
||||
// The original's parent directory should still exist (nothing in Aurora Curator
|
||||
// deletes directories), but recreate it defensively in case it was removed
|
||||
// by hand since - cheap, and `create_dir_all` is a no-op when it's already
|
||||
// there.
|
||||
@@ -175,7 +175,7 @@ mod tests {
|
||||
|
||||
fn temp_dir() -> std::path::PathBuf {
|
||||
let n = COUNTER.fetch_add(1, Ordering::SeqCst);
|
||||
let dir = std::env::temp_dir().join(format!("renamr_history_test_{}_{}", std::process::id(), n));
|
||||
let dir = std::env::temp_dir().join(format!("aurora_curator_history_test_{}_{}", std::process::id(), n));
|
||||
fs::create_dir_all(&dir).unwrap();
|
||||
dir
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
//! Renamr core: the UI-agnostic engine behind the Renamr media renamer.
|
||||
//! Aurora Curator core: the UI-agnostic engine behind the Aurora Curator media renamer.
|
||||
//!
|
||||
//! This crate has no Tauri/UI dependency so it can be built and unit-tested standalone.
|
||||
//! It's the piece being ported first from the original FileBot (Java) codebase; see
|
||||
+1
-1
@@ -175,7 +175,7 @@ pub fn guess_movie(filename: &str) -> Option<MovieGuess> {
|
||||
/// (capture/rip type), video codec, audio codec, and release group. Ports the
|
||||
/// filename-parsing half of the original FileBot's `ReleaseInfo` class - the same
|
||||
/// regex-based tag recognition `MediaBindingBean` falls back to when no real media
|
||||
/// probe (ffprobe/MediaInfo) is available, which Renamr never has, so this is the
|
||||
/// probe (ffprobe/MediaInfo) is available, which Aurora Curator never has, so this is the
|
||||
/// only source for these fields here. Deliberately independent of `guess_episode`/
|
||||
/// `guess_movie`: a release name carries these tags (or doesn't) regardless of
|
||||
/// whether it's a TV episode or a movie, so callers run this alongside whichever of
|
||||
@@ -17,7 +17,7 @@
|
||||
//! the caller a confirmation of the full plan (and let them choose both a
|
||||
//! [`RenameAction`] and a [`ConflictPolicy`]) before calling [`execute_renames`]; every
|
||||
//! batch that action actually touches a file for is also recorded to the rename-history
|
||||
//! log one layer up (`renamr_core::history`), so it can be undone from there. Undoing
|
||||
//! log one layer up (`aurora_curator_core::history`), so it can be undone from there. Undoing
|
||||
//! always uses skip-on-conflict regardless of what policy the original rename used
|
||||
//! (see `history::revert_one`) - overwriting an unrelated file as a side effect of an
|
||||
//! *undo* would be a much worse surprise than leaving it for the user to sort out by
|
||||
@@ -47,7 +47,7 @@ pub struct RenamePlanItem {
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub enum RenameAction {
|
||||
/// Renames/moves the file in place - the only action Renamr had before this. The
|
||||
/// Renames/moves the file in place - the only action Aurora Curator had before this. The
|
||||
/// source file no longer exists afterward; the item now lives at the target path.
|
||||
Move,
|
||||
/// Copies the file's contents to the target path, leaving the source untouched.
|
||||
@@ -118,7 +118,7 @@ pub struct RenameResult {
|
||||
/// no empty components (a leading, trailing, or doubled `/` - which also catches an
|
||||
/// absolute-looking `/etc/passwd`-style path, since splitting it on `/` yields a
|
||||
/// leading empty component), and no `.`/`..` components. Backslashes are rejected
|
||||
/// outright rather than treated as an alternate separator - Renamr always uses `/` for
|
||||
/// outright rather than treated as an alternate separator - Aurora Curator always uses `/` for
|
||||
/// the naming scheme's folder separator regardless of OS, so a literal `\` in a
|
||||
/// computed name is almost certainly a mistake, not an intentional Windows path.
|
||||
fn validate_relative_target(name: &str) -> Result<(), &'static str> {
|
||||
@@ -322,7 +322,7 @@ mod tests {
|
||||
/// the real filesystem. Returns (dir, file_path).
|
||||
fn temp_file_setup(file_name: &str, contents: &str) -> (std::path::PathBuf, std::path::PathBuf) {
|
||||
let n = COUNTER.fetch_add(1, Ordering::SeqCst);
|
||||
let dir = std::env::temp_dir().join(format!("renamr_rename_test_{}_{}", std::process::id(), n));
|
||||
let dir = std::env::temp_dir().join(format!("aurora_curator_rename_test_{}_{}", std::process::id(), n));
|
||||
fs::create_dir_all(&dir).unwrap();
|
||||
let file = dir.join(file_name);
|
||||
fs::write(&file, contents).unwrap();
|
||||
+1
-1
@@ -7,7 +7,7 @@
|
||||
//! rank first - TMDB ranks by relevance/popularity, not by exact name match, so a
|
||||
//! more popular but differently-named show can otherwise beat an exact-but-less-popular
|
||||
//! one straight to the top of the list. `DateMatcher` (the other half of the original
|
||||
//! `EpisodeMetrics`) is not ported - Renamr doesn't do date-based episode identification.
|
||||
//! `EpisodeMetrics`) is not ported - Aurora Curator doesn't do date-based episode identification.
|
||||
|
||||
use std::collections::HashMap;
|
||||
|
||||
@@ -37,7 +37,7 @@ struct SearchTvResponse {
|
||||
results: Vec<TvResult>,
|
||||
}
|
||||
|
||||
/// One TMDB search hit. Only the fields Renamr actually uses are kept.
|
||||
/// One TMDB search hit. Only the fields Aurora Curator actually uses are kept.
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
pub struct TvResult {
|
||||
pub id: u64,
|
||||
@@ -75,7 +75,7 @@ struct SearchMovieResponse {
|
||||
results: Vec<MovieResult>,
|
||||
}
|
||||
|
||||
/// One TMDB movie search hit. Only the fields Renamr actually uses are kept.
|
||||
/// One TMDB movie search hit. Only the fields Aurora Curator actually uses are kept.
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
pub struct MovieResult {
|
||||
pub id: u64,
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
use renamr_core::format::ExpressionFormat;
|
||||
use renamr_core::string_bindings;
|
||||
use aurora_curator_core::format::ExpressionFormat;
|
||||
use aurora_curator_core::string_bindings;
|
||||
|
||||
#[test]
|
||||
fn simple_variable_substitution() {
|
||||
Reference in New Issue
Block a user