diff options
| -rw-r--r-- | src/audio/play_queue.rs | 6 | ||||
| -rw-r--r-- | src/audio/ytdl.rs | 9 | ||||
| -rw-r--r-- | src/bot.rs | 7 | ||||
| -rw-r--r-- | src/commands/meme/create.rs | 4 | ||||
| -rw-r--r-- | src/config.rs | 18 | ||||
| -rw-r--r-- | src/game.rs | 8 |
6 files changed, 41 insertions, 11 deletions
diff --git a/src/audio/play_queue.rs b/src/audio/play_queue.rs index e2d4468..ff1c2c9 100644 --- a/src/audio/play_queue.rs +++ b/src/audio/play_queue.rs @@ -31,7 +31,7 @@ use crate::{ sound_levels::DEFAULT_VOLUME, }, Result, - CONFIG, + CONFIG, FFMPEG_COMMAND, }; const SECONDS_LEAD_TIME: f32 = 0.75; @@ -146,7 +146,7 @@ impl PlayQueue { vec! [] }; - let ffmpeg_command = process::Command::new("ffmpeg") + let ffmpeg_command = process::Command::new(&*FFMPEG_COMMAND) .arg("-i") .arg(youtube_url) .args(duration_opts) @@ -172,7 +172,7 @@ impl PlayQueue { voice::pcm(true, reader) }, Right(ref vec) => { - let transcoder = process::Command::new("ffmpeg") + let transcoder = process::Command::new(&*FFMPEG_COMMAND) .args(&[ "-format", "opus", "-i", "pipe:0", diff --git a/src/audio/ytdl.rs b/src/audio/ytdl.rs index 46f0e27..002244c 100644 --- a/src/audio/ytdl.rs +++ b/src/audio/ytdl.rs @@ -13,8 +13,13 @@ use serenity::{ VoiceError, } }; +use lazy_static::lazy_static; -use crate::Result; +use crate::{Result, CONFIG}; + +lazy_static! { + static ref YTDL_COMMAND: String = CONFIG.ytdl.clone().unwrap_or("youtube-dl".to_owned()); +} pub fn ytdl_url(uri: &str) -> Result<String> { let args = [ @@ -26,7 +31,7 @@ pub fn ytdl_url(uri: &str) -> Result<String> { uri, ]; - let out = Command::new("youtube-dl") + let out = Command::new(&*YTDL_COMMAND) .args(&args) .stdin(Stdio::null()) .output()?; @@ -1,7 +1,7 @@ use std::{ sync::Mutex, fs::File, - result::Result as StdResult, + result::Result as StdResult, path::PathBuf, str::FromStr, }; use serenity::{ @@ -97,7 +97,10 @@ lazy_static! { }; static ref RESTRICT_IDS: FnvHashSet<u64> = { - let restrict_ids = File::open("restrict.json") + let default_path = PathBuf::from_str("restrict.json").unwrap(); + let restrict_path = CONFIG.restrict.as_ref().unwrap_or(&default_path); + + let restrict_ids = File::open(restrict_path) .map_err(Error::from) .and_then(|f| serde_json::from_reader::<_, Vec<u64>>(f).map_err(Error::from)); diff --git a/src/commands/meme/create.rs b/src/commands/meme/create.rs index dce5213..06cc4ef 100644 --- a/src/commands/meme/create.rs +++ b/src/commands/meme/create.rs @@ -38,7 +38,7 @@ use crate::{ Image, NewMeme, }, - util::CtxExt, + util::CtxExt, FFMPEG_COMMAND, }; lazy_static! { @@ -124,7 +124,7 @@ pub fn addaudiomeme(ctx: &mut Context, msg: &Message, args: Args) -> Result<()> vec! [] }; - let ffmpeg_command = Command::new("ffmpeg") + let ffmpeg_command = Command::new(&*FFMPEG_COMMAND) .arg("-i") .arg(youtube_url) .args(duration_opts) diff --git a/src/config.rs b/src/config.rs index 53801b6..56e9190 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,3 +1,5 @@ +use std::path::PathBuf; + use serenity::{ model::id::{ GuildId, @@ -16,6 +18,8 @@ lazy_static! { Config::init().unwrap() }; + + pub static ref FFMPEG_COMMAND: String = CONFIG.ffmpeg.clone().unwrap_or("youtube-dl".to_owned()); } #[derive(Envconfig)] @@ -32,6 +36,18 @@ pub struct Config { #[envconfig(from = "STEAM_API_KEY")] pub steam_api_key: String, + #[envconfig(from = "FFMPEG")] + pub ffmpeg: Option<String>, + + #[envconfig(from = "YTDL")] + pub ytdl: Option<String>, + + #[envconfig(from = "USER_ID_MAPPING")] + pub user_id_mapping: Option<PathBuf>, + + #[envconfig(from = "RESTRICT")] + pub restrict: Option<PathBuf>, + pub discord: DiscordConfig, pub sheets: SheetsConfig, @@ -87,4 +103,4 @@ pub struct SheetsConfig { #[envconfig(from = "MAX_SHEET_COLUMN")] pub max_column: String, -}
\ No newline at end of file +} diff --git a/src/game.rs b/src/game.rs index 3f78fe0..27c2dd4 100644 --- a/src/game.rs +++ b/src/game.rs @@ -7,6 +7,7 @@ use std::{ self, FromStr, }, + path::PathBuf, }; use fnv::{ @@ -91,7 +92,12 @@ struct ProfileInfo { } lazy_static! { - static ref USER_MAP_STR: String = fs::read_to_string("user_id_mapping.json").unwrap(); + static ref USER_MAP_STR: String = { + let default_path = PathBuf::from_str("user_id_mapping").unwrap(); + let mapping_path = CONFIG.user_id_mapping.as_ref().unwrap_or(&default_path); + + fs::read_to_string(mapping_path).unwrap() + }; static ref USER_INFO_MAP: FnvHashMap<String, ProfileInfo> = { let v: Vec<UserInfo> = serde_json::from_str(&USER_MAP_STR).unwrap(); |
