#! /usr/bin/env tclsh

set sourceDirectory [file dirname [file normalize [info script]]]
lappend auto_path [file join $sourceDirectory lib]
package require xvfs

proc ::xvfs::callback::setOutputFileName {args} {
	return "/"
}

dict set ::myOwnVFS "" {
	type directory
	children {foo xvfs-create-synthetic}
}
dict set ::myOwnVFS "foo" {
	type file
	fileContents "abc"
}
dict set ::myOwnVFS "xvfs-create-synthetic" {
	type file
}

proc ::xvfs::callback::addOutputFiles {fsName} {
	for {set i 0} {$i < 100000} {incr i} {
		set filename [expr rand()]
		::xvfs::processFile $fsName "" $filename [dict create type file fileContents [expr rand()]]
		lappend retval $filename
	}

	dict set ::myOwnVFS "" children [list foo xvfs-create-synthetic {*}$retval]

	dict for {outputName fileContentsDict} $::myOwnVFS {
		set inputFile $outputName
		if {[dict exists $fileContentsDict inputFile]} {
			set inputFile [dict get $fileContentsDict inputFile]
		}
		::xvfs::processFile $fsName $inputFile $outputName $fileContentsDict
	}
	lappend retval {*}[dict keys $::myOwnVFS]

	return $retval
}

::xvfs::run --directory [pwd] --name synthetic
