47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
"""\
|
|
@file logsdir.py
|
|
@author Nat Goodspeed
|
|
@date 2024-09-12
|
|
@brief Locate the Second Life logs directory for the current user on the
|
|
current platform.
|
|
|
|
$LicenseInfo:firstyear=2024&license=viewerlgpl$
|
|
Copyright (c) 2024, Linden Research, Inc.
|
|
$/LicenseInfo$
|
|
"""
|
|
|
|
import os
|
|
from pathlib import Path
|
|
import platform
|
|
|
|
class Error(Exception):
|
|
pass
|
|
|
|
# logic used by SLVersionChecker
|
|
def logsdir():
|
|
app = 'SecondLife'
|
|
system = platform.system()
|
|
if (system == 'Darwin'):
|
|
base_dir = os.path.join(os.path.expanduser('~'),
|
|
'Library','Application Support',app)
|
|
elif (system == 'Linux'):
|
|
base_dir = os.path.join(os.path.expanduser('~'),
|
|
'.' + app.lower())
|
|
elif (system == 'Windows'):
|
|
appdata = os.getenv('APPDATA')
|
|
base_dir = os.path.join(appdata, app)
|
|
else:
|
|
raise ValueError("Unsupported platform '%s'" % system)
|
|
|
|
return os.path.join(base_dir, 'logs')
|
|
|
|
def latest_file(dirpath, pattern):
|
|
files = Path(dirpath).glob(pattern)
|
|
sort = [(p.stat().st_mtime, p) for p in files if p.is_file()]
|
|
sort.sort(reverse=True)
|
|
try:
|
|
return sort[0][1]
|
|
except IndexError:
|
|
raise Error(f'No {pattern} files in {dirpath}')
|