Multiplatform Dev (#52)

* Use environment home instead of hard coding home_path

* Fix Makefile

* Use PathBuf instead of format. Catch else fore /tmp/ default directory

* Restore logpath for deployment. Resolve warning from copy() not having err handled.

* Undo add #[cfg(debug_assertions)] in wrong place.
This commit is contained in:
Derek J. Clark 2022-11-28 16:04:03 -08:00 committed by GitHub
parent 2b2a6eaf9d
commit 5d2937af6f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 103 additions and 7 deletions

87
Makefile Normal file
View file

@ -0,0 +1,87 @@
# Configuration settings
PLUGIN_NAME ?= $(shell basename $(PWD))
PLUGIN_VERSION ?= 0.3.0
# Source files
TS_FILES := $(shell find src -name *.ts)
TSX_FILES := $(shell find src -name *.tsx)
SRC_FILES := $(TS_FILES) $(TSX_FILES) plugin.json
TAR_FILES := bin dist main.py package.json plugin.json
# plugin dir
DATA_PATH ?= homebrew
# SSH Configuration
SSH_USER ?= gamer
SSH_HOST ?= 192.168.0.246
SSH_MOUNT_PATH ?= /tmp/remote
SSH_DATA_PATH ?= /home/$(SSH_USER)/$(DATA_PATH)
# Default target is to build and restart crankshaft
.PHONY: default
default: build restart
.PHONY: build
build: build ## Builds the project
cd backend && ./build.sh && cd ..
dist: $(SRC_FILES) node_modules
npm run build
.PHONY: watch
watch: ## Build and watch for source code changes
npm run build-watch
package-lock.json: package.json
npm i
node_modules: node_modules/installed ## Install dependencies
node_modules/installed: package-lock.json
npm ci
touch $@
.PHONY: restart
restart: ## Restart crankshaft
ssh $(SSH_USER)@$(SSH_HOST) sudo systemctl restart plugin_loader -S
.PHONY: debug
debug: ## Show Makefile variables
@echo "Source Files: $(SRC_FILES)"
.PHONY: cef-debug
cef-debug: ## Open Chrome CEF debugging. Add a network target: localhost:8080
chromium "chrome://inspect/#devices"
.PHONY: tunnel
tunnel: ## Create an SSH tunnel to remote Steam Client (accessible on localhost:4040)
ssh $(SSH_USER)@$(SSH_HOST) -N -f -L 4040:localhost:8080
$(SSH_MOUNT_PATH)/.mounted:
mkdir -p $(SSH_MOUNT_PATH)
sshfs -o default_permissions $(SSH_USER)@$(SSH_HOST):$(SSH_DATA_PATH) $(SSH_MOUNT_PATH)
touch $(SSH_MOUNT_PATH)/.mounted
$(MAKE) tunnel
# Cleans and transfers the project
$(SSH_MOUNT_PATH)/plugins/$(PLUGIN_NAME): $(SRC_FILES)
rsync -avh $(PWD)/ $(SSH_MOUNT_PATH)/plugins/$(PLUGIN_NAME) --delete
.PHONY: remote-restart
remote-restart: ## Restart remote crankshaft
ssh $(SSH_USER)@$(SSH_HOST) sudo systemctl restart plugin_loader
.PHONY: mount
mount: $(SSH_MOUNT_PATH)/.mounted
.PHONY: remote-update
remote-update: $(SSH_MOUNT_PATH)/plugins/$(PLUGIN_NAME)
.PHONY: clean
clean: ## Clean all build artifacts
rm -rf build dist bin
.PHONY: help
help: ## Show this help message
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'

4
backend/Cargo.lock generated
View file

@ -1077,9 +1077,9 @@ dependencies = [
[[package]] [[package]]
name = "usdpl-back" name = "usdpl-back"
version = "0.7.0" version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ca96dac4ee471e9534940f99cb36f5212cbfaf4e7779eb3ba970d3c511d9583" checksum = "58928ed65332c30b9b9be5140fcdab97e45db679a5845d829aa26492765272e5"
dependencies = [ dependencies = [
"async-recursion", "async-recursion",
"async-trait", "async-trait",

View file

@ -6,7 +6,7 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
usdpl-back = { version = "0.7.0", features = ["blocking"]} usdpl-back = { version = "0.7.2", features = ["blocking"]}
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0" serde_json = "1.0"

View file

@ -18,14 +18,21 @@ use usdpl_back::core::serdes::Primitive;
use usdpl_back::Instance; use usdpl_back::Instance;
fn main() -> Result<(), ()> { fn main() -> Result<(), ()> {
#[cfg(debug_assertions)] #[cfg(debug_assertions)]
let log_filepath = format!("/home/deck/{}.log", PACKAGE_NAME); let log_filepath = usdpl_back::api::dirs::home()
.unwrap_or_else(|| "/tmp/".into())
.join(PACKAGE_NAME.to_owned()+".log");
#[cfg(not(debug_assertions))] #[cfg(not(debug_assertions))]
let log_filepath = format!("/tmp/{}.log", PACKAGE_NAME); let log_filepath = std::path::PathBuf.new("/tmp/"+PACKAGE_NAME.to_owned()+".log");
#[cfg(debug_assertions)]
let old_log_filepath = usdpl_back::api::dirs::home()
.unwrap_or_else(|| "/tmp/".into())
.join(PACKAGE_NAME.to_owned()+".log.old");
#[cfg(debug_assertions)] #[cfg(debug_assertions)]
{ {
if std::path::Path::new(&log_filepath).exists() { if std::path::Path::new(&log_filepath).exists() {
std::fs::copy(&log_filepath, format!("/home/deck/{}.log.old", PACKAGE_NAME)).unwrap(); std::fs::copy(&log_filepath, &old_log_filepath).expect("Unable to increment logs. Do you have write permissions?");
} }
} }
WriteLogger::init( WriteLogger::init(
@ -41,6 +48,8 @@ fn main() -> Result<(), ()> {
std::fs::File::create(&log_filepath).unwrap(), std::fs::File::create(&log_filepath).unwrap(),
) )
.unwrap(); .unwrap();
log::debug!("Logging to: {:?}.", log_filepath);
println!("Logging to: {:?}", log_filepath);
log::info!("Starting back-end ({} v{})", PACKAGE_NAME, PACKAGE_VERSION); log::info!("Starting back-end ({} v{})", PACKAGE_NAME, PACKAGE_VERSION);
println!("Starting back-end ({} v{})", PACKAGE_NAME, PACKAGE_VERSION); println!("Starting back-end ({} v{})", PACKAGE_NAME, PACKAGE_VERSION);

View file

@ -26,6 +26,6 @@ pub fn unwrap_maybe_fatal<T: Sized, E: Display>(result: Result<T, E>, message: &
pub fn settings_dir() -> std::path::PathBuf { pub fn settings_dir() -> std::path::PathBuf {
usdpl_back::api::dirs::home() usdpl_back::api::dirs::home()
.unwrap_or_else(|| "/home/deck".into()) .unwrap_or_else(|| "/tmp/".into())
.join(".config/powertools/") .join(".config/powertools/")
} }