Then, open the fossil and add /path/to/opened/fossil/packages to $auto_path

There is also a helper script, .../ycl/bin/yclrun, which will automatically adjust $auto_path, and can be used as wrapper:

tclsh /path/to/opened/fossil/packages/ycl/bin/yclrun myscript.tcl

There is another helper script for an interactive shell:

tclsh /path/to/opened/fossil/packages/ycl/bin/yclsh

Zipguy 2013-11-24: How about if you put all those files into a folder structure? Even one folder, named 'ycl', or 'app-ycl' would work good. Then you could either zip them (or you could have gz'ed them), or SDX them (into a starkit) which would make it a lot easier to download them? There are way too many files for me to chase, individually, even though they look quite interesting. Probably a version would be good too, so you could check it, and see if you've already downloaded the latest version.

pyk: you can get this by logging into the repository as anonymous, and then choosing to download the zip or tarball for the commit you're interested in.

Example

chan

tplex

A threaded non-blocking channel multiplexer that has various modes. It can act as a buffer for a single channel, which is the right tool for capturing stderr from an open or exec pipeline. It can act as a multiplexer sending the contents of the channel to multiple recipeient channels. It can act as a sink to just drain a channel.

chunked

A reflected channel that wraps another channel, translating its contents from HTTP chunked format. Written as a reflected channel instead of a channel transform so that the wrapped channel can persist after the chunked wrapper is closed. This feature is useful for persistent HTTP connections.

dir

package require ycl::dir
namespace import [yclprefix]::dir

copynode

Copy a file or directory into an archive location, faithfully duplicating any symbolic links, recursively, in the path of the file. Does not copy the contents of a directory, just the directory node itself, which may be a symbolic link. In order to accomodate arbitrary symbolic links in the path of the file or directory, It is placed in the archive at the same absolute location, with the archive directory as the root.

duplicates

find duplicate files

deduplicate

remove duplicate files

iter

iterate over items in a directory tree.

for item in [dir iter /my/dir] {
#do stuff
}

exec

invoke

invoke a child program and asynchronously handle stdio, stderr, and exit code. See example at [open].

matrix

A close-to-drop-in replacement for tcllib'smatrix, but with better performance characteristics since it's more careful about avoiding duplication of data during operation.

ns

dupcmds

Copy all commands in a namespace to another namespace, refusing to overwrite any existing commands, and ignoring commands named in in $args. In contrast to oo::copy <cloned>, if a command is both an alias and a procedure, it is treated as an alias.

ensemble duplicate

Copy a namespace ensemble, and if necessary, the namespace that's backing it, along with any child namespaces, recursively. Also replaces in the ensemble map occurrences of the old ensemble name with the new ensemble name. dupensemble can be used as the simplese form of object system, where each namespace hierarchy is treated as an object. Tcl's copy-on-write semantics make this system much more efficient than one would expect at first blush. dupensemble is used by ycl::shelf

proc

A drop-in replacement for proc that provides a pre-evaluation hook and an error handling hook for each command in the script.

upobj

Together with proc::methods, proc::upmethods, and var::upmethods, compromises an object system much like ycl::context. Its method calling style provides for uplevel 1 to be the object's namespace, and uplevel 2 to be the caller of the method. This turned out to be a little clunky, and ycl shelf is now preferred to this system.

string

package require ycl::string

cmp

Like the Unixcmp command, compares two strings and returns the index at which they differ, or -1 if they are identical. Uses a bisect strategy for performance, and for memory efficiency does not extract substrings. Short-circuits when a difference is found.

shortmatch

same as string match, but return -1 if $string doesn't match, and the index of the last char of the shortest match if it does

dedent

remove common newline-whitespace

delimit

split (partition) a string into substrings using any combination of string, match, or regular expressions, returning both the substrings and the delimiters.