python3: use configparser

also for python 2.7
Python 2.7 needs to install configparser.
e.g. via pip install configparser.
This commit is contained in:
Nico Tonnhofer 2019-01-10 22:48:48 +01:00
parent a97fa2221c
commit b0f3a0737d
1 changed files with 43 additions and 36 deletions

View File

@ -1,6 +1,20 @@
from __future__ import print_function from __future__ import print_function
from six import iteritems
import time
import sys
try:
import configparser
except ImportError:
print(
"ImportError: No module named configparser\n\n"
"configparser is not installed. This program requires configparser to run.\n"
"Your package manager may help you."
)
time.sleep(10)
sys.exit(-1)
import ConfigParser
import os import os
from configtool.data import BSIZESMALL, offsetTcLabel from configtool.data import BSIZESMALL, offsetTcLabel
@ -33,7 +47,7 @@ class Settings:
# Runtime settings # Runtime settings
self.verbose = 0 self.verbose = 0
self.cfg = ConfigParser.ConfigParser() self.cfg = configparser.ConfigParser()
self.cfg.optionxform = str self.cfg.optionxform = str
self.loaded = self.readConfig(ini) self.loaded = self.readConfig(ini)
@ -52,36 +66,28 @@ class Settings:
return False return False
if self.cfg.has_section(self.section): if self.cfg.has_section(self.section):
for opt, value in self.cfg.items(self.section): cfg = self.cfg[self.section]
value = value.replace("\n", " ") values = self.getValues()
if opt == "arduinodir":
self.arduinodir = value def cfg_get(key):
elif opt == "cflags": val = cfg.get(key, values[key])
self.cflags = value val = val.replace("\n", " ")
elif opt == "ldflags": return val
self.ldflags = value
elif opt == "programmer": self.arduinodir = cfg_get("arduinodir")
self.programmer = value self.cflags = cfg_get("cflags")
elif opt == "port": self.ldflags = cfg_get("ldflags")
self.port = value self.objcopyflags = cfg_get("objcopyflags")
elif opt == "objcopyflags": self.programflags = cfg_get("programflags")
self.objcopyflags = value self.programmer = cfg_get("programmer")
elif opt == "programflags": self.port = cfg_get("port")
self.programflags = value self.t0 = cfg_get("t0")
elif opt == "t0": self.r1 = cfg_get("r1")
self.t0 = value self.numTemps = cfg_get("numtemps")
elif opt == "r1": self.maxAdc = cfg_get("maxadc")
self.r1 = value self.minAdc = cfg_get("minadc")
elif opt == "numtemps": self.uploadspeed = cfg_get("uploadspeed")
self.numTemps = value
elif opt == "maxadc":
self.maxAdc = value
elif opt == "minadc":
self.minAdc = value
elif opt == "uploadspeed":
self.uploadspeed = value
else:
print("Unknown %s option: %s - ignoring." % (self.section, opt))
else: else:
print("Missing %s section - assuming defaults." % self.section) print("Missing %s section - assuming defaults." % self.section)
return False return False
@ -94,6 +100,7 @@ class Settings:
"cflags": str(self.cflags), "cflags": str(self.cflags),
"ldflags": str(self.ldflags), "ldflags": str(self.ldflags),
"objcopyflags": str(self.objcopyflags), "objcopyflags": str(self.objcopyflags),
"programflags": str(self.programflags),
"programmer": str(self.programmer), "programmer": str(self.programmer),
"port": str(self.port), "port": str(self.port),
"t0": str(self.t0), "t0": str(self.t0),
@ -111,15 +118,15 @@ class Settings:
self.section = "configtool" self.section = "configtool"
try: try:
self.cfg.add_section(self.section) self.cfg.add_section(self.section)
except ConfigParser.DuplicateSectionError: except configparser.DuplicateSectionError:
pass pass
values = self.getValues() values = self.getValues()
for k in values.keys(): for k, v in iteritems(values):
self.cfg.set(self.section, k, values[k]) self.cfg[self.section][k] = v.replace("%", "%%")
try: try:
cfp = open(inifile, "wb") cfp = open(inifile, "w")
except: except:
print("Unable to open settings file %s for writing." % inifile) print("Unable to open settings file %s for writing." % inifile)
return False return False