Documentation

Not logged in
Bounty program for improvements to Tcl and certain Tcl packages.


[ Home | Main Table Of Contents | Table Of Contents | Keyword Index ]

NAME

kettle - Kettle - Core

Table Of Contents

SYNOPSIS

package require Tcl 8.5 9

kettle tcl
kettle tclapp path
kettle critcl3
kettle depends-on path...
kettle doc-destination path
kettle doc ?docroot?
kettle figures ?figroot?
kettle gh-pages
kettle testsuite ?testroot?
kettle gui make
kettle tool declare names ?validator?
kettle tool get name
kettle invoke
kettle option define
kettle option onchange
kettle option no-work-key
kettle option exists
kettle option names
kettle option help
kettle option set
kettle option set-default
kettle option set!
kettle option unset
kettle option get
kettle option type
kettle option save
kettle option load
kettle option config
kettle ovalidate enum
kettle ovalidate any
kettle ovalidate string
kettle ovalidate boolean
kettle ovalidate listsimple
kettle ovalidate directory
kettle ovalidate readable.file
kettle ovalidate path
kettle path bench-file path
kettle path bindir ?path?
kettle path cat path arg...
kettle path cathead path n arg...
kettle path copy-file src dstdir
kettle path copy-files dstdir arg...
kettle path critcl3-package-file file
kettle path diagram-file path
kettle path doctools-file path
kettle path dry-barrier ?dryscript?
kettle path exec arg...
kettle path fixhashbang file shell
kettle path foreach-file path pv script
kettle path grep pattern data
kettle path htmldir ?path?
kettle path in path script
kettle path incdir ?path?
kettle path install-application src dstdir
kettle path install-file-group label dstdir arg...
kettle path install-file-set label dstdir arg...
kettle path install-script src dstdir shell
kettle path kettle-build-file path
kettle path libdir ?path?
kettle path mandir ?path?
kettle path norm path
kettle path pipe lv script arg...
kettle path relative base dst
kettle path relativecwd dst
kettle path relativesrc dst
kettle path remove-path base path
kettle path remove-paths base arg...
kettle path rgrep pattern data
kettle path scan label root predicate
kettle path script
kettle path set-executable path
kettle path sourcedir ?path?
kettle path strip path prefix
kettle path tcl-package-file file
kettle path tcltest-file path
kettle path tmpfile ?prefix?
kettle path uninstall-application src dstdir
kettle path uninstall-file-group label dstdir
kettle path uninstall-file-set label dstdir arg...
kettle path write path contents arg...
kettle recipe define
kettle recipe parent
kettle recipe exists
kettle recipe names
kettle recipe help
kettle recipe run
kettle status begin
kettle status fail
kettle status ok
kettle status is
kettle status save
kettle status load
kettle status clear
kettle io setwidget w
kettle io for-gui script
kettle io for-terminal script
kettle io puts arg...
kettle io trace text
kettle io trace-on
kettle io animation begin
kettle io animation write text
kettle io animation indent text
kettle io animation last text
kettle io tag script
kettle io mtag text
lambda arguments body ?arg...?
lambda@ namespace arguments body ?arg...?
try arg...
kettle strutil indent text prefix
kettle strutil padl list
kettle strutil padr list
kettle strutil reflow text ?prefix?
kettle strutil undent text

DESCRIPTION

Welcome to Kettle, an application and set of packages providing support for the easy building and installation of pure Tcl packages, and Critcl based Tcl packages.

Please read the document Kettle - Introduction to Kettle, if you have not done so already, to get an overview of the whole system.

This document is the reference to all commands provided by the kettle package, from the user-visible declarations to the lowest utilities.

It is intended for both power-users wishing to write their own high-level commands linking into the existing foundations and developers and maintainers of kettle itself.

A basic user should read Kettle - Application - Build Interpreter and Kettle - Build Declarations instead.

Overview

The high-level architecture is shown in the image below:

This document is concerned with the lowest level shown, the core kettle package itself. The inner boxes of that architectural box show the parts which are user-visible, i.e. providing the DSL commands explained in Kettle - Build Declarations. For the details we have

In this image we now see all the components found inside of the kettle package, their organization into layers and their dependencies. The latter is actually a bit simplified, showing only the dependencies between adjacent layers and leaving out the dependencies crossing layers. Adding them would make the image quite a bit more crowded.

The green boxes are again the user-visible parts, either for the build declarations. The rest is internal. Note how and that the components found in the blue box are all dependent on each other, i.e. these are in circular dependencies.

The names in the boxes directly refer to the file names containing the code of the component, without the extension, ".tcl". The only file not mentioned is "kettle.tcl" which is the entrypoint to the package and sources all the others. Each component C is generally served by a single ensemble command, "kettle C". The exceptions are the components exporting the user-visible declaration commands. Their commands, while still named "kettle C", are not ensembles, but the one command in that component.

The following sections go through the components from the top down to the bottom, starting with the user visible commands described in Kettle - Build Declarations, covering all the green boxes. For the remainder:

Not convered in the above is "standard.tcl". This file does not export any commands to document. It unconditionally defines the standard recipes instead. These are the recipes which are always available, in contrast to the recipes dynamically created by the declarations commands in response to their scanning of a package source directory.

Build declarations

Graphical Interface Support

This layer contains the command for the creation of the standard graphical interface to the system.

Tool handling

This layer contains commands to manage the declaration of a dependency on external comands, and their use.

Recursive invokations

The commands of this layer enable recipes to recursively invoke other recipes, for the current and in other packages.

Option database

This layer manages the option database, which both holds the configuration options, their definitions and values, as also named shared global state.

Option Types and Validation

This layer defines the validation types usable by the options.

Path utilities

This layer contains the commands ...

Recipe database

This layer contains the commands managing the database of all known recipes, ready for execution.

Status management

The command of this layer manage the status of the currently executing recipe and the database holding the knowledge about all executed recipes, keyed by their name, location and relevant configuration. This database is shared among instances of kettle during recursive invokation.

IO virtualization

This section describes the IO virtualization layer used to decouple the higher layer's output from the actual destination, terminal or gui log window.

General Utilities

This, the lowest layer of the system contains general utility commands for string processing, anonymous procedures and error handling.

Anonymous procedures

Error handling

String processing

License

This package, written by Andreas Kupries, is BSD licensed.

Bugs, Ideas, Feedback

This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such at the Kettle Tracker. Please also report any ideas for enhancements you may have for either package and/or documentation.

KEYWORDS

build tea

CATEGORY

Build support