windows scheduled task instructions and logging

master
JoYo 2022-01-05 17:48:39 -05:00
parent 4d81453236
commit 8571b71298
3 changed files with 91 additions and 28 deletions

2
.gitignore vendored
View File

@ -1,2 +1,4 @@
__pycache__/ __pycache__/
.vscode/ .vscode/
*.egg-info/
build/

View File

@ -12,6 +12,12 @@ On Windows, press `Windows Key + e` to open a file explorer and enter the follow
%HOME%\Documents\Elder Scrolls Online\ %HOME%\Documents\Elder Scrolls Online\
``` ```
or on Windows 11
```
Documents\Elder Scrolls Online\
```
Make a copy of the `live` folder and rename it to something meaningful like `old` or `backup`. Make a copy of the `live` folder and rename it to something meaningful like `old` or `backup`.
# Dependencies # Dependencies
@ -22,11 +28,61 @@ python3-pip
# Linux Installation # Linux Installation
Install `python3` and `pip3`, the following instructions are for Debian.
```
sudo apt install python3-pip
pip3 install .
```
Once the project is installed to python's packages you may invoke the addon script with the following command:
```
eso-banana-script
```
## Linux Scheduled
TODO linux chron job instructions.
# Windows Installation # Windows Installation
# Usage Install the latest Python 3 using the installer provided by [python.org](https://www.python.org/downloads/windows/).
# Linux Development Open [Windows Terminal](https://www.microsoft.com/en-US/p/windows-terminal/9n0dx20hk701) or any windows command prompt and navigate to this project.
Use the Python package manager PIP to install `eso-banana`.
```powershell
cd .\eso-banana\
pip install .
```
Once the project is installed to python's packages you may invoke the addon script with the following command:
```powershell
eso-banana-script.exe
```
## Windows Scheduled
To schedule a periodic background run of `eso-banana`, open Powershell as a user and enter the following commands.
```powershell
$Action = New-ScheduledTaskAction -Execute "eso-banana-script.exe" -Argument "--verbose"
$Trigger = New-ScheduledTaskTrigger -Daily -At 11am
$Settings = New-ScheduledTaskSettingsSet -RunOnlyIfNetworkAvailable -StartWhenAvailable -RunOnlyIfIdle
Register-ScheduledTask -TaskName "eso-banana" -Action $Action -Trigger $Trigger -Settings $Settings -Description "Elder Scrolls Online addon manager and a Tamriel Trade Centre price table updater."
```
To check to make sure the task is registered correctly, enter `Get-ScheduledTask` and check that the first entry looks similar:
```
TaskPath TaskName State
-------- -------- -----
\ eso-banana Ready
```
# Development
Use docker to test the python components. Use docker to test the python components.
For docker installation run the following commands on [Ubuntu 20.04](https://ubuntu.com/download/): For docker installation run the following commands on [Ubuntu 20.04](https://ubuntu.com/download/):

View File

@ -1,5 +1,6 @@
from argparse import ArgumentParser from argparse import ArgumentParser
from pathlib import Path from pathlib import Path
from platform import system
import logging import logging
from . import compare from . import compare
@ -13,18 +14,26 @@ def periodical_script():
description="Visit https://www.esoui.com/ to search for addons and their dependencies URLs. Edit addons.yaml in the ESO live path and add the URL for each addon for installation. " description="Visit https://www.esoui.com/ to search for addons and their dependencies URLs. Edit addons.yaml in the ESO live path and add the URL for each addon for installation. "
) )
parser.add_argument("-v", "--verbose", action="count", help="verbose logging") parser.add_argument("-v", "--verbose", action="count", help="verbose logging")
parser.add_argument( parser.add_argument("-p", "--eso_live_path")
"-p",
"--eso_live_path",
default=Path.home().joinpath("ESO/live/"),
help='default: "~/.steam/steam/steamapps/compatdata/306130/pfx/drive_c/users/steamuser/Documents/Elder Scrolls Online/live/"',
)
args = parser.parse_args() args = parser.parse_args()
if args.eso_live_path:
args.eso_live_path = Path(args.eso_live_path)
else:
if system() == "Windows":
args.eso_live_path = Path.home().joinpath(
"Documents\Elder Scrolls Online\live"
)
else:
args.eso_live_path = Path.home().joinpath(
".steam/steam/steamapps/compatdata/306130/pfx/drive_c/users/steamuser/Documents/Elder Scrolls Online/live/"
)
if args.verbose: if args.verbose:
logging.basicConfig( logging.basicConfig(
level=logging.DEBUG, level=logging.DEBUG,
format="%(asctime)s %(filename)s:%(lineno)d %(message)s", format="%(asctime)s %(filename)s:%(lineno)d %(message)s",
filename=args.eso_live_path.joinpath("banana.log"),
) )
else: else:
logging.basicConfig( logging.basicConfig(
@ -34,10 +43,6 @@ def periodical_script():
logging.info(args) logging.info(args)
if isinstance(args.eso_live_path, str):
if args.eso_live_path[:2] == "~/":
args.eso_live_path = Path.home().joinpath(args.eso_live_path[2:])
config_path = Path(args.eso_live_path).joinpath("addons.yaml") config_path = Path(args.eso_live_path).joinpath("addons.yaml")
config_path.touch(exist_ok=True) config_path.touch(exist_ok=True)
config_current = config.load(config_path) config_current = config.load(config_path)
@ -49,7 +54,7 @@ def periodical_script():
config_current = config.load(config_path) config_current = config.load(config_path)
logging.info(f'addons list created at "{config_path}"') logging.info(f'addons list created at "{config_path}"')
live_path = Path(args.eso_live_path).joinpath("AddOns") live_path = args.eso_live_path.joinpath("AddOns")
if not live_path.is_dir(): if not live_path.is_dir():
logging.error(f"eso_live_path_invalid_dir {live_path}") logging.error(f"eso_live_path_invalid_dir {live_path}")
@ -70,24 +75,28 @@ def periodical_script():
def ttc(): def ttc():
parser = ArgumentParser( parser = ArgumentParser(description="Tamriel Trade Centre price table updater.")
description="Visit https://www.esoui.com/ to search for addons and their dependencies URLs. Edit addons.yaml in the ESO live path and add the URL for each addon for installation. "
)
parser.add_argument("-v", "--verbose", action="count", help="verbose logging") parser.add_argument("-v", "--verbose", action="count", help="verbose logging")
parser.add_argument( parser.add_argument("-p", "--eso_live_path")
"-p",
"--eso_live_path",
default=Path.home().joinpath(
".steam/steam/steamapps/compatdata/306130/pfx/drive_c/users/steamuser/Documents/Elder Scrolls Online/live/"
),
help='default: "~/.steam/steam/steamapps/compatdata/306130/pfx/drive_c/users/steamuser/Documents/Elder Scrolls Online/live/"',
)
args = parser.parse_args() args = parser.parse_args()
if args.eso_live_path:
args.eso_live_path = Path(args.eso_live_path)
else:
if system() == "Windows":
args.eso_live_path = Path.home().joinpath(
"Documents\Elder Scrolls Online\live"
)
else:
args.eso_live_path = Path.home().joinpath(
".steam/steam/steamapps/compatdata/306130/pfx/drive_c/users/steamuser/Documents/Elder Scrolls Online/live/"
)
if args.verbose: if args.verbose:
logging.basicConfig( logging.basicConfig(
level=logging.DEBUG, level=logging.DEBUG,
format="%(asctime)s %(filename)s:%(lineno)d %(message)s", format="%(asctime)s %(filename)s:%(lineno)d %(message)s",
filename=args.eso_live_path.joinpath("banana.log"),
) )
else: else:
logging.basicConfig( logging.basicConfig(
@ -97,10 +106,6 @@ def ttc():
logging.info(args) logging.info(args)
if isinstance(args.eso_live_path, str):
if args.eso_live_path[:2] == "~/":
args.eso_live_path = Path.home().joinpath(args.eso_live_path[2:])
live_path = Path(args.eso_live_path).joinpath("AddOns") live_path = Path(args.eso_live_path).joinpath("AddOns")
if not live_path.is_dir(): if not live_path.is_dir():