Commit af716146 authored by carlosperate's avatar carlosperate

Update formatting of server std output

parent dc9b6563
This diff is collapsed.
#!/usr/bin/env python2
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Entry point for the ArdublocklyServer application.
#
# Copyright (c) 2015 carlosperate https://github.com/carlosperate/
# Copyright (c) 2017 carlosperate https://github.com/carlosperate/
# Licensed under the Apache License, Version 2.0 (the "License"):
# http://www.apache.org/licenses/LICENSE-2.0
#
from __future__ import unicode_literals, absolute_import
from __future__ import unicode_literals, absolute_import, print_function
import os
import re
import sys
......@@ -22,8 +22,9 @@ import ardublocklyserver.compilersettings
def open_browser(open_file):
"""
Start a browser in a separate thread after waiting for half a second.
"""Start a browser in a separate thread after waiting for half a second.
:param open_file: URL for the browser to open.
"""
def _open_browser():
webbrowser.get().open('http://localhost:%s/%s' %
......@@ -34,40 +35,37 @@ def open_browser(open_file):
def find_ardublockly_dir(search_path):
"""
Navigates within each node of a given path and tries to find the Ardublockly
project root directory. It assumes that the project root with have an folder
"""Find the Ardublockly project directory absolute path.
Navigates within each node of given path and tries to find the Ardublockly
project root directory. Assumes that the project root will have an folder
name ardublockly with an index.html file inside.
This function is required because this script can end up in executable form
in different locations of the project folder, and a literal relative path
should not be assumed.
in different locations of the project folder depending on the platform.
:param search_path: Path in which to find the Ardublockly root project
folder.
:return: Path to the Ardublockly root folder.
If not found returns None.
:param search_path: Path starting point to search the Ardublockly project
root folder.
:return: Path to the Ardublockly root folder. If not found returns None.
"""
path_to_navigate = os.path.normpath(search_path)
# Navigate through each path node starting at the bottom until there are
# no folders left
# Navigate through each path node from the bottom up
while path_to_navigate:
# Check if file /ardublokly/index.html exists within current path
# Check if file ardublockly/index.html exists within current path
if os.path.isfile(
os.path.join(path_to_navigate, 'ardublockly', 'index.html')):
# Found the right folder, return it
# Found the right folder
return path_to_navigate
path_to_navigate = os.path.dirname(path_to_navigate)
# The right folder wasn't found, so return input path
# The right folder wasn't found, so return None to indicate failure
return None
def parsing_cl_args():
"""
Processes the command line arguments. Arguments supported:
"""Process the command line arguments.
Arguments supported:
-h / --help
-s / --serverroot <working directory>
:return: Dictionary with available options(keys) and value(value).
"""
# Set option defaults
......@@ -100,41 +98,42 @@ def parsing_cl_args():
# fails silently maintaining the current working directory.
# Use regular expressions to catch this corner case.
if re.match("^[a-zA-Z]:$", arg):
print('The windows drive letter needs to end in a slash, ' +
print('The windows drive letter needs to end in a slash, '
'eg. %s\\' % arg)
sys.exit(1)
# Check if the value is a valid directory
arg = os.path.normpath(arg)
if os.path.isdir(arg):
server_root = arg
print ('Parsed "%s" flag with "%s" value.' % (opt, arg))
print('Parsed "%s" flag with "%s" value.' % (opt, arg))
else:
print('Invalid directory "' + arg + '".')
sys.exit(1)
elif opt in ('-b', '--nobrowser'):
launch_browser = False
print ('Parsed "%s" flag. No browser will be opened.' % opt)
print('Parsed "%s" flag. No browser will be opened.' % opt)
elif opt in ('-f', '--findprojectroot'):
find_project_root = True
print ('Parsed "%s" flag. The ardublockly project root will be '
print('Parsed "%s" flag. The ardublockly project root will be '
'set as the server root directory.' % opt)
else:
print('Flag ' + opt + ' not recognised.')
print('Flag "%s" not recognised.' % opt)
return find_project_root, launch_browser, server_root
def main():
"""
"""Main entry point for the application.
Initialises the Settings singleton, resolves paths, and starts the server.
"""
print('Running Python %s (%s bit) on %s' % (platform.python_version(),
(struct.calcsize('P') * 8), platform.platform()))
print('\n\n======= Parsing Command line arguments =======\n')
print('\n======= Parsing Command line arguments =======')
find_project_root, launch_browser, server_root = parsing_cl_args()
print('\n\n======= Resolving server and project paths =======\n')
print('\n======= Resolving server and project paths =======')
# Based on command line options, set the server root to the ardublockly
# project root directory, a directory specified in the arguments, or by
# default to the project root directory.
......@@ -144,7 +143,7 @@ def main():
print('The Ardublockly project root folder could not be found within '
'the %s directory !' % this_file_dir)
sys.exit(1)
print("Ardublockly root directory: %s" % ardublockly_root_dir)
print('Ardublockly root directory: %s' % ardublockly_root_dir)
if find_project_root is True or server_root is None:
server_root = ardublockly_root_dir
......@@ -153,19 +152,19 @@ def main():
if not os.path.commonprefix([server_root, ardublockly_root_dir]):
print('The Ardublockly project folder needs to be accessible from '
'the server root directory !')
print("Selected server root: %s" % server_root)
print('Selected server root: %s' % server_root)
print('\n\n======= Loading Settings =======')
print('\n======= Loading Settings =======')
# ServerCompilerSettings is a singleton, no need to save instance
ardublocklyserver.compilersettings.ServerCompilerSettings(
ardublockly_root_dir)
print('\n\n======= Starting Server =======\n')
print('\n======= Starting Server =======')
if launch_browser:
# Find the relative path from server root to ardublockly html
ardublockly_html_dir = os.path.join(ardublockly_root_dir, 'ardublockly')
relative_path = os.path.relpath(ardublockly_html_dir, server_root)
print("Ardublockly page relative path from server root: %s" %
print('Ardublockly page relative path from server root:\n\t/%s/' %
relative_path)
open_browser(relative_path)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment