aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDuckonaut <duckonaut@#gmail.com>2026-11-04 15:49:25 +0100
committerDuckonaut <duckonaut@#gmail.com>2026-11-04 15:49:25 +0100
commit98135a87f9fc0faa9bb0f049211679f6f077c1c1 (patch)
treea307d150e67cb5636fc5207239a6fdac21c64304 /src
parent9d8257ed4f1abe01f21522b0824bb51e33d4e3db (diff)
feature: remove port, add full address string
Diffstat (limited to 'src')
-rw-r--r--src/main.rs46
-rw-r--r--src/server.rs13
2 files changed, 31 insertions, 28 deletions
diff --git a/src/main.rs b/src/main.rs
index b39f26d..88b1325 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -26,12 +26,12 @@ enum Args {
)]
change_dir: std::path::PathBuf,
#[clap(
- short = 'p',
- long = "port",
- default_value = "4310",
- help = "The port to serve on"
+ short = 'a',
+ long = "address",
+ default_value = "127.0.0.1",
+ help = "The address to serve on"
)]
- port: u16,
+ address: String,
#[clap(
short = 'l',
long = "local",
@@ -77,12 +77,12 @@ enum Args {
)]
public_dir: std::path::PathBuf,
#[clap(
- short = 'p',
- long = "port",
- default_value = "4310",
- help = "The port to serve on"
+ short = 'a',
+ long = "address",
+ default_value = "127.0.0.1",
+ help = "The address to serve on"
)]
- port: u16,
+ address: String,
#[clap(
short = 'l',
long = "local",
@@ -111,7 +111,7 @@ async fn main() -> color_eyre::Result<()> {
match args {
Args::Serve {
change_dir,
- port,
+ address,
local,
} => {
if !change_dir.is_dir() {
@@ -125,9 +125,9 @@ async fn main() -> color_eyre::Result<()> {
println!("🌴 Project root: {}", change_dir.display().bright_yellow());
if local {
- serve_locally(change_dir, false, port, None).await
+ serve_locally(change_dir, false, &address, None).await
} else {
- serve_from_temp(change_dir, false, port, None).await
+ serve_from_temp(change_dir, false, &address, None).await
}
}
Args::Build {
@@ -137,7 +137,7 @@ async fn main() -> color_eyre::Result<()> {
Args::Dev {
change_dir,
public_dir,
- port,
+ address,
local,
} => {
if !change_dir.is_dir() {
@@ -165,9 +165,9 @@ async fn main() -> color_eyre::Result<()> {
let public_dir = Some(public_dir.canonicalize()?);
if local {
- serve_locally(change_dir, true, port, public_dir).await
+ serve_locally(change_dir, true, &address, public_dir).await
} else {
- serve_from_temp(change_dir, true, port, public_dir).await
+ serve_from_temp(change_dir, true, &address, public_dir).await
}
}
Args::New { name } => create_project(&name),
@@ -178,7 +178,7 @@ async fn main() -> color_eyre::Result<()> {
async fn serve_locally(
change_dir: PathBuf,
dev_mode: bool,
- port: u16,
+ address: &str,
public_dir: Option<PathBuf>,
) -> Result<()> {
println!("🌴 Running in local mode");
@@ -187,13 +187,13 @@ async fn serve_locally(
ensure_entry_point().await?;
- serve(dev_mode, port, public_dir).await
+ serve(dev_mode, address, public_dir).await
}
async fn serve_from_temp(
change_dir: PathBuf,
dev_mode: bool,
- port: u16,
+ address: &str,
public_dir: Option<PathBuf>,
) -> Result<()> {
// Create a /tmp/reluax-XXXXXX directory for the server to pre-process files in.
@@ -229,7 +229,7 @@ async fn serve_from_temp(
ensure_entry_point().await?;
- serve(dev_mode, port, public_dir).await
+ serve(dev_mode, address, public_dir).await
}
async fn preprocess_current_dir() -> Result<()> {
@@ -258,7 +258,7 @@ async fn ensure_entry_point() -> Result<()> {
Ok(())
}
-async fn serve(dev_mode: bool, port: u16, public_dir: Option<PathBuf>) -> Result<()> {
+async fn serve(dev_mode: bool, address: &str, public_dir: Option<PathBuf>) -> Result<()> {
println!("📦 Building Lua state...");
let lua = luax::prepare_lua(dev_mode)?;
@@ -269,8 +269,8 @@ async fn serve(dev_mode: bool, port: u16, public_dir: Option<PathBuf>) -> Result
println!("🌴 App name: {}", name.bright_yellow());
}
- println!("🛫 Starting server on port {}...", port);
- server::Server::serve(lua, port, public_dir).await
+ println!("🛫 Starting server on address {}...", address);
+ server::Server::serve(lua, address, public_dir).await
}
fn recurse_copy_lua(from: &Path, to: &Path) -> Result<usize> {
diff --git a/src/server.rs b/src/server.rs
index b6e8110..76be5a7 100644
--- a/src/server.rs
+++ b/src/server.rs
@@ -3,6 +3,7 @@ use std::io::Write;
use std::net::SocketAddr;
use std::path::PathBuf;
use std::pin::Pin;
+use std::str::FromStr;
use std::sync::{Arc, Mutex};
use http_body_util::{BodyExt, Collected, Full};
@@ -19,7 +20,7 @@ use color_eyre::Result;
use mlua::Lua;
pub struct Server {
- port: u16,
+ addr: SocketAddr,
state: State,
}
@@ -30,18 +31,20 @@ struct State {
}
impl Server {
- pub async fn serve(lua: Lua, port: u16, public_dir: Option<PathBuf>) -> Result<()> {
+ pub async fn serve(lua: Lua, address: &str, public_dir: Option<PathBuf>) -> Result<()> {
let state = State {
lua: Arc::new(Mutex::new(lua)),
public_dir,
};
- let server = Self { port, state };
+
+ let addr: SocketAddr = SocketAddr::from_str(address)?;
+
+ let server = Self { addr, state };
server.start().await
}
async fn start(self) -> Result<()> {
- let addr = SocketAddr::from(([127, 0, 0, 1], self.port));
- let listener = TcpListener::bind(addr).await?;
+ let listener = TcpListener::bind(self.addr).await?;
let state = self.state;