improved CSV output and error handling
This commit is contained in:
parent
db7565dcd0
commit
960b18a461
1 changed files with 23 additions and 3 deletions
|
@ -8,11 +8,26 @@ of any number of other Friendica instances.
|
||||||
|
|
||||||
See https://git.friendi.ca/tobias/brewserverblocklist
|
See https://git.friendi.ca/tobias/brewserverblocklist
|
||||||
"""
|
"""
|
||||||
|
import argparse
|
||||||
import configparser
|
import configparser
|
||||||
import sys
|
import sys
|
||||||
from os.path import exists
|
from os.path import exists
|
||||||
import requests
|
import requests
|
||||||
from bargparse.bargparse import MyParser
|
|
||||||
|
class BParser(argparse.ArgumentParser):
|
||||||
|
"""
|
||||||
|
This expansion of the ArgParser class will display the --help results by
|
||||||
|
default if an error occurs (e.g. no arguments are passed to the script).
|
||||||
|
|
||||||
|
It is based on an StackOverflow answer from 2010 by unutbu who refered to
|
||||||
|
a reply from Steven Bethard as source of the code.
|
||||||
|
|
||||||
|
https://stackoverflow.com/questions/4042452/display-help-message-with-python-argparse-when-script-is-called-without-any-argu/4042861#4042861
|
||||||
|
"""
|
||||||
|
def error(self, message):
|
||||||
|
sys.stderr.write('error: %s\n' % message)
|
||||||
|
self.print_help()
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
class BrewBlocklist():
|
class BrewBlocklist():
|
||||||
"""
|
"""
|
||||||
|
@ -36,7 +51,6 @@ class BrewBlocklist():
|
||||||
config = configparser.RawConfigParser()
|
config = configparser.RawConfigParser()
|
||||||
config.read(configfile)
|
config.read(configfile)
|
||||||
for section in config.sections():
|
for section in config.sections():
|
||||||
print(section)
|
|
||||||
section_values = dict(config.items(section))
|
section_values = dict(config.items(section))
|
||||||
if (section.find('http://') > -1) or (section.find('https://') > -1):
|
if (section.find('http://') > -1) or (section.find('https://') > -1):
|
||||||
print('The section name in the config file must not contain the protocol ({})'.format(section))
|
print('The section name in the config file must not contain the protocol ({})'.format(section))
|
||||||
|
@ -139,6 +153,12 @@ class BrewBlocklist():
|
||||||
orig_stdout = sys.stdout
|
orig_stdout = sys.stdout
|
||||||
sys.stdout = out_file
|
sys.stdout = out_file
|
||||||
for key, value in self.blocklist.items():
|
for key, value in self.blocklist.items():
|
||||||
|
try:
|
||||||
|
if ("," in self.reasons[key] or " " in self.reasons[key]) and not self.reasons[key].startswith('"'):
|
||||||
|
self.reasons[key] = '"{}"'.format(self.reasons[key])
|
||||||
|
except TypeError:
|
||||||
|
self.reasons[key] = '"no reason given"'
|
||||||
|
self.error.append("for {} no blocking reason was provided".format(key))
|
||||||
print('{}, {}, {}'.format(key, self.reasons[key], value))
|
print('{}, {}, {}'.format(key, self.reasons[key], value))
|
||||||
if self.outputfile:
|
if self.outputfile:
|
||||||
sys.stdout = orig_stdout
|
sys.stdout = orig_stdout
|
||||||
|
@ -157,7 +177,7 @@ def main():
|
||||||
* collect the ingredient
|
* collect the ingredient
|
||||||
* serve the result
|
* serve the result
|
||||||
"""
|
"""
|
||||||
parser = MyParser()
|
parser = BParser()
|
||||||
parser.add_argument('-c', '--config',
|
parser.add_argument('-c', '--config',
|
||||||
dest='configfile',
|
dest='configfile',
|
||||||
required=True,
|
required=True,
|
||||||
|
|
Loading…
Add table
Reference in a new issue