From b29823c32283ad42a0a1e15a7c704e9c66644e01 Mon Sep 17 00:00:00 2001 From: Martinez Date: Sun, 15 Mar 2015 17:56:25 +0100 Subject: [PATCH] fixes #2 --- core/app.py | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/core/app.py b/core/app.py index 28e23f4..5aea227 100644 --- a/core/app.py +++ b/core/app.py @@ -1,8 +1,10 @@ #! /bin/env python3 # encoding: utf-8 +import os import sys import re +import xdg.BaseDirectory from . import file from . import text @@ -213,31 +215,36 @@ class Main: * Help system that generates help text based on program's configurable options. ''' - def __init__(self, name, version=None, license=None, cfg_file=None, cmdline=sys.argv[1:], allow_exit=True): + def __init__(self, name, full_name, version=None, license=None, use_cfg_file=False, cmdline=sys.argv[1:]): ''' - str name program name - str version program version - str license program license - str cfg_file path to config file, optional - list cmdline command line to parse; defaults to system cmdline (sys.argv) + str name program name (e.g. 'grid') + str full_name human readable program name (e.g. 'Overwatch Grid') + str version program version + str license program license name + str use_cfg_file if True, a config file at ~/.config/(self.name)/main.cfg will be used + list cmdline command line to parse; defaults to system cmdline (sys.argv) Initializes over.Main and opens/creates the config file (if desired). ''' self.cfg = CfgAccessor(self) + self.name = name + self.full_name = full_name self.version = version self.license = license self.cmdline = cmdline self.help_texts = [] # (chapter, [paragraphs]) - self.allow_exit = allow_exit self._print = text.Output('over.core.app.Main') - if cfg_file: - self.cfg_file = file.File(cfg_file, encoding='utf-8') + self.data_dir = os.path.join(xdg.BaseDirectory.xdg_data_home, self.name) + file.File(os.path.join(self.data_dir, '.keep')) + + if use_cfg_file: + self.cfg_file = file.File(os.path.join(xdg.BaseDirectory.xdg_config_home, self.name, 'main.cfg'), encoding='utf-8') if not self.cfg_file.data: - self.cfg_file.data = '''# Et configuration file for %s + self.cfg_file.data = '''# Configuration file for %s # Licensed under the %s # # Syntax @@ -274,15 +281,12 @@ class Main: bool silent don't mention it Shutdown the program and exit. - - Can be disabled by setting self.allow_exit to False. ''' - if self.allow_exit: - if not silent: - self._print('exiting with §B%d§/' %(retval), prefix.info) - - sys.exit(retval) + if not silent: + self._print('exiting with §B%d§/' %(retval), prefix.info) + + sys.exit(retval) def dump(self, ignore=[]): '''