Skip to content
jako479Public

About

Game plan (.pln) editor, profile (.prf) editor, and other tools for Front Page Sports Football Pro '98 coaches and league managers.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Assistant to the Head Coach: athc

Game plan (.pln) editor, profile (.prf) editor, and other tools for Front Page Sports Football Pro '98 coaches and league managers.

Current state and what's next: STATUS.md · task list: TODO.md

Install

End-user: run athc-<ver>-setup.exe. It needs no Python, uv or internet, installs per user, and puts athc on PATH.

Making a release (end users skip this): build the setup.exe with packaging/release-build.ps1 and test it in Windows Sandbox with packaging/release-test.ps1; see docs/installer.md.

Commands

athc --help lists top-level commands athc <group> --help lists subcommands athc <group> <subcommand> --help for flags

Configuration

athc reads %LOCALAPPDATA%\athc\athc.toml for app-wide settings and leagues\<NAME>\ next to it for each league (league.toml and rule TOMLs); missing file, table or key falls back to defaults. A league's league.toml can hold a tool's table too, with only the keys that differ (convert-pdb so far). athc config set league NAME picks the league.

[toolname]
setting = "value"

Extending

Third-party packages add subcommands by registering entries under the athc.commands group in their own pyproject.toml:

[project.entry-points."athc.commands"]
mytool = "mypkg.cli:mytool"

The umbrella discovers them at runtime — no changes to athc needed.

See docs/design/architecture.md for the full architecture and the conventions every command follows.

Development

Install the project and its dev tools:

uv sync

Source runs read the dev config in config/dev/ (a full athc.toml plus league folders) instead of the installed one: point ATHC_CONFIG_DIR at that folder. ATHC_LOG_DIR does the same for the run log (athc.log), so a dev run never writes the installed one; set it the same way. For the VS Code terminal, in .vscode/settings.json (in a multi-root workspace, in the .code-workspace settings with ${workspaceFolder:athc}; open a new terminal to pick it up):

"terminal.integrated.env.windows": {
  "ATHC_CONFIG_DIR": "${workspaceFolder}/config/dev"
}

For F5, each .vscode/launch.json entry sets it on the debug process (terminal and launch env are independent; set both if you run both ways):

{
  "name": "athc profile check",
  "type": "debugpy",
  "request": "launch",
  "module": "athc",
  "args": ["profile", "check"],
  "console": "integratedTerminal",
  "env": { "ATHC_CONFIG_DIR": "${workspaceFolder}/config/dev" }
}

For one shell session:

$env:ATHC_CONFIG_DIR = "$PWD\config\dev"

Tests

uv run pytest

Coverage runs with every test run and fails below 92%.

The real-game tests are slow and skipped by default; they play the game in Windows Sandbox:

uv run pytest -m slow tests/integration/test_autocontinue_game.py --no-cov

They need:

  • Windows Sandbox, with its wsb command line.
  • The installer, built with packaging/release-build.ps1.
  • Football Pro '98 installed, and ATHC_GAME_DIR set once to the folder holding FbPro98: setx ATHC_GAME_DIR E:\SIERRA.
  • The PC unlocked while they run.

Each test plays its own copy of the game, so your install, settings and leagues never change.

License

MIT.

About

Game plan (.pln) editor, profile (.prf) editor, and other tools for Front Page Sports Football Pro '98 coaches and league managers.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages