#!/usr/bin/env bash
log_file=/var/log/hash-files.log
md5_bin=$(which md5sum)
mktemp_bin=$(which mktemp)
DateTimeStamp=$(date +\%D_\%T)

set -a
source .env 2>&1 > /dev/null
set +a

## Functions
############

write_log () {
#echo "		++ Write to log.
#		+++++++++++++++"
## Use on systems managed with systemd
#	printf 'hash-files:	%s\n' "$1" | systemd-cat
	printf '%s	hash-files:	%s\n' "$DateTimeStamp" "$1" >> $log_file
}

create_list_of_files () {
#echo "=== Get list of files in $Working_Directory. ===
#=================================================="
	IFS=$'\n'
	for file in $(find $Working_Fullpath -maxdepth 1 -type f); do
		list_of_files+=( $file )
	done	
	write_log "List of files created successfully."
	unset IFS
}

mdls_files () {
	IFS=$'\n'
	for file in $list_of_files; do
		echo "=== mdls info ===
			==========="
		mdls $file
	done
}
hash_files () {
#echo "=== Hash files. ===
#======================"
	IFS=$'\n'
	for file in ${list_of_files[@]}; do
		hash=$($md5_bin $file | awk '{ print $1 }')
		list_of_hashes+=( $hash )
	done
	write_log "Files hashed successfully."
	unset IFS
}

create_csv () {
#echo "=== Create array of comma-separated-values. ===
#=================================================="
	for i in ${!list_of_files[@]}; do
		csv_array+=( ${list_of_files[i]},${list_of_hashes[i]} )
	done
	export csv_array
	write_log "CSV Array creation successful."
}

write_data () {
#echo "=== Write data to a .csv file. ===
#===================================="
	temp_csv_file=$($mktemp_bin)
	printf '%s,%s\n' "File Path" "File Hash" >> $temp_csv_file
	for line in ${csv_array[@]};do
		printf '%s\n' $line
	done >> $temp_csv_file
#	cat $temp_csv_file
	write_log "$temp_csv_file written successfully."
}

cleanup () {
	write_log "Cleanup completed successfully."
}

## Main
#######

trap cleanup EXIT

echo "Main Start"
create_list_of_files
mdls_files
#hash_files
#if [ ${#list_of_files[@]} != ${#list_of_hashes[@]} ];then
#	echo "Error! Number of files and hashes differs. Exiting..." && exit
#else
#	create_csv
#fi
#write_data

#while $list_of_files >=1; do
#done