66 lines
1.7 KiB
Python
66 lines
1.7 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Created on Fri Jan 8 10:26:56 2021
|
|
|
|
@author: neal
|
|
"""
|
|
|
|
import os
|
|
import yaml
|
|
|
|
class ConfigurationFile():
|
|
def __init__(self, app_path):
|
|
self.app_file = app_path
|
|
self.cfg_path = os.path.dirname(os.path.realpath(app_path))
|
|
(base, ext) = os.path.splitext(os.path.basename(app_path))
|
|
self.app_name = base
|
|
self.cfg_file = self.app_name + ".yaml"
|
|
self.use_path = self.cfg_file
|
|
self.config = []
|
|
self.paths = []
|
|
self.paths.append(".") # local first
|
|
# grab from env
|
|
if 'NTCNA_PYVEHICLE_PATH' in os.environ:
|
|
self.paths.append(os.environ['NTCNA_PYVEHICLE_CFGPATH'].split(':'))
|
|
self.paths.append(self.cfg_path) # program location
|
|
|
|
def find_config(self):
|
|
for path in self.paths:
|
|
cfg = path + "/" + self.cfg_file
|
|
if os.path.isfile(cfg):
|
|
self.use_path = cfg
|
|
return 1
|
|
print("Config file not found:", self.cfg_file)
|
|
return 0
|
|
|
|
def read_config(self):
|
|
if self.find_config():
|
|
# print(self.app_file, " using configuration file: ", self.use_path)
|
|
with open(self.use_path) as f:
|
|
self.config = yaml.load(f, Loader=yaml.FullLoader)
|
|
f.close()
|
|
else:
|
|
self.config = []
|
|
return self.config
|
|
|
|
def write_config(self, config):
|
|
self.config = config
|
|
with open(self.use_path, 'w') as f:
|
|
f.write(yaml.dump(config))
|
|
f.close()
|
|
|
|
def get_config(self, name):
|
|
if name in self.config:
|
|
return self.config[name]
|
|
return ""
|
|
|
|
def set_config(self, name, val):
|
|
self.config[name] = val
|
|
|
|
def path_append(self, path):
|
|
if os.path.exists(path):
|
|
self.paths.append(path)
|
|
else:
|
|
print("Path not found: ", path)
|