1
0
mirror of https://github.com/gryf/fs-uae-wrapper.git synced 2026-02-02 22:25:47 +01:00

6 Commits

Author SHA1 Message Date
7b0ef15eae Added dummy message class for systems with python without tk 2026-01-10 18:48:41 +01:00
59bd1b6029 Make tempfile prefixed with fs-uae-wrapper string.
Also, included test requirements into tox file, and fixed docs.
2025-09-25 18:50:28 +02:00
f5e6471555 Removed license classifier in favor of SPDX entry. 2025-04-18 16:05:37 +02:00
4c61c3d7ea Fix user provided whdload options 2024-09-14 17:00:28 +02:00
7e3d68624f Fixed packages find in pyproject 2024-09-14 15:59:25 +02:00
f311605019 Take version from git tag. 2024-09-14 11:49:44 +02:00
10 changed files with 58 additions and 22 deletions

View File

@@ -331,8 +331,6 @@ Options used:
* ``wrapper_archive`` (optional) path to the whdload archive, defaults to same
name as configuration file with some detected archive extension. Note, that
name is case sensitive
* ``wrapper_archiver`` (optional) archiver to use for storage save state -
default ``7z``.
This module is solely used with whdload distributed games (not just whdload
slave files, but whole games, which can be found on several places on the
@@ -365,7 +363,7 @@ where the minimum dependences are:
- `WHDLoad`_ 18.9
- `SetPatch`_ 43.6
and the ``S/startup-sequence`` should at east contain:
and the ``S/startup-sequence`` should at least contain:
.. code::
@@ -379,8 +377,8 @@ To leverage more pleasant UX, additionally those bits should be installed (or -
copied into base image filesystem):
- ``Assign`` and whatever commands you'll be use in scripts from your copy of
- `uaequit`_ - this will allow to quit emulator, after quiting game
Workbench
- `uaequit`_ - this will allow to quit emulator, after quiting game
- `kgiconload`_ - tool for reading icon and executing *default tool* with
optionally defined tool types as parameters (in this case: WHDLoad)
- `SKick`_ optionally - for kickstart relocations. Also images of corresponding
@@ -509,7 +507,7 @@ And execution is as usual:
Now, similar to the archive module, it will create temporary directory, unpack
base image there, unpack WHDLoad game archive, search for slave file, and
preapre ``s:whdload-startup``, and finally pass all the configuration to
prepare ``s:whdload-startup``, and finally pass all the configuration to
fs-uae.

View File

@@ -44,7 +44,7 @@ class Base(object):
if not self._validate_options():
return False
self.dir = tempfile.mkdtemp()
self.dir = tempfile.mkdtemp(prefix='fs-uae-wrapper-')
self._normalize_options()
self._set_assets_paths()

View File

@@ -0,0 +1,18 @@
"""
Display message as simple text on console
"""
import sys
class Message:
"""Just a fake message window for systems without TK"""
def __init__(self, msg):
self.msg = msg
self._process = None
def show(self):
sys.stdout.write(self.msg + "\n")
def close(self):
return None

View File

@@ -8,7 +8,11 @@ import pathlib
import shutil
import subprocess
from fs_uae_wrapper import file_archive, message
from fs_uae_wrapper import file_archive
try:
from fs_uae_wrapper.message import Message
except ModuleNotFoundError:
from fs_uae_wrapper.nogui_message import Message
class CmdOption(dict):
@@ -64,7 +68,7 @@ def operate_archive(arch_name, operation, text, params):
if archiver is None:
return False
msg = message.Message(text)
msg = Message(text)
if text:
msg.show()

View File

@@ -114,10 +114,10 @@ class Wrapper(base.ArchiveBase):
# find proper way to handle slave
# 1. check if there are user provided params
contents = f"cd {slave_path}\n"
if self.fsuae_options.get('wrapper_whdload_options'):
if self.all_options.get('wrapper_whdload_options'):
contents = (f"{contents}"
f"C:whdload "
f"{self.fsuae_options['wrapper_whdload_options']} "
f"{self.all_options['wrapper_whdload_options']} "
f"Slave={slave_fname}\n")
else:
# no params, find if kgiconload is available

View File

@@ -1,21 +1,20 @@
[build-system]
requires = ["setuptools >= 61.0"]
requires = ["setuptools >= 77.0", "wheel", "setuptools-git-versioning"]
build-backend = "setuptools.build_meta"
[project]
name = "fs-uae-wrapper"
authors = [{name = "Roman Dobosz", email = "gryf73@gmail.com"}]
license = {text = "BSD"}
license = "BSD-3-Clause"
description = "Automate archives support and state saves for fs-uae"
readme = "README.rst"
requires-python = ">=3.8"
keywords = ["uae", "fs-uae", "amiga", "emulator", "wrapper"]
version = "0.10.0"
dynamic = ["version"]
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: End Users/Desktop",
"License :: OSI Approved :: BSD License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
@@ -34,11 +33,14 @@ Homepage = "https://github.com/gryf/fs-uae-wrapper"
fs-uae-wrapper = "fs_uae_wrapper.wrapper:run"
[tool.setuptools]
py-modules = ["fs_uae_wrapper"]
packages = ["fs_uae_wrapper"]
[tool.distutils.bdist_wheel]
universal = true
[tool.setuptools-git-versioning]
enabled = true
[tool.ruff.lint]
select = [
"F", # pyflakes

View File

@@ -1,5 +0,0 @@
pytest
pytest-cov
pytest-pep8
coverage
flake8

View File

@@ -2,6 +2,7 @@ import os
from unittest import TestCase, mock
from fs_uae_wrapper import message
from fs_uae_wrapper import nogui_message
if os.environ.get('DISPLAY'):
import tkinter as tk
@@ -38,6 +39,19 @@ class TestMessage(TestCase):
msg._process.join.assert_called_once()
class TestNOPMessage(TestCase):
@mock.patch('sys.stdout.write')
def test_show(self, stdout_write):
msg = nogui_message.Message('display that')
msg.show()
stdout_write.assert_called_once()
def test_close(self):
msg = nogui_message.Message('display that')
self.assertIsNone(msg.close())
if os.environ.get('DISPLAY'):
# Tkinter needs graphic environment for the widgets
class TestSpawn(TestCase):

View File

@@ -225,7 +225,7 @@ class TestWHDLoad(TestCase):
listdir.return_value = contents
wrapper = whdload.Wrapper('Config.fs-uae', utils.CmdOption(), {})
whdl_opts = 'Preload SplashDelay=0 MMU PAL'
wrapper.fsuae_options['wrapper_whdload_options'] = whdl_opts
wrapper.all_options['wrapper_whdload_options'] = whdl_opts
with mock.patch('builtins.open', _open):
self.assertTrue(wrapper._find_slave())
handle = _open()

View File

@@ -8,7 +8,12 @@ usedevelop=True
setenv = COVERAGE_FILE = .coverage
commands = py.test --cov=fs_uae_wrapper --cov-report=term-missing
deps = -r{toxinidir}/test-requirements.txt
deps =
pytest
pytest-cov
pytest-pep8
coverage
flake8
[testenv:py3-flake8]
basepython = python3