From ac6cad78485c31b1905f74565b7a18501520ebf4 Mon Sep 17 00:00:00 2001 From: prescientmoon Date: Tue, 11 Feb 2025 07:04:39 +0100 Subject: [PATCH] Make nix build slightly less broken --- nix/shimmeringmoon.nix | 26 +++++++++--------- src/arcaea/import_charts.rs | 11 ++++---- {config => src/arcaea}/notecounts.csv | 0 src/assets.rs | 7 +---- {assets => src/assets}/count_background.png | Bin {assets => src/assets}/diff_byd.png | Bin {assets => src/assets}/diff_etr.png | Bin {assets => src/assets}/diff_ftr.png | Bin {assets => src/assets}/diff_prs.png | Bin {assets => src/assets}/diff_pst.png | Bin {assets => src/assets}/grade_background.png | Bin {assets => src/assets}/name_background.png | Bin {assets => src/assets}/placeholder_jacket.jpg | Bin {assets => src/assets}/ptt_emblem.png | Bin {assets => src/assets}/score_background.png | Bin {assets => src/assets}/status_background.png | Bin {assets => src/assets}/top_background.png | Bin src/commands/user.rs | 2 +- src/context/db.rs | 6 ++-- src/context/hash.rs | 8 ++++++ src/context/paths.rs | 16 ----------- src/logs.rs | 2 +- src/recognition/ui.rs | 3 +- {config => src/recognition}/ui.txt | 0 24 files changed, 33 insertions(+), 48 deletions(-) rename {config => src/arcaea}/notecounts.csv (100%) rename {assets => src/assets}/count_background.png (100%) rename {assets => src/assets}/diff_byd.png (100%) rename {assets => src/assets}/diff_etr.png (100%) rename {assets => src/assets}/diff_ftr.png (100%) rename {assets => src/assets}/diff_prs.png (100%) rename {assets => src/assets}/diff_pst.png (100%) rename {assets => src/assets}/grade_background.png (100%) rename {assets => src/assets}/name_background.png (100%) rename {assets => src/assets}/placeholder_jacket.jpg (100%) rename {assets => src/assets}/ptt_emblem.png (100%) rename {assets => src/assets}/score_background.png (100%) rename {assets => src/assets}/status_background.png (100%) rename {assets => src/assets}/top_background.png (100%) rename {config => src/recognition}/ui.txt (100%) diff --git a/nix/shimmeringmoon.nix b/nix/shimmeringmoon.nix index 1503a13..9b6ed7d 100644 --- a/nix/shimmeringmoon.nix +++ b/nix/shimmeringmoon.nix @@ -1,6 +1,4 @@ { - lib, - pkg-config, makeWrapper, @@ -16,20 +14,18 @@ private-config, }: let - src = lib.cleanSource ../.; rustPlatform = makeRustPlatform { cargo = rust-toolchain; rustc = rust-toolchain; }; in rustPlatform.buildRustPackage { - inherit src; pname = "shimmeringmoon"; version = "unstable-2025-02-11"; + src = ../.; - SHIMMERING_FONTS_DIR = shimmering-fonts; + SHIMMERING_FONT_DIR = shimmering-fonts; SHIMMERING_CC_DIR = cc-data; - SHIMMERING_PRIVATE_CONFIG_DIR = private-config; nativeBuildInputs = [ pkg-config @@ -37,20 +33,16 @@ rustPlatform.buildRustPackage { makeWrapper ]; - preBuild = '' - export SHIMMERING_SOURCE_DIR="$src" - ''; - - # TODO: is this supposed to be here??? - # LD_LIBRARY_PATH = lib.makeLibraryPath buildInputs; buildInputs = [ freetype fontconfig sqlite openssl - src # Idk if putting this here is correct, but it is required at runtime... ]; + # TODO: do I need to add this + # LD_LIBRARY_PATH = lib.makeLibraryPath buildInputs; + cargoLock = { lockFile = ../Cargo.lock; outputHashes = { @@ -63,6 +55,14 @@ rustPlatform.buildRustPackage { # Disable all tests doCheck = false; + postBuild = '' + for file in $out/bin/*; do + wrapProgram $file \ + --set SHIMMERING_CC_DIR "${cc-data}" \ + --set SHIMMERING_PRIVATE_CONFIG_DIR ${private-config} + done + ''; + meta = { description = "Arcaea score management toolchain"; homepage = "https://git.moonythm.dev/prescientmoon/shimmeringmoon"; diff --git a/src/arcaea/import_charts.rs b/src/arcaea/import_charts.rs index 8a30e61..1acb0e7 100644 --- a/src/arcaea/import_charts.rs +++ b/src/arcaea/import_charts.rs @@ -21,11 +21,11 @@ struct NotecountEntry { notecount: u32, } -fn get_notecount_records(paths: &ShimmeringPaths) -> anyhow::Result> { +pub const NOTECOUNT_DATA: &[u8] = include_bytes!("notecounts.csv"); + +fn get_notecount_records() -> anyhow::Result> { let mut entries = Vec::new(); - let mut reader = csv::Reader::from_reader(std::io::BufReader::new(std::fs::File::open( - paths.notecount_path(), - )?)); + let mut reader = csv::Reader::from_reader(std::io::Cursor::new(NOTECOUNT_DATA)); for result in reader.records() { let record = result?; @@ -167,8 +167,7 @@ pub fn import_songlist( paths: &ShimmeringPaths, conn: &mut rusqlite::Connection, ) -> anyhow::Result<()> { - let notecount_records = - get_notecount_records(paths).context("Failed to read notecount records")?; + let notecount_records = get_notecount_records().context("Failed to read notecount records")?; let ptt_entries = get_ptt_entries(paths).context("Failed to read ptt entries")?; let transaction = conn.transaction()?; diff --git a/config/notecounts.csv b/src/arcaea/notecounts.csv similarity index 100% rename from config/notecounts.csv rename to src/arcaea/notecounts.csv diff --git a/src/assets.rs b/src/assets.rs index 2f04e3b..9eb86c2 100644 --- a/src/assets.rs +++ b/src/assets.rs @@ -45,12 +45,7 @@ pub static UNI_FONT: RefCell = get_font!("unifont.otf"); // {{{ Asset art helpers macro_rules! get_asset { ($name: ident, $file:expr) => { - get_asset!( - $name, - $file, - concat!(env!("SHIMMERING_SOURCE_DIR"), "/assets"), - |d: DynamicImage| d - ); + get_asset!($name, $file, "assets", |d: DynamicImage| d); }; ($name: ident, $file:expr, $dir: expr, $f:expr) => { pub static $name: LazyLock = LazyLock::new(move || { diff --git a/assets/count_background.png b/src/assets/count_background.png similarity index 100% rename from assets/count_background.png rename to src/assets/count_background.png diff --git a/assets/diff_byd.png b/src/assets/diff_byd.png similarity index 100% rename from assets/diff_byd.png rename to src/assets/diff_byd.png diff --git a/assets/diff_etr.png b/src/assets/diff_etr.png similarity index 100% rename from assets/diff_etr.png rename to src/assets/diff_etr.png diff --git a/assets/diff_ftr.png b/src/assets/diff_ftr.png similarity index 100% rename from assets/diff_ftr.png rename to src/assets/diff_ftr.png diff --git a/assets/diff_prs.png b/src/assets/diff_prs.png similarity index 100% rename from assets/diff_prs.png rename to src/assets/diff_prs.png diff --git a/assets/diff_pst.png b/src/assets/diff_pst.png similarity index 100% rename from assets/diff_pst.png rename to src/assets/diff_pst.png diff --git a/assets/grade_background.png b/src/assets/grade_background.png similarity index 100% rename from assets/grade_background.png rename to src/assets/grade_background.png diff --git a/assets/name_background.png b/src/assets/name_background.png similarity index 100% rename from assets/name_background.png rename to src/assets/name_background.png diff --git a/assets/placeholder_jacket.jpg b/src/assets/placeholder_jacket.jpg similarity index 100% rename from assets/placeholder_jacket.jpg rename to src/assets/placeholder_jacket.jpg diff --git a/assets/ptt_emblem.png b/src/assets/ptt_emblem.png similarity index 100% rename from assets/ptt_emblem.png rename to src/assets/ptt_emblem.png diff --git a/assets/score_background.png b/src/assets/score_background.png similarity index 100% rename from assets/score_background.png rename to src/assets/score_background.png diff --git a/assets/status_background.png b/src/assets/status_background.png similarity index 100% rename from assets/status_background.png rename to src/assets/status_background.png diff --git a/assets/top_background.png b/src/assets/top_background.png similarity index 100% rename from assets/top_background.png rename to src/assets/top_background.png diff --git a/src/commands/user.rs b/src/commands/user.rs index 0f74ebf..b77ddee 100644 --- a/src/commands/user.rs +++ b/src/commands/user.rs @@ -150,7 +150,7 @@ async fn friend_code_impl( ctx: &mut C, target_user: poise::serenity_prelude::User, ) -> Result<(), TaggedError> { - let user = User::from_context(ctx)?; + User::from_context(ctx)?; let target = User::by_discord_id(ctx.data(), target_user.id)?; diff --git a/src/context/db.rs b/src/context/db.rs index cdc5a2e..37a2b88 100644 --- a/src/context/db.rs +++ b/src/context/db.rs @@ -6,8 +6,8 @@ use r2d2_sqlite::SqliteConnectionManager; use rusqlite_migration::Migrations; use std::sync::LazyLock; -use crate::arcaea::import_charts::import_songlist; -use crate::context::hash::hash_files; +use crate::arcaea::import_charts::{import_songlist, NOTECOUNT_DATA}; +use crate::context::hash::{hash_bytes, hash_files}; use crate::context::paths::ShimmeringPaths; use crate::context::process_jackets::process_jackets; // }}} @@ -35,7 +35,7 @@ pub fn connect_db(paths: &ShimmeringPaths) -> anyhow::Result { let current_raw_jackets_hash = hash_files(&paths.raw_jackets_path())?; let current_songlist_hash = hash_files(&paths.songlist_path())?; let current_cc_data_hash = hash_files(&paths.cc_data_path())?; - let current_notecount_hash = hash_files(&paths.notecount_path())?; + let current_notecount_hash = hash_bytes(NOTECOUNT_DATA); let (prev_raw_jackets_hash, prev_songlist_hash, prev_cc_data_hash, prev_notecount_hash) = conn .query_row("SELECT * FROM metadata", (), |row| { diff --git a/src/context/hash.rs b/src/context/hash.rs index 24c1134..af89738 100644 --- a/src/context/hash.rs +++ b/src/context/hash.rs @@ -22,3 +22,11 @@ pub fn hash_files(path: &std::path::Path) -> anyhow::Result { let string = base16ct::lower::encode_string(&res); Ok(string) } + +pub fn hash_bytes(bytes: &[u8]) -> String { + let mut hasher = Sha256::default(); + hasher.update(bytes); + let res = hasher.finalize(); + let string = base16ct::lower::encode_string(&res); + string +} diff --git a/src/context/paths.rs b/src/context/paths.rs index e85df9f..35dce12 100644 --- a/src/context/paths.rs +++ b/src/context/paths.rs @@ -39,9 +39,6 @@ pub struct ShimmeringPaths { /// This directory contains logs and other debugging info. log_dir: PathBuf, - - /// This location the source-code resides at - source_dir: PathBuf, } impl ShimmeringPaths { @@ -52,7 +49,6 @@ impl ShimmeringPaths { data_dir: get_env_dir_path("SHIMMERING_DATA_DIR", Some("STATE_DIRECTORY"))?, log_dir: get_env_dir_path("SHIMMERING_LOG_DIR", Some("LOGS_DIRECTORY"))?, private_config_dir: get_env_dir_path("SHIMMERING_PRIVATE_CONFIG_DIR", None)?, - source_dir: PathBuf::from_str(env!("SHIMMERING_SOURCE_DIR")).unwrap(), }; Ok(res) @@ -86,18 +82,6 @@ impl ShimmeringPaths { self.private_config_dir.join("songlist.json") } - pub fn scripts_dir(&self) -> PathBuf { - self.source_dir.join("scripts") - } - - pub fn config_dir(&self) -> PathBuf { - self.source_dir.join("config") - } - - pub fn notecount_path(&self) -> PathBuf { - self.config_dir().join("notecounts.csv") - } - pub fn cc_data_path(&self) -> PathBuf { PathBuf::from_str(concat!(env!("SHIMMERING_CC_DIR"), "/ptt.json")).unwrap() } diff --git a/src/logs.rs b/src/logs.rs index 3dc37fc..7ad585d 100644 --- a/src/logs.rs +++ b/src/logs.rs @@ -21,7 +21,7 @@ fn should_save_debug_images() -> bool { #[inline] fn get_log_dir() -> PathBuf { - get_env_dir_path("SHIMMERING_LOG_DIR", "LOGS_DIRECTORY").unwrap() + get_env_dir_path("SHIMMERING_LOG_DIR", Some("LOGS_DIRECTORY")).unwrap() } #[inline] diff --git a/src/recognition/ui.rs b/src/recognition/ui.rs index 5895161..1739146 100644 --- a/src/recognition/ui.rs +++ b/src/recognition/ui.rs @@ -100,8 +100,7 @@ impl UIMeasurements { let mut measurements = Vec::new(); let mut measurement = UIMeasurement::default(); - const CONTENTS: &str = - include_str!(concat!(env!("SHIMMERING_SOURCE_DIR"), "/config/ui.txt")); + const CONTENTS: &str = include_str!("ui.txt"); // {{{ Parse measurement file for (i, line) in CONTENTS.split('\n').enumerate() { diff --git a/config/ui.txt b/src/recognition/ui.txt similarity index 100% rename from config/ui.txt rename to src/recognition/ui.txt