Improve configuration
This commit is contained in:
		
							parent
							
								
									71498256f6
								
							
						
					
					
						commit
						ace4face5a
					
				
					 9 changed files with 66 additions and 51 deletions
				
			
		| 
						 | 
					@ -1,3 +1,3 @@
 | 
				
			||||||
#EMGAUWA_CONTROLLER_LOGGING_LEVEL=INFO
 | 
					#EMGAUWA_CONTROLLER__LOGGING__LEVEL=DEBUG
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#EMGAUWA_CORE_LOGGING_LEVEL=INFO
 | 
					#EMGAUWA_CORE__LOGGING__LEVEL=DEBUG
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										4
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,8 +1,10 @@
 | 
				
			||||||
/target
 | 
					/target
 | 
				
			||||||
 | 
					/pkl-out
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/.env
 | 
					/.env
 | 
				
			||||||
/api.http
 | 
					/api.http
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/emgauwa-*.sqlite
 | 
					/emgauwa-*.sqlite
 | 
				
			||||||
/emgauwa-*.sqlite-*
 | 
					/emgauwa-*.sqlite-*
 | 
				
			||||||
/emgauwa-*.json
 | 
					/emgauwa-*.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										13
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								Makefile
									
										
									
									
									
								
							| 
						 | 
					@ -1,11 +1,3 @@
 | 
				
			||||||
ifneq (,$(wildcard ./.env))
 | 
					 | 
				
			||||||
    include .env
 | 
					 | 
				
			||||||
    export
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
DATABASE_URL ?= sqlite://emgauwa-dev.sqlite
 | 
					 | 
				
			||||||
export DATABASE_URL
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
sqlx:
 | 
					sqlx:
 | 
				
			||||||
	cargo sqlx database drop -y
 | 
						cargo sqlx database drop -y
 | 
				
			||||||
	cargo sqlx database create
 | 
						cargo sqlx database create
 | 
				
			||||||
| 
						 | 
					@ -15,13 +7,16 @@ sqlx:
 | 
				
			||||||
build-rpi:
 | 
					build-rpi:
 | 
				
			||||||
	cross build --target arm-unknown-linux-gnueabihf
 | 
						cross build --target arm-unknown-linux-gnueabihf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
emgauwa-%.json: config/emgauwa-%.pkl config/lib/%.pkl config/lib/common.pkl $(wildcard .env)
 | 
					emgauwa-%.json: config/%.pkl config/lib/%.pkl
 | 
				
			||||||
	pkl eval -f json -o $@ $<
 | 
						pkl eval -f json -o $@ $<
 | 
				
			||||||
 | 
					
 | 
				
			||||||
configs:
 | 
					configs:
 | 
				
			||||||
	$(MAKE) emgauwa-core.json
 | 
						$(MAKE) emgauwa-core.json
 | 
				
			||||||
	$(MAKE) emgauwa-controller.json
 | 
						$(MAKE) emgauwa-controller.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					pkl-package:
 | 
				
			||||||
 | 
						pkl project package config --output-path "./pkl-out"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
clean:
 | 
					clean:
 | 
				
			||||||
	rm -f emgauwa-controller.json
 | 
						rm -f emgauwa-controller.json
 | 
				
			||||||
	rm -f emgauwa-controller.sqlite
 | 
						rm -f emgauwa-controller.sqlite
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										8
									
								
								config/PklProject
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								config/PklProject
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,8 @@
 | 
				
			||||||
 | 
					amends "pkl:Project"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package {
 | 
				
			||||||
 | 
					  name = "emgauwa"
 | 
				
			||||||
 | 
					  baseUri = "package://emgauwa.app/pkl/\(name)"
 | 
				
			||||||
 | 
					  version = "0.1.0"
 | 
				
			||||||
 | 
					  packageZipUrl = "https://emgauwa.app/pkl/\(name)@\(version).zip"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										4
									
								
								config/PklProject.deps.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								config/PklProject.deps.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,4 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  "schemaVersion": 1,
 | 
				
			||||||
 | 
					  "resolvedDependencies": {}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -13,59 +13,61 @@ permissions {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
logging {
 | 
					logging {
 | 
				
			||||||
  level = read?("env:EMGAUWA_CONTROLLER_LOGGING_LEVEL") ?? "DEBUG"
 | 
					  level = "INFO"
 | 
				
			||||||
  file = "stdout"
 | 
					  file = "stdout"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
relays {
 | 
					relays {
 | 
				
			||||||
  new {
 | 
					  new {
 | 
				
			||||||
    driver = "null"
 | 
					    driver = "null"
 | 
				
			||||||
    pin = 24
 | 
					    pin = 0
 | 
				
			||||||
    inverted = true
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  new {
 | 
					 | 
				
			||||||
    driver = "null"
 | 
					 | 
				
			||||||
    pin = 23
 | 
					 | 
				
			||||||
    inverted = true
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  new {
 | 
					 | 
				
			||||||
    driver = "null"
 | 
					 | 
				
			||||||
    pin = 22
 | 
					 | 
				
			||||||
    inverted = true
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  new {
 | 
					 | 
				
			||||||
    driver = "null"
 | 
					 | 
				
			||||||
    pin = 27
 | 
					 | 
				
			||||||
    inverted = true
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  new {
 | 
					 | 
				
			||||||
    driver = "null"
 | 
					 | 
				
			||||||
    pin = 18
 | 
					 | 
				
			||||||
    inverted = true
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  new {
 | 
					 | 
				
			||||||
    driver = "null"
 | 
					 | 
				
			||||||
    pin = 17
 | 
					 | 
				
			||||||
    inverted = true
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  new {
 | 
					 | 
				
			||||||
    driver = "null"
 | 
					 | 
				
			||||||
    pin = 15
 | 
					 | 
				
			||||||
    inverted = true
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  new {
 | 
					 | 
				
			||||||
    driver = "null"
 | 
					 | 
				
			||||||
    pin = 14
 | 
					 | 
				
			||||||
    inverted = true
 | 
					    inverted = true
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  new {
 | 
					  new {
 | 
				
			||||||
    driver = "null"
 | 
					    driver = "null"
 | 
				
			||||||
    pin = 1
 | 
					    pin = 1
 | 
				
			||||||
 | 
					    inverted = true
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  new {
 | 
				
			||||||
 | 
					    driver = "null"
 | 
				
			||||||
 | 
					    pin = 2
 | 
				
			||||||
 | 
					    inverted = true
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  new {
 | 
				
			||||||
 | 
					    driver = "null"
 | 
				
			||||||
 | 
					    pin = 3
 | 
				
			||||||
 | 
					    inverted = true
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  new {
 | 
				
			||||||
 | 
					    driver = "null"
 | 
				
			||||||
 | 
					    pin = 4
 | 
				
			||||||
 | 
					    inverted = true
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  new {
 | 
				
			||||||
 | 
					    driver = "null"
 | 
				
			||||||
 | 
					    pin = 5
 | 
				
			||||||
 | 
					    inverted = true
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  new {
 | 
				
			||||||
 | 
					    driver = "null"
 | 
				
			||||||
 | 
					    pin = 10
 | 
				
			||||||
 | 
					    inverted = true
 | 
				
			||||||
 | 
					    pulse = 10
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  new {
 | 
				
			||||||
 | 
					    driver = "null"
 | 
				
			||||||
 | 
					    pin = 11
 | 
				
			||||||
 | 
					    inverted = true
 | 
				
			||||||
 | 
					    pulse = 10
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  new {
 | 
				
			||||||
 | 
					    driver = "null"
 | 
				
			||||||
 | 
					    pin = 20
 | 
				
			||||||
    inverted = false
 | 
					    inverted = false
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  new {
 | 
					  new {
 | 
				
			||||||
    driver = "null"
 | 
					    driver = "null"
 | 
				
			||||||
    pin = 0
 | 
					    pin = 21
 | 
				
			||||||
    inverted = false
 | 
					    inverted = false
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,6 @@ permissions {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
logging {
 | 
					logging {
 | 
				
			||||||
  level = read?("env:EMGAUWA_CORE_LOGGING_LEVEL") ?? "DEBUG"
 | 
					  level = "INFO"
 | 
				
			||||||
  file = "stdout"
 | 
					  file = "stdout"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -12,5 +12,6 @@ class RelayConfig {
 | 
				
			||||||
  driver: "null"|"gpio"|"piface"
 | 
					  driver: "null"|"gpio"|"piface"
 | 
				
			||||||
  pin: Number
 | 
					  pin: Number
 | 
				
			||||||
  inverted: Boolean
 | 
					  inverted: Boolean
 | 
				
			||||||
 | 
					  pulse: Number(this >= 0)|Null = null
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
relays: Listing<RelayConfig>
 | 
					relays: Listing<RelayConfig>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,9 +49,12 @@ pub fn load<T>(config_name: &str, env_prefix: &str) -> Result<T, EmgauwaError>
 | 
				
			||||||
where
 | 
					where
 | 
				
			||||||
	for<'de> T: serde::Deserialize<'de>,
 | 
						for<'de> T: serde::Deserialize<'de>,
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						let etc_file =
 | 
				
			||||||
 | 
							config::File::with_name(&format!("/etc/emgauwa/{}", config_name)).required(false);
 | 
				
			||||||
	let local_file = config::File::with_name(&format!("./emgauwa-{}", config_name)).required(false);
 | 
						let local_file = config::File::with_name(&format!("./emgauwa-{}", config_name)).required(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	config::Config::builder()
 | 
						config::Config::builder()
 | 
				
			||||||
 | 
							.add_source(etc_file)
 | 
				
			||||||
		.add_source(local_file)
 | 
							.add_source(local_file)
 | 
				
			||||||
		.add_source(
 | 
							.add_source(
 | 
				
			||||||
			config::Environment::with_prefix(&format!("EMGAUWA_{}", env_prefix))
 | 
								config::Environment::with_prefix(&format!("EMGAUWA_{}", env_prefix))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue