Properly package
This commit is contained in:
parent
91c9387d4e
commit
b06e776850
16
README.md
16
README.md
|
@ -10,8 +10,14 @@ A small command line tool that displays information about your Borg backups.
|
|||
- Python 3.0+
|
||||
|
||||
## Usage
|
||||
1. *Optional: create a [virtual environment](https://docs.python.org/3/library/venv.html) and run `source <venv>/bin/activate`*
|
||||
2. Clone the respository: `git clone https://git.lain.faith/sorceress/vacuum-tube.git && cd vacuum-tube`
|
||||
3. Install dependencies: `pip3 install -r requirements.txt`
|
||||
4. Run: `python main.py`
|
||||
5. Edit the newly created configuration file and run `main.py` again
|
||||
1. Clone the respository: `git clone https://git.lain.faith/sorceress/vacuum-tube.git && cd vacuum-tube`
|
||||
2. Run `sudo pip install .` *(Or, without `sudo` if you wish to install it into `~/.local/bin/`)*
|
||||
3. Run `vacuum-tube`
|
||||
5. Edit the newly created configuration file and run `vacuum-tube` again
|
||||
|
||||
## Troubleshooting
|
||||
- ### vacuum-tube: command not found
|
||||
If you installed the package locally, your installation directory may not be in `$PATH`.
|
||||
You can add it with `export PATH="/some/directory:$PATH"` in your `.bashrc`/`.zshrc`/etc file.
|
||||
- ### No module named setuptools
|
||||
`pip install setuptools`
|
76
main.py
76
main.py
|
@ -1,76 +0,0 @@
|
|||
from prepare import borg_info_raw, readable_csize, csize, archive_num, last_archive_time, df_avail_readable, df_avail_bytes
|
||||
from rich import box
|
||||
from rich.console import Console
|
||||
from rich.layout import Layout
|
||||
from rich.padding import Padding
|
||||
from rich.panel import Panel
|
||||
from rich.progress import Progress, BarColumn
|
||||
from rich.style import Style
|
||||
from config import config
|
||||
|
||||
emphasis = Style(color=config['color'] or '#d89961', bold=True)
|
||||
|
||||
flomp = f'''[{emphasis}]
|
||||
.=--::
|
||||
-***##- ::. ...
|
||||
+**##*: =##*. =*****:
|
||||
:******+::.. :##*: :******.
|
||||
=*************+====-::+*****+
|
||||
.+**=:-==+++++****************:
|
||||
-***. .:--==+++++******+
|
||||
=**+. .:-+#***-
|
||||
:***= *****
|
||||
-***- -#***-
|
||||
.=+**=:. *****
|
||||
.:-+++=-:. =#***=
|
||||
.:-=*+=-:. :#****.
|
||||
.:-=+++-::*****=
|
||||
.:-=+****
|
||||
.:.
|
||||
'''
|
||||
|
||||
if borg_info_raw.returncode == 0:
|
||||
online = Padding('[#82bfe0 bold]◉[/#82bfe0 bold] Host online', (0, 2))
|
||||
else:
|
||||
online = Padding('[#34454f bold]◌[/#34454f bold] Host offline', (0, 2))
|
||||
|
||||
# it's hacky, but should work as expected
|
||||
used = Progress(
|
||||
'[progress.description]{task.description}',
|
||||
# space used
|
||||
f'[{emphasis}]{readable_csize}[/{emphasis}]',
|
||||
BarColumn(complete_style=emphasis, finished_style="#d34141"),
|
||||
# space available
|
||||
f'[{emphasis}]{df_avail_readable}[/{emphasis}]',
|
||||
'[progress.percentage]{task.percentage:>3.0f}%'
|
||||
)
|
||||
used.add_task('Used:', completed=csize, total=df_avail_bytes)
|
||||
|
||||
disk_usage = Panel(used, box=box.SQUARE, border_style=emphasis)
|
||||
|
||||
avail_backups = Panel(f"Available: [{emphasis}]{archive_num}[/{emphasis}] backups. Last backup from: [{emphasis}]{last_archive_time}[/{emphasis}]", box=box.SQUARE, border_style=emphasis)
|
||||
|
||||
if config['ascii_art']:
|
||||
console = Console(width=85, height=18)
|
||||
else:
|
||||
console = Console(width=70, height=8)
|
||||
|
||||
layout = Layout()
|
||||
layout.split_row(
|
||||
Layout(flomp, name="left"),
|
||||
Layout(name="right")
|
||||
)
|
||||
|
||||
layout['right'].split_column(
|
||||
Layout(online, size=1),
|
||||
Layout(disk_usage, size=3),
|
||||
Layout(avail_backups, size=4)
|
||||
)
|
||||
|
||||
layout['left'].visible = config['ascii_art']
|
||||
|
||||
# actually print the thing
|
||||
console.print(Panel.fit(
|
||||
layout,
|
||||
box=box.DOUBLE, border_style=emphasis
|
||||
))
|
|
@ -1,3 +0,0 @@
|
|||
rich==10.11.0
|
||||
toml==0.10.2
|
||||
tomli==1.2.1
|
|
@ -0,0 +1,25 @@
|
|||
from setuptools import setup, find_packages
|
||||
|
||||
setup(
|
||||
name='vacuumtube',
|
||||
version='1.0.0',
|
||||
author='Agatha V. Lovelace',
|
||||
author_email='agatharose@wantscuddl.es',
|
||||
description=('A small command line tool that displays information about your Borg backups'),
|
||||
license='CNPL v7+',
|
||||
url='https://git.lain.faith/sorceress/vacuum-tube',
|
||||
python_requires=">=3.0",
|
||||
packages=find_packages(),
|
||||
include_package_data=True,
|
||||
install_requires=(
|
||||
'rich==10.11.0',
|
||||
'toml==0.10.2',
|
||||
'tomli==1.2.1',
|
||||
'setuptools'
|
||||
),
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
'vacuum-tube = vacuumtube.main:main'
|
||||
]
|
||||
}
|
||||
)
|
|
@ -0,0 +1,82 @@
|
|||
from vacuumtube.config import config
|
||||
from vacuumtube.prepare import borg_info_raw, readable_csize, csize, archive_num, last_archive_time, df_avail_readable, df_avail_bytes
|
||||
from rich import box
|
||||
from rich.console import Console
|
||||
from rich.layout import Layout
|
||||
from rich.padding import Padding
|
||||
from rich.panel import Panel
|
||||
from rich.progress import Progress, BarColumn
|
||||
from rich.style import Style
|
||||
|
||||
|
||||
def main():
|
||||
emphasis = Style(color=config['color'] or '#d89961', bold=True)
|
||||
|
||||
flomp = f'''[{emphasis}]
|
||||
.=--::
|
||||
-***##- ::. ...
|
||||
+**##*: =##*. =*****:
|
||||
:******+::.. :##*: :******.
|
||||
=*************+====-::+*****+
|
||||
.+**=:-==+++++****************:
|
||||
-***. .:--==+++++******+
|
||||
=**+. .:-+#***-
|
||||
:***= *****
|
||||
-***- -#***-
|
||||
.=+**=:. *****
|
||||
.:-+++=-:. =#***=
|
||||
.:-=*+=-:. :#****.
|
||||
.:-=+++-::*****=
|
||||
.:-=+****
|
||||
.:.
|
||||
'''
|
||||
|
||||
if borg_info_raw.returncode == 0:
|
||||
online = Padding('[#82bfe0 bold]◉[/#82bfe0 bold] Host online', (0, 2))
|
||||
else:
|
||||
online = Padding('[#34454f bold]◌[/#34454f bold] Host offline', (0, 2))
|
||||
|
||||
# it's hacky, but should work as expected
|
||||
used = Progress(
|
||||
'[progress.description]{task.description}',
|
||||
# space used
|
||||
f'[{emphasis}]{readable_csize}[/{emphasis}]',
|
||||
BarColumn(complete_style=emphasis, finished_style="#d34141"),
|
||||
# space available
|
||||
f'[{emphasis}]{df_avail_readable}[/{emphasis}]',
|
||||
'[progress.percentage]{task.percentage:>3.0f}%'
|
||||
)
|
||||
used.add_task('Used:', completed=csize, total=df_avail_bytes)
|
||||
|
||||
disk_usage = Panel(used, box=box.SQUARE, border_style=emphasis)
|
||||
|
||||
avail_backups = Panel(f"Available: [{emphasis}]{archive_num}[/{emphasis}] backups. Last backup from: [{emphasis}]{last_archive_time}[/{emphasis}]", box=box.SQUARE, border_style=emphasis)
|
||||
|
||||
if config['ascii_art']:
|
||||
console = Console(width=85, height=18)
|
||||
else:
|
||||
console = Console(width=70, height=8)
|
||||
|
||||
layout = Layout()
|
||||
layout.split_row(
|
||||
Layout(flomp, name="left"),
|
||||
Layout(name="right")
|
||||
)
|
||||
|
||||
layout['right'].split_column(
|
||||
Layout(online, size=1),
|
||||
Layout(disk_usage, size=3),
|
||||
Layout(avail_backups, size=4)
|
||||
)
|
||||
|
||||
layout['left'].visible = config['ascii_art']
|
||||
|
||||
# actually print the thing
|
||||
console.print(Panel.fit(
|
||||
layout,
|
||||
box=box.DOUBLE, border_style=emphasis
|
||||
))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
|
@ -1,4 +1,4 @@
|
|||
from config import config
|
||||
from vacuumtube.config import config
|
||||
from datetime import datetime
|
||||
from rich import print
|
||||
import json
|
Loading…
Reference in New Issue