Make paths configurable via environment variables

- Replace hardcoded paths with INPUT_DIR and OUTPUT_DIR env vars
- Add sensible generic defaults if env vars not set
- Update service example with all environment variables
- Document environment variables in README
- Makes codebase more portable and configuration-driven
This commit is contained in:
RTSDA 2025-08-16 19:09:21 -04:00
parent 6bf2eb38aa
commit a7206fa325
3 changed files with 18 additions and 5 deletions

View file

@ -53,9 +53,9 @@ cp deploy.sh.example deploy.sh
### Environment Variables
- `INPUT_DIR`: Directory to monitor for new MP4 files (default: `/home/user/livestreams`)
- `OUTPUT_DIR`: Local output directory for processed files (default: `/media/archive/livestreams`)
- `PC_SYNC_TARGET`: Remote sync destination (e.g., `user@server:/path/to/destination/`)
- `INPUT_DIR`: Directory to monitor for new files
- `OUTPUT_DIR`: Local output directory for processed files
### Service Configuration

View file

@ -8,7 +8,9 @@ User=<service-user>
Group=<service-group>
WorkingDirectory=/path/to/livestream-archiver
ExecStart=/path/to/livestream-archiver/target/release/livestream_archiver
Environment=PC_SYNC_TARGET=user@server:/path/to/destination/
Environment="PC_SYNC_TARGET=user@server:/path/to/destination/"
Environment="INPUT_DIR=/path/to/input/livestreams"
Environment="OUTPUT_DIR=/path/to/output/archive"
Restart=always
RestartSec=10

View file

@ -1,4 +1,5 @@
use std::path::PathBuf;
use std::env;
use anyhow::Result;
use notify::{Watcher, RecursiveMode, Event, EventKind};
use tokio::sync::mpsc;
@ -10,8 +11,18 @@ use services::livestream_archiver::LivestreamArchiver;
#[tokio::main]
async fn main() -> Result<()> {
let watch_path = PathBuf::from("/home/rockvilleav/Sync/Livestreams");
let output_path = PathBuf::from("/media/archive/jellyfin/livestreams");
let watch_path = PathBuf::from(
env::var("INPUT_DIR").unwrap_or_else(|_| {
eprintln!("INPUT_DIR not set, using default: /home/user/livestreams");
"/home/user/livestreams".to_string()
})
);
let output_path = PathBuf::from(
env::var("OUTPUT_DIR").unwrap_or_else(|_| {
eprintln!("OUTPUT_DIR not set, using default: /media/archive/livestreams");
"/media/archive/livestreams".to_string()
})
);
// Ensure directories exist
if !watch_path.exists() {