diff options
author | Mattias Andrée <maandree@operamail.com> | 2014-02-17 07:56:45 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2014-02-17 07:56:45 +0100 |
commit | 302a33d6977cf73689201f97b2de3260af60f6d0 (patch) | |
tree | 5409dc9996aa9a9018c945f416984e3f63e96f12 /src/__main__.py | |
parent | typo (diff) | |
download | blueshift-302a33d6977cf73689201f97b2de3260af60f6d0.tar.gz blueshift-302a33d6977cf73689201f97b2de3260af60f6d0.tar.bz2 blueshift-302a33d6977cf73689201f97b2de3260af60f6d0.tar.xz |
add option parsing
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to 'src/__main__.py')
-rwxr-xr-x | src/__main__.py | 85 |
1 files changed, 71 insertions, 14 deletions
diff --git a/src/__main__.py b/src/__main__.py index 0297967..144eefd 100755 --- a/src/__main__.py +++ b/src/__main__.py @@ -1,25 +1,32 @@ #!/usr/bin/env python3 +copyright = ''' +Copyright © 2014 Mattias Andrée (maandree@member.fsf.org) -# Copyright © 2014 Mattias Andrée (maandree@member.fsf.org) -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +''' import os import sys import time import signal import datetime +from argparser import * + + +PROGRAM_NAME = 'blueshift' +PROGRAM_VERSION = '1.0' + ## Set global variables global DATADIR, i_size, o_size, r_curve, g_curve, b_curve, clip_result, reset, panicgate @@ -117,6 +124,13 @@ panic = False :bool `True` if the program has received two terminate signals ''' +conf_opts = None +''' +:list<str> This list will never be `None` and it will always have at least + one element. This list is filled with options passed to the + configurations, with the first element being the configuration file +''' + def reset(): ''' Invoked to reset the displays @@ -198,6 +212,48 @@ def continuous_run(): reset() +## Read command line arguments +parser = ArgParser('Colour temputare controller', + sys.argv[0] + ' [options] [-- configuration-options]', + 'Blueshift adjusts the colour temperature of your\n' + 'monitor according to brightness outside to reduce\n' + 'eye strain and make it easier to fall asleep when\n' + 'going to bed. IT can also be used to increase the\n' + 'colour temperature and make the monitor bluer,\n' + 'this helps you focus on your work.', + None, True, ArgParser.standard_abbreviations()) + +parser.add_argumentless(['-h', '-?', '--help'], 0, 'Print this help information') +parser.add_argumentless(['-C', '--copying', '--copyright'], 0, 'Print copyright information') +parser.add_argumentless(['-W', '--warranty'], 0, 'Print warranty information') +parser.add_argumentless(['-v', '--version'], 0, 'Print program name and version') +parser.add_argumented(['-c', '--configurations'], 0, 'FILE', 'Select configuration file') +parser.add_argumentless(['-p', '--panic-gate', '--panicgate'], 0, 'Skip transition into initial settings') + +parser.parse() +parser.support_alternatives() + +if parser.opts['--help'] is not None: + parser.help() + sys.exit(0) +elif parser.opts['--copyright'] is not None: + print(copyright[1 : -1]) + sys.exit(0) +elif parser.opts['--warranty'] is not None: + print('This program is distributed in the hope that it will be useful,') + print('but WITHOUT ANY WARRANTY; without even the implied warranty of') + print('MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the') + print('GNU Affero General Public License for more details.') + sys.exit(0) +elif parser.opts['--version'] is not None: + print('%s %s' % (PROGRAM_NAME, PROGRAM_VERSION)) + sys.exit(0) + +a = lambda opt : opt[0] if opt is not None else None +config_file = a(parser.opts['--configurations']) +panicgate = parser.opts['--panicgate'] is not None + + ## Load extension and configurations via blueshiftrc if config_file is None: for file in ('$XDG_CONFIG_HOME/%/%rc', '$HOME/.config/%/%rc', '$HOME/.%rc', '/etc/%rc'): @@ -214,6 +270,7 @@ if config_file is None: if os.path.exists(file): config_file = file break +conf_opts = [config_file] + parser.files if config_file is not None: code = None with open(file, 'rb') as script: |