aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/audio/play_queue.rs6
-rw-r--r--src/audio/ytdl.rs9
-rw-r--r--src/bot.rs7
-rw-r--r--src/commands/meme/create.rs4
-rw-r--r--src/config.rs18
-rw-r--r--src/game.rs8
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()?;
diff --git a/src/bot.rs b/src/bot.rs
index 23e67c1..f74d581 100644
--- a/src/bot.rs
+++ b/src/bot.rs
@@ -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();