@@ 58,11 58,15 @@ def gen_inkscape_rules_for_asset(root, asset, writer, files_375, files_full, fil
writer.build([out_375], rule_375, [in_file])
writer.build([out_125], rule_125, [in_file])
+
def gen_rules_for_client(root, env, writer):
if env == 'dev':
- writer.rule('cargo-client', 'wasm-pack build --target web client', depfile=f'{root}/target/wasm32-unknown-unknown/release/starkingdoms_client.d', pool='console')
+ writer.rule('cargo-client', 'wasm-pack build --target web client',
+ depfile=f'{root}/target/wasm32-unknown-unknown/release/starkingdoms_client.d', pool='console')
elif env == 'prod':
- writer.rule('cargo-client', 'wasm-pack build --target web client --no-default-features --features textures-fast', depfile=f'{root}/target/wasm32-unknown-unknown/release/starkingdoms_client.d', pool='console')
+ writer.rule('cargo-client',
+ 'wasm-pack build --target web client --no-default-features --features textures-fast',
+ depfile=f'{root}/target/wasm32-unknown-unknown/release/starkingdoms_client.d', pool='console')
writer.build(
[
f'{root}/client/pkg/.gitignore',
@@ 112,6 116,20 @@ def gen_rules_for_client(root, env, writer):
writer.build(['client'], 'phony', [f'{root}/web/dist/starkingdoms_client.js'])
+def gen_rules_for_server(root, env, writer):
+ if env == 'dev':
+ out_dir = 'debug'
+ writer.rule('cargo-server', 'cargo build --bin starkingdoms-server',
+ depfile=f'{root}/target/debug/starkingdoms-server.d', pool='console')
+ elif env == 'prod':
+ out_dir = 'release'
+ writer.rule('cargo-server', 'cargo build --bin starkingdoms-server --release',
+ depfile=f'{root}/target/release/starkingdoms-server.d', pool='console')
+
+ writer.build([f'{root}/target/{out_dir}/starkingdoms-server'], 'cargo-server', ['server/Cargo.toml'])
+ writer.build(['server'], 'phony', [f'{root}/target/{out_dir}/starkingdoms-server'])
+
+
def gen_inkscape(root, assets, writer, files_375, files_full, files_125):
gen_inkscape_rules_for_asset_sizes(writer)
@@ 167,9 185,10 @@ def main():
assets = scan_assets(root)
generate_assets_build_command(root, assets, writer)
- gen_rules_for_client(root, env, writer)
-
-
+ if target == 'client':
+ gen_rules_for_client(root, env, writer)
+ elif target == 'server':
+ gen_rules_for_server(root, env, writer)
print(f'[spacetime] Configured build')
@@ 24,8 24,10 @@ sub_help() {
echo " help - Show this help screen" # done
echo " run_http - Compile the client and run a development http server for testing it" # done
echo " run_http_prod - Compile the client in production mode and run a development http server for testing it" # done
- echo " run_server (default) - Compile and run the game server"
- echo " build_server - Compile the game server"
+ echo " run_server (default) - Compile and run the game server" # done
+ echo " build_server - Compile the game server" # done
+ echo " run_server_prod - Compile and run the game server with optimizations enabled" # done
+ echo " build_server_prod - Compile the game server with optimizations enabled" # done
echo " build_client_bundle - Compile an optimized WebAssembly client bundle" # done
echo " build_client_bundle_prod - Compile an optimized WebAssembly client bundle using textures-fast" # done
echo " install_tooling - Install the compilation utilities required for compiling StarKingdoms" # done
@@ 33,7 35,7 @@ sub_help() {
echo " build_assets_full - Compile spritesheets in full size for textures-fast" # done
echo " build_assets_375 - Commpile 37.5% spritesheets for textures-fast" # done
echo " build_assets_125 - Compile 12.5% spritesheets for textures-fast" # done
- echo " clean - Remove all generated files"
+ echo " clean - Remove all generated files" # done
}
check_install_cargo() {
@@ 60,6 62,14 @@ check_all() {
check inkscape
}
+sub_clean() {
+ rm -rf web/dist
+ rm -rf assets/dist
+ rm -rf assets/final
+ rm -rf target
+ rm -rf client/pkg
+}
+
sub_install_tooling() {
check_install_cargo wasm-pack wasm-pack --no-default-features
check_install_cargo sheep sheep_cli
@@ 93,6 103,30 @@ sub_run_http_prod() {
cd web && python3 -m http.server
}
+sub_build_server() {
+ check_all
+ exec_spacetime server dev "$SCRIPT_DIR"
+ exec_ninja server
+}
+sub_run_server() {
+ check_all
+ exec_spacetime server dev "$SCRIPT_DIR"
+ exec_ninja server
+ exec "$SCRIPT_DIR/target/debug/starkingdoms-server"
+}
+
+sub_build_server_prod() {
+ check_all
+ exec_spacetime server prod "$SCRIPT_DIR"
+ exec_ninja server
+}
+sub_run_server_prod() {
+ check_all
+ exec_spacetime server prod "$SCRIPT_DIR"
+ exec_ninja server
+ exec "$SCRIPT_DIR/target/release/starkingdoms-server"
+}
+
sub_build_assets() {
check_all
exec_spacetime asset dev "$SCRIPT_DIR"