forked from openlp/openlp
Make it possible to specify the portable path to use for OpenLP Data when in portable mode. This is very useful during development.
bzr-revno: 2863
This commit is contained in:
commit
18063af664
@ -30,6 +30,7 @@ import argparse
|
|||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
import os
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from traceback import format_exception
|
from traceback import format_exception
|
||||||
|
|
||||||
@ -40,7 +41,7 @@ from openlp.core.common import is_macosx, is_win
|
|||||||
from openlp.core.common.applocation import AppLocation
|
from openlp.core.common.applocation import AppLocation
|
||||||
from openlp.core.loader import loader
|
from openlp.core.loader import loader
|
||||||
from openlp.core.common.i18n import LanguageManager, UiStrings, translate
|
from openlp.core.common.i18n import LanguageManager, UiStrings, translate
|
||||||
from openlp.core.common.path import copytree, create_paths
|
from openlp.core.common.path import copytree, create_paths, Path
|
||||||
from openlp.core.common.registry import Registry
|
from openlp.core.common.registry import Registry
|
||||||
from openlp.core.common.settings import Settings
|
from openlp.core.common.settings import Settings
|
||||||
from openlp.core.display.screens import ScreenList
|
from openlp.core.display.screens import ScreenList
|
||||||
@ -301,6 +302,9 @@ def parse_options(args=None):
|
|||||||
help='Set logging to LEVEL level. Valid values are "debug", "info", "warning".')
|
help='Set logging to LEVEL level. Valid values are "debug", "info", "warning".')
|
||||||
parser.add_argument('-p', '--portable', dest='portable', action='store_true',
|
parser.add_argument('-p', '--portable', dest='portable', action='store_true',
|
||||||
help='Specify if this should be run as a portable app, ')
|
help='Specify if this should be run as a portable app, ')
|
||||||
|
parser.add_argument('-pp', '--portable-path', dest='portablepath', default=None,
|
||||||
|
help='Specify the path of the portable data, defaults to "{dir_name}".'.format(
|
||||||
|
dir_name=os.path.join('<AppDir>', '..', '..')))
|
||||||
parser.add_argument('-w', '--no-web-server', dest='no_web_server', action='store_true',
|
parser.add_argument('-w', '--no-web-server', dest='no_web_server', action='store_true',
|
||||||
help='Turn off the Web and Socket Server ')
|
help='Turn off the Web and Socket Server ')
|
||||||
parser.add_argument('rargs', nargs='?', default=[])
|
parser.add_argument('rargs', nargs='?', default=[])
|
||||||
@ -356,7 +360,14 @@ def main(args=None):
|
|||||||
application.setApplicationName('OpenLPPortable')
|
application.setApplicationName('OpenLPPortable')
|
||||||
Settings.setDefaultFormat(Settings.IniFormat)
|
Settings.setDefaultFormat(Settings.IniFormat)
|
||||||
# Get location OpenLPPortable.ini
|
# Get location OpenLPPortable.ini
|
||||||
portable_path = (AppLocation.get_directory(AppLocation.AppDir) / '..' / '..').resolve()
|
if args.portablepath:
|
||||||
|
if os.path.isabs(args.portablepath):
|
||||||
|
portable_path = Path(args.portablepath)
|
||||||
|
else:
|
||||||
|
portable_path = AppLocation.get_directory(AppLocation.AppDir) / '..' / args.portablepath
|
||||||
|
else:
|
||||||
|
portable_path = AppLocation.get_directory(AppLocation.AppDir) / '..' / '..'
|
||||||
|
portable_path = portable_path.resolve()
|
||||||
data_path = portable_path / 'Data'
|
data_path = portable_path / 'Data'
|
||||||
set_up_logging(portable_path / 'Other')
|
set_up_logging(portable_path / 'Other')
|
||||||
log.info('Running portable')
|
log.info('Running portable')
|
||||||
|
@ -29,6 +29,7 @@ from PyQt5 import QtCore, QtWidgets
|
|||||||
sys.modules['PyQt5.QtWebEngineWidgets'] = MagicMock()
|
sys.modules['PyQt5.QtWebEngineWidgets'] = MagicMock()
|
||||||
|
|
||||||
from openlp.core.app import OpenLP, parse_options
|
from openlp.core.app import OpenLP, parse_options
|
||||||
|
from openlp.core.common import is_win
|
||||||
from openlp.core.common.settings import Settings
|
from openlp.core.common.settings import Settings
|
||||||
from tests.utils.constants import RESOURCE_PATH
|
from tests.utils.constants import RESOURCE_PATH
|
||||||
|
|
||||||
@ -84,6 +85,28 @@ def test_parse_options_debug_and_portable():
|
|||||||
assert args.rargs == [], 'The service file should be blank'
|
assert args.rargs == [], 'The service file should be blank'
|
||||||
|
|
||||||
|
|
||||||
|
def test_parse_options_portable_and_portable_path():
|
||||||
|
"""
|
||||||
|
Test the parse options process works portable and portable-path
|
||||||
|
"""
|
||||||
|
# GIVEN: a a set of system arguments.
|
||||||
|
if is_win():
|
||||||
|
data_path = 'c:\\temp\\openlp-data'
|
||||||
|
else:
|
||||||
|
data_path = '/tmp/openlp-data'
|
||||||
|
sys.argv[1:] = ['--portable', '--portable-path', '{datapath}'.format(datapath=data_path)]
|
||||||
|
|
||||||
|
# WHEN: We we parse them to expand to options
|
||||||
|
args = parse_options()
|
||||||
|
|
||||||
|
# THEN: the following fields will have been extracted.
|
||||||
|
assert args.loglevel == 'warning', 'The log level should be set to warning'
|
||||||
|
assert args.no_error_form is False, 'The no_error_form should be set to False'
|
||||||
|
assert args.portable is True, 'The portable flag should be set to true'
|
||||||
|
assert args.portablepath == data_path, 'The portable path should be set as expected'
|
||||||
|
assert args.rargs == [], 'The service file should be blank'
|
||||||
|
|
||||||
|
|
||||||
def test_parse_options_all_no_file():
|
def test_parse_options_all_no_file():
|
||||||
"""
|
"""
|
||||||
Test the parse options process works with two options
|
Test the parse options process works with two options
|
||||||
|
Loading…
Reference in New Issue
Block a user