8 Commits

Author SHA1 Message Date
gryf e3ae80244b Bump Fedora and Ubuntu versions 2026-05-17 17:54:47 +02:00
gryf a75739cee1 Bump default Debian version to 13 2026-03-25 13:14:57 +01:00
gryf cd1dc310c7 Handle keyboard interruption. 2026-03-17 19:15:59 +01:00
gryf 295fb59101 Bumped Fedora and Centos Stream versions 2026-02-27 10:26:28 +01:00
gryf 60e45b9bfc Added support for Fedora 42 2025-05-20 11:27:21 +02:00
gryf 88172acd67 Refactor Run class.
When using capture=True together with subprocess.run, interactive
session will not work, as all the output will be captured. Perfectly
well seen with `boxpy ssh`. This commit will fix this issue.
2025-05-05 13:09:09 +02:00
gryf 4c3aef3a85 Fix ssh command.
There was a leftover call for changed Run object initialization.
With this commit it's correct now.
2025-05-02 12:42:17 +02:00
gryf 189fbab17d Removed license classifier in favor of SPDX entry. 2025-04-18 16:04:42 +02:00
3 changed files with 27 additions and 18 deletions
+8 -2
View File
@@ -37,20 +37,26 @@ Tested distros
- 20.04
- 22.04
- 24.04
- 25.04
- 26.04
- Fedora
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- Centos Stream
- 8
- 9
- 10
- Debian
- 10 (buster)
- 11 (bullseye)
- 12 (bookworm)
- 13 (trixie) - prerelease
- 13 (trixie)
There is possibility to use whatever OS image which supports cloud-init. Use
the ``--image`` param for ``create`` command to pass image filename, although
@@ -76,7 +82,7 @@ You'll have ``boxpy`` command created for you as well.
.. code:: shell-session
$ boxpy -V
boxpy 1.9.2
boxpy 1.11.3
Other option is simply link it somewhere in the path:
+17 -10
View File
@@ -18,7 +18,7 @@ import requests
import yaml
__version__ = "1.11.0"
__version__ = "1.11.3"
CACHE_DIR = os.environ.get('XDG_CACHE_HOME', os.path.expanduser('~/.cache'))
CLOUD_IMAGE = "ci.iso"
@@ -275,8 +275,9 @@ class Run:
Helper class on subprocess.run()
command is a list with command and its params to execute
"""
def __init__(self, command):
result = subprocess.run(command, encoding='utf-8', capture_output=True)
def __init__(self, command, capture=True):
result = subprocess.run(command, encoding='utf-8',
capture_output=capture)
self.returncode = result.returncode
self.stdout = result.stdout.strip() if result.stdout else ''
@@ -1143,7 +1144,10 @@ class Fedora(Image):
'38': '1.6',
'39': '1.5',
'40': '1.14',
'41': '1.4'}
'41': '1.4',
'42': '1.1',
'43': '1.6',
'44': '1.7'}
def __init__(self, vbox, version, arch, fname=None):
super().__init__(vbox, version, arch)
@@ -1240,22 +1244,22 @@ DISTROS = {'ubuntu': {'username': 'ubuntu',
'realname': 'ubuntu',
'img_class': Ubuntu,
'amd64': 'amd64',
'default_version': '24.04'},
'default_version': '26.04'},
'fedora': {'username': 'fedora',
'realname': 'fedora',
'img_class': Fedora,
'amd64': 'x86_64',
'default_version': '41'},
'default_version': '44'},
'centos': {'username': 'centos',
'realname': 'centos',
'img_class': CentosStream,
'amd64': 'x86_64',
'default_version': '9'},
'default_version': '10'},
'debian': {'username': 'debian',
'realname': 'debian',
'img_class': Debian,
'amd64': 'amd64',
'default_version': '12'}}
'default_version': '13'}}
def get_image_object(vbox, version, image='ubuntu', arch='amd64'):
@@ -1635,7 +1639,7 @@ def connect(args):
f'@localhost:{conf.port}']
LOG.debug('Connecting to vm `%s` using command:\n%s', args.name,
' '.join(cmd))
return Run(cmd, False).returncode
return Run(cmd, capture=False).returncode
def _set_vmstate(name, state, guitype=None, poweroff=False):
@@ -1824,4 +1828,7 @@ def main():
if __name__ == '__main__':
sys.exit(main())
try:
sys.exit(main())
except KeyboardInterrupt:
sys.exit(50)
+2 -6
View File
@@ -1,5 +1,5 @@
[build-system]
requires = ["setuptools >= 61.0"]
requires = ["setuptools >= 77.0"]
build-backend = "setuptools.build_meta"
[project]
@@ -8,7 +8,7 @@ dynamic = ["version"]
authors = [
{name = "Roman Dobosz", email = "gryf73@gmail.com"}
]
license = {text = "GPLv3"}
license = "GPL-3.0-or-later"
description = "Run Linux cloud image on top of VirtualBox using commandline tool"
readme = "README.rst"
requires-python = ">=3.8"
@@ -18,7 +18,6 @@ classifiers = [
"Intended Audience :: End Users/Desktop",
"Topic :: Terminals",
"Topic :: Utilities",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
@@ -44,9 +43,6 @@ py-modules = ["box"]
[tool.setuptools.dynamic]
version = {attr = "box.__version__"}
[tool.distutils.bdist_wheel]
universal = true
[tool.ruff]
line-length = 79
indent-width = 4