#!/usr/bin/python
import sys,os,re
#
#
#

if len(sys.argv) == 1:
	print "Usage: checkall <source file> [regular expression]"
	sys.exit(1)

try:
	f = open(sys.argv[1] + ".pfs" ,"r")
	proof_list = f.readlines()
	f.close()
except:
	print "No .pfs file found."
	proof_list = []
	

try:
	f = open(sys.argv[1] + ".dvs" ,"r")
	deriv_list = f.readlines()
	f.close()
except:
	deriv_list = []

proof_list = proof_list + deriv_list

if proof_list == []:
	print "No .dfs file found."
	raise SystemExit
	

if len(sys.argv) == 3:
	try:
		selectm = re.compile(sys.argv[2])
	except:
		print "Bad selection pattern"
		sys.exit(1)
else:
	selectm = ''

tried = []
proofs_checked = []
derivs_checked = []
for yn in proof_list:
	y = yn.strip()
	if selectm:
		if selectm.match(y):
			tried.append(y) 
		else:
			continue
#	z = os.popen(" check " + sys.argv[1] + " " + y + "|grep 'Proof checked'").read()

	if os.name == 'nt':
		check_output = os.popen("check.py " + sys.argv[1] + " " + y).readlines()
	else:
		check_output = os.popen("check " + sys.argv[1] + " " + y).readlines()
	for eachline in check_output:
		if "Proof checked" in eachline:
			if yn in deriv_list:
				derivs_checked.append(y)
			else:
				proofs_checked.append(y)
			print y, " checked"
			break
	else:
		print y

n_proofs_checked = len(proofs_checked)
n_derivs_checked = len(derivs_checked)
if n_derivs_checked == 0:
	if n_proofs_checked == 1:
		print n_proofs_checked, "proof checked."
	else:
		print n_proofs_checked, "proofs checked."
elif n_derivs_checked == 1:
	if n_proofs_checked == 1:
		print n_proofs_checked, "proof and",n_derivs_checked,"derivation checked."
	else:
		print n_proofs_checked, "proofs and",n_derivs_checked,"derivation checked."
else:
	if n_proofs_checked == 1:
		print n_proofs_checked, "proof and",n_derivs_checked,"derivations checked."
	else:
		print n_proofs_checked, "proofs and",n_derivs_checked,"derivations checked."
g = open("checked","w")
for y in proofs_checked + derivs_checked:
	g.write(y + '\n')
g.close()
print "\a"
