diff --git a/conf/wikicurses.conf.dist b/conf/wikicurses.conf.dist new file mode 100644 index 0000000..a2d5c34 --- /dev/null +++ b/conf/wikicurses.conf.dist @@ -0,0 +1,28 @@ +### +# Wikicurses configuration +# This file will automatically be copied to the user configuration path on first run +# User configuration stored in ~/.config/wikicurses/config (i.e. $HOME/.config/wikicurses/config) + +[general] +default = Wikipedia_EN +mouse = False +hide_references = False + +[keymap] +q = quit +c = contents +o = open +h = back +l = forward +left = back +right = forward + +[Wikipedia_EN] +url = https://en.wikipedia.org/w/api.php + +[Wiktionary_EN] +url = https://en.wiktionary.org/w/api.php + +# Additional Languages +# [Wikipedia_DE] +# url = https://de.wikipdia.org/w/api.php diff --git a/wikicurses.1 b/docs/wikicurses.1 similarity index 100% rename from wikicurses.1 rename to docs/wikicurses.1 diff --git a/wikicurses.conf.5 b/docs/wikicurses.conf.5 similarity index 100% rename from wikicurses.conf.5 rename to docs/wikicurses.conf.5 diff --git a/setup.py b/setup.py index 5a485a9..2aab5af 100644 --- a/setup.py +++ b/setup.py @@ -1,21 +1,42 @@ -#!/usr/bin/env python3 + #!/usr/bin/env python3 from setuptools import setup +import os.path +import sys +import warnings + +# Changed paths to remove absolutes + +files_spec = [ + ('share/wikicurses', ['conf/wikicurses.conf.dist']), + ('share/zsh/site-functions', ['zsh/_wikicurses']), + ('share/man/man1', ['docs/wikicurses.1']), + ('share/man/man5', ['docs/wikicurses.conf.5']) + ] + +# Loop through and make the install relative to where we are now +# Concept from github:ytdl-org/youtube-dl/setup.py +root = os.path.dirname(os.path.abspath(__file__)) +data_files = [] +for dirname, files in files_spec: + resfiles = [] + for fn in files: + if not os.path.exists(fn): + warnings.warn('Skipping file %s since it is not present. Type make to build all automatically generated files.' % fn) + else: + resfiles.append(fn) + data_files.append((dirname, resfiles)) + setup(name='Wikicurses', - version='1.4', + version='1.4.1', description='A simple curses interface for accessing Wikipedia.', author='Ian D. Scott', author_email='ian@perebruin.com', license = "MIT", url='http://github.com/ids1024/wikicurses/', packages = ['wikicurses'], - data_files=[ - ('/etc', ['wikicurses.conf']), - ('/usr/share/man/man1', ['wikicurses.1']), - ('/usr/share/man/man5', ['wikicurses.conf.5']), - ('/usr/share/zsh/site-functions', ['_wikicurses']) - ], + data_files=data_files, entry_points={'console_scripts': ['wikicurses = wikicurses.main:main']}, install_requires = ['beautifulsoup4', 'lxml', 'urwid'], classifiers=[ diff --git a/wikicurses.conf b/wikicurses.conf deleted file mode 100644 index 9c6c432..0000000 --- a/wikicurses.conf +++ /dev/null @@ -1,16 +0,0 @@ -[general] -default = Wikipedia -mouse = False -hide_references = False - -[keymap] -q = quit -c = contents -o = open -h = back -l = forward -left = back -right = forward - -[Wikipedia] -url = http://en.wikipedia.org/w/api.php diff --git a/wikicurses/settings.py b/wikicurses/settings.py index f038688..74493c1 100644 --- a/wikicurses/settings.py +++ b/wikicurses/settings.py @@ -1,16 +1,29 @@ +import sys import os import json import collections import configparser +import shutil from wikicurses import formats from urllib.parse import urlparse -default_configdir = os.environ['HOME'] + '/.config' +# TODO: This may cause issues with python 2.7; however, as of 01OCT2019, it is nearing sunset +default_configdir = os.path.expanduser('~') + '/.config' configpath = os.environ.get( 'XDG_CONFIG_HOME', default_configdir) + '/wikicurses' +configfile = os.path.join(configpath, "config") + +os.makedirs(configpath, exist_ok=True) + +if not os.path.isfile(configfile): + # Copy the default config file + current_run_path = os.path.dirname(os.path.realpath(sys.argv[0])) + default_config = os.path.normpath(os.path.join(current_run_path, "../share/wikicurses/wikicurses.conf.dist")) + shutil.copyfile(default_config, configfile) + conf = configparser.ConfigParser() -conf.read(['/etc/wikicurses.conf', configpath + '/config']) +conf.read(configpath + '/config') try: mouse = conf.getboolean('general', 'mouse') diff --git a/_wikicurses b/zsh/_wikicurses similarity index 100% rename from _wikicurses rename to zsh/_wikicurses