mirror of
https://github.com/olivierkes/manuskript.git
synced 2024-05-17 11:22:28 +12:00
Fix broken filename argument handling (issue #898)
In addition to fixing the bug, related code that allowed this one to slip under the radar has been cleaned up. Validation of the FILENAME argument is now performed during parsing.
This commit is contained in:
parent
4bfd663886
commit
0a0ffb6d54
|
@ -175,12 +175,12 @@ def prepare(arguments, tests=False):
|
|||
MW._defaultCursorFlashTime = qApp.cursorFlashTime()
|
||||
|
||||
# Command line project
|
||||
#if len(sys.argv) > 1 and sys.argv[1][-4:] == ".msk":
|
||||
if arguments.filename is not None and arguments.filename[-4:] == ".msk":
|
||||
#TODO: integrate better with argparsing.
|
||||
if os.path.exists(sys.argv[1]):
|
||||
path = os.path.abspath(sys.argv[1])
|
||||
MW._autoLoadProject = path
|
||||
# The file is verified to already exist during argument parsing.
|
||||
# Our ".msk" check has been moved there too for better feedback,
|
||||
# but leaving it here to err on the side of caution.
|
||||
path = os.path.abspath(arguments.filename)
|
||||
MW._autoLoadProject = path
|
||||
|
||||
return app, MW
|
||||
|
||||
|
@ -255,6 +255,15 @@ def setup_signal_handlers(MW):
|
|||
signal.signal(signal.SIGTERM, sigint_handler("SIGTERM", MW))
|
||||
|
||||
|
||||
def is_valid_project(parser, arg):
|
||||
if arg[-4:] != ".msk":
|
||||
parser.error("only manuskript projects (.msk) are supported!")
|
||||
if not os.path.isfile(arg):
|
||||
parser.error("the project %s does not exist!" % arg)
|
||||
else:
|
||||
return arg
|
||||
|
||||
|
||||
def process_commandline(argv):
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser(description="Run the manuskript application.")
|
||||
|
@ -262,7 +271,8 @@ def process_commandline(argv):
|
|||
action="store_true")
|
||||
parser.add_argument("-v", "--verbose", action="count", default=1, help="lower the threshold for messages logged to the terminal")
|
||||
parser.add_argument("-L", "--logfile", default=None, help="override the default log file location")
|
||||
parser.add_argument("filename", nargs="?", metavar="FILENAME", help="the manuskript project (.msk) to open")
|
||||
parser.add_argument("filename", nargs="?", metavar="FILENAME", help="the manuskript project (.msk) to open",
|
||||
type=lambda x: is_valid_project(parser, x))
|
||||
|
||||
args = parser.parse_args(args=argv)
|
||||
|
||||
|
@ -283,7 +293,7 @@ def run():
|
|||
2. So that prepare can be used in tests, without running the whole thing
|
||||
"""
|
||||
# Parse command-line arguments.
|
||||
arguments = process_commandline(sys.argv)
|
||||
arguments = process_commandline(sys.argv[1:])
|
||||
# Initialize logging. (Does not include Qt integration yet.)
|
||||
manuskript.logging.setUp(console_level=arguments.verbose)
|
||||
|
||||
|
|
Loading…
Reference in a new issue