#! /usr/bin/python
"""
#+
# NAME:
#	www_help_sync
# PROCEDURE:
#	Compare ascii files
# CALLING SEQUENCE:
#	www_help_sync.py ext=ext new_dir old_dir
# INPUTS:
#	new_dir		directory containing new help files
#	old_dir		directory containing old help files
# CALLS:
#	tiny.args, tiny.start
# PROCEDURE:
#	HTML files in directory 'new_dir' are compared with files
#	in directory 'old_dir' with the same base name
#	(file name, plus extension).
#	HTML files in old_dir not present in new_dir are deleted.
#	HTML files in new_dir not present or different from the
#	corresponding file in old_dir is moved to new_dir.
#	The remaining HTML files in new_dir are deleted.
# MODIFICATION HISTORY:
#	FEB-2003, Paul Hick (UCSD/CASS; pphick@ucsd.edu)
#-
"""
import sys, os
from tiny import args, start, hide_env

if __name__ == '__main__':

	args = args( sys.argv )

	extension = start( '-ext=', sys.argv )
	if extension == '':
		extension = '.html'

	if len(args) == 3:
		new_dir = args[1]
		old_dir = args[2]
	else:
		new_dir = raw_input('New directory : ')
		old_dir = raw_input('Old directory : ')

	if not os.path.isdir(new_dir):
		print 'Not a directory: ', hide_env(new_dir)
		sys.exit(1)

	if not os.path.isdir(old_dir):
		print 'Not a directory: ', hide_env(old_dir)
		sys.exit(1)


	# Loop over old files. Delete files not present in new_dir.

	for base_file in os.listdir(old_dir):

		new_file = os.path.join(new_dir,base_file)
		old_file = os.path.join(old_dir,base_file)

		if (os.path.splitext(old_file))[1] == extension:

			if not os.path.isfile(new_file):
				os.remove(old_file)
				print 'removing ', hide_env(old_file)

	# Loop over new files. Only move different files to old_dir.
	# Delete the rest.

	for base_file in os.listdir(new_dir):

		new_file = os.path.join(new_dir,base_file)
		old_file = os.path.join(old_dir,base_file)

		if (os.path.splitext(base_file))[1] == extension:

			keep_old = os.path.isfile(old_file)

			if keep_old:
				new_lines = (open(new_file, 'r')).read()
				old_lines = (open(old_file, 'r')).read()
				keep_old = len(new_lines) == len(old_lines) and new_lines == old_lines

			if keep_old:
				os.remove(new_file)
			else:
				os.rename(new_file,old_file)
				print 'updating', hide_env(old_file)

	sys.exit(1)
