Add rsync command

This commit is contained in:
Ales (Shagi) Zabala Alava 2020-11-04 20:22:34 +01:00
parent ccbca5c79d
commit 376f8be080
3 changed files with 50 additions and 5 deletions

View File

@ -1,7 +1,7 @@
import argparse
import sys
from . import run, build, thumbnail
from . import run, build, thumbnail, rsync
def main():
@ -23,9 +23,11 @@ def main():
build,
run,
thumbnail,
rsync,
]
parser = argparse.ArgumentParser()
parser.set_defaults(command=None)
subparsers = parser.add_subparsers()
for command in commands:
command_parser = subparsers.add_parser(command.name, help=command.help_text)
@ -33,6 +35,9 @@ def main():
command.options(command_parser)
args = parser.parse_args()
if args.command is None:
parser.print_usage()
else:
for command in commands:
if args.command == command.name:
command.run(args)

41
negromate/web/commands/rsync.py Executable file
View File

@ -0,0 +1,41 @@
import subprocess
from pathlib import Path
name = 'rsync'
help_text = 'Sincronize the static web with the server'
def options(parser):
parser.add_argument(
'song_folder', type=Path,
help="Folder with the song database.")
parser.add_argument(
'host',
help="Target server.")
parser.add_argument(
'-u', '--user', default="root",
help="User in the server, defaults to root.")
parser.add_argument(
'-p', '--port', default=22, type=int,
help="Port of the ssh server, defaults to 22.")
parser.add_argument(
'-d', '--destination', default="/var/www/html",
help="Folder of the server, defaults to /var/www/html")
def run(args):
contents = str(args.song_folder) + '/'
destination = "{user}@{host}:{folder}".format(
user=args.user,
host=args.host,
folder=args.destination,
)
command = [
"rsync",
"-av",
'--rsh=ssh -p {}'.format(args.port),
contents,
destination,
]
print(" ".join(command))
subprocess.check_call(command)

View File

@ -1,4 +1,3 @@
import subprocess
from pathlib import Path
from negromate.songs.utils import generate_cover, generate_thumbnail