resolve conflicts relevant path file merging

This commit is contained in:
surbhi 2019-10-03 17:25:23 +05:30
commit 6cf9d40bb5
No known key found for this signature in database
GPG Key ID: 88928762974D3618

View File

@ -3,12 +3,18 @@ src/paths.py
============ ============
""" """
# pylint: disable=import-error # pylint: disable=import-error
from os import environ, path
import sys import logging
import re
import os import os
import re
import sys
from datetime import datetime from datetime import datetime
from shutil import move
from kivy.utils import platform from kivy.utils import platform
logger = logging.getLogger('default')
# When using py2exe or py2app, the variable frozen is added to the sys # When using py2exe or py2app, the variable frozen is added to the sys
# namespace. This can be used to setup a different code path for # namespace. This can be used to setup a different code path for
# binary distributions vs source distributions. # binary distributions vs source distributions.
@ -16,86 +22,74 @@ frozen = getattr(sys, 'frozen', None)
def lookupExeFolder(): def lookupExeFolder():
""" """Returns executable folder path"""
Folder with PyBitmessage binary (.exe, .app, ...). If it is run from source, it returns the source root
directory
"""
if frozen: if frozen:
if frozen == "macosx_app": exeFolder = (
# targetdir/Bitmessage.app/Contents/MacOS/Bitmessage # targetdir/Bitmessage.app/Contents/MacOS/Bitmessage
exeFolder = path.dirname(path.dirname(path.dirname(path.dirname(sys.executable)))) + path.sep os.path.dirname(sys.executable).split(os.path.sep)[0] + os.path.sep
else: if frozen == "macosx_app" else
exeFolder = path.dirname(sys.executable) + path.sep os.path.dirname(sys.executable) + os.path.sep)
elif __file__: elif __file__:
exeFolder = path.dirname(__file__) + path.sep exeFolder = os.path.dirname(__file__) + os.path.sep
else: else:
exeFolder = '' exeFolder = ''
return exeFolder return exeFolder
def lookupAppdataFolder(): # pylint: disable=too-many-branches def lookupAppdataFolder():
"""Folder with runtime data (like configuration, database, ...)""" """Returns path of the folder where application data is stored"""
# flake8: noqa=F821
import traceback
print traceback.print_tb
APPNAME = "PyBitmessage" APPNAME = "PyBitmessage"
if "BITMESSAGE_HOME" in environ: dataFolder = os.environ.get('BITMESSAGE_HOME')
dataFolder = environ["BITMESSAGE_HOME"] if dataFolder:
if dataFolder[-1] not in [path.sep, path.altsep]: if dataFolder[-1] not in (os.path.sep, os.path.altsep):
dataFolder += path.sep dataFolder += os.path.sep
elif sys.platform == 'darwin': elif sys.platform == 'darwin':
if "HOME" in environ: try:
dataFolder = path.join(environ["HOME"], "Library/Application Support/", APPNAME) + '/' dataFolder = os.path.join(
else: os.environ['HOME'],
stringToLog = ( 'Library/Application Support/', APPNAME
) + '/' # FIXME: should also be os.path.sep
except KeyError:
sys.exit(
'Could not find home folder, please report this message' 'Could not find home folder, please report this message'
' and your OS X version to the BitMessage Github.') ' and your OS X version to the BitMessage Github.')
if 'logger' in globals():
logger.critical(stringToLog) # pylint: disable=undefined-variable
else:
print stringToLog
sys.exit()
elif platform == 'android': elif platform == 'android':
dataFolder = path.join(os.environ['ANDROID_PRIVATE'] + '/', APPNAME) + '/' dataFolder = os.path.join(
os.environ['ANDROID_PRIVATE'] + '/', APPNAME) + '/'
elif 'win32' in sys.platform or 'win64' in sys.platform: elif 'win32' in sys.platform or 'win64' in sys.platform:
dataFolder = path.join(environ['APPDATA'].decode(sys.getfilesystemencoding(), 'ignore'), APPNAME) + path.sep dataFolder = os.path.join(
os.environ['APPDATA'].decode(
sys.getfilesystemencoding(), 'ignore'), APPNAME
) + os.path.sep
else: else:
from shutil import move
try: try:
dataFolder = path.join(environ["XDG_CONFIG_HOME"], APPNAME) dataFolder = os.path.join(os.environ['XDG_CONFIG_HOME'], APPNAME)
except KeyError: except KeyError:
dataFolder = path.join(environ["HOME"], ".config", APPNAME) dataFolder = os.path.join(os.environ['HOME'], '.config', APPNAME)
# Migrate existing data to the proper location if this is an existing install # Migrate existing data to the proper location
# if this is an existing install
try: try:
move(path.join(environ["HOME"], ".%s" % APPNAME), dataFolder) move(os.path.join(os.environ['HOME'], '.%s' % APPNAME), dataFolder)
stringToLog = "Moving data folder to %s" % (dataFolder) logger.info('Moving data folder to %s', dataFolder)
if 'logger' in globals():
logger.info(stringToLog) # pylint: disable=undefined-variable
else:
print stringToLog
except IOError: except IOError:
# Old directory may not exist. # Old directory may not exist.
pass pass
dataFolder = dataFolder + '/' dataFolder = dataFolder + os.path.sep
return dataFolder return dataFolder
def codePath(): def codePath():
"""Return the code path of the running instance""" """Returns path to the program sources"""
# pylint: disable=redefined-outer-name if not frozen:
if frozen == "macosx_app": return os.path.dirname(__file__)
codePath = environ.get("RESOURCEPATH") return (
elif frozen: # windows os.environ.get('RESOURCEPATH')
codePath = sys._MEIPASS # pylint: disable=no-member,protected-access if frozen == "macosx_app" else sys._MEIPASS)
else:
codePath = path.dirname(__file__)
return codePath
def tail(f, lines=20): def tail(f, lines=20):
"""Read last lines of a file. Like tail(1)""" """Returns last lines in the f file object"""
total_lines_wanted = lines total_lines_wanted = lines
BLOCK_SIZE = 1024 BLOCK_SIZE = 1024
@ -103,9 +97,9 @@ def tail(f, lines=20):
block_end_byte = f.tell() block_end_byte = f.tell()
lines_to_go = total_lines_wanted lines_to_go = total_lines_wanted
block_number = -1 block_number = -1
blocks = []
# blocks of size BLOCK_SIZE, in reverse order starting # blocks of size BLOCK_SIZE, in reverse order starting
# from the end of the file # from the end of the file
blocks = []
while lines_to_go > 0 and block_end_byte > 0: while lines_to_go > 0 and block_end_byte > 0:
if block_end_byte - BLOCK_SIZE > 0: if block_end_byte - BLOCK_SIZE > 0:
# read the last block we haven't yet read # read the last block we haven't yet read
@ -125,10 +119,12 @@ def tail(f, lines=20):
def lastCommit(): def lastCommit():
"""Git commitish of the currently checked out repository""" """
githeadfile = path.join(codePath(), '..', '.git', 'logs', 'HEAD') Returns last commit information as dict with 'commit' and 'time' keys
"""
githeadfile = os.path.join(codePath(), '..', '.git', 'logs', 'HEAD')
result = {} result = {}
if path.isfile(githeadfile): if os.path.isfile(githeadfile):
try: try:
with open(githeadfile, 'rt') as githead: with open(githeadfile, 'rt') as githead:
line = tail(githead, 1) line = tail(githead, 1)