Files @ 13d0327a4abb
Branch filter:

Location: Morevna/src/morevna.py

Laman
rudimentary progress info
import sys
import os.path
from argparse import ArgumentParser

from hashtree import HashTree
from client import Client
from server import Server


def _checkFile(f):
	if not os.path.isfile(f):
		print("invalid file specified:",f,file=sys.stderr)
		sys.exit(1)


def buildTree(args):
	_checkFile(args.datafile)

	tree=HashTree.fromFile(args.datafile)
	tree.save(args.treefile)

def update(args):
	_checkFile(args.datafile)

	c=Client(args.datafile)
	blocksToTransfer=c.negotiate()
	c.sendData(blocksToTransfer)

def serve(args):
	_checkFile(args.datafile)
	if args.tree:
		_checkFile(args.tree)

	# debug copy default file
	import shutil
	origFilename=args.datafile
	filename=origFilename+"_"
	shutil.copyfile(origFilename,filename)

	s=Server(filename,args.tree)
	s.serve()


parser=ArgumentParser()
subparsers=parser.add_subparsers()

pBuild=subparsers.add_parser("build")
pBuild.add_argument("treefile", help="stored hash tree location")
pBuild.add_argument("datafile")
pBuild.set_defaults(func=buildTree)

pUpdate=subparsers.add_parser("update")
pUpdate.add_argument("-p","--port",type=int)
pUpdate.add_argument("--host",default="127.0.0.1")
pUpdate.add_argument("-t","--tree",help="stored hash tree location")
pUpdate.add_argument("datafile")
pUpdate.set_defaults(func=update)

pServe=subparsers.add_parser("serve")
pServe.add_argument("-p","--port",type=int)
pServe.add_argument("--host",default="")
pServe.add_argument("-t","--tree",help="stored hash tree location")
pServe.add_argument("datafile")
pServe.set_defaults(func=serve)

args=parser.parse_args()
args.func(args)