import argparse
import os
import re
from glob import glob

if __name__ == '__main__':
	parser = argparse.ArgumentParser('Given a directory, get all the bigwig files and make trackDb file for UCSC track hub.')
	parser.add_argument('--bw_directory', help='Name of directory where Bigwig files are.')
	parser.add_argument('--url', help='Name of URL where these files will be available.')
	parser.add_argument('--output_file', help='Name of output file to output UCSC text to.')
	args = parser.parse_args()

	template = """track %s
type bigWig
bigDataUrl %s/%s
shortLabel %s
longLabel %s
visibility full
autoScale off
viewLimits 0:4
maxHeightPixels 50
"""
	file_list = glob(os.path.join(args.bw_directory, '*.bw'))

	if len(file_list) < 1:
		raise ValueError('No BW files found in specified directory %s' % args.bw_directory)
	
	with open(args.output_file, 'w') as output_file:
		for bw_file in file_list:
			args.url = args.url.strip('/')
			bw_name = os.path.join(args.bw_directory.split('/')[-1], bw_file.split('/')[-1])
			track_name = bw_name.replace('.', '-')
			track_name = bw_name.replace('.bw', '')
			track_text = template % (track_name, args.url, bw_file, track_name, track_name)
			output_file.write(track_text + '\n')
