If Tcl had a CPAN-like repository system, what would a package file look like? What data would you need to describe the contents of a package for download? I came up with this basic idea based on combinations of other standards already available. What else does it need? I realize that others have already gone at this, but I don't think there has ever been any kind of group consensus as to what this thing should really include. How much data is too much? Remember: KISS (Keep it Simple, Stupid).
Package: sample Name: Sample Extension Summary: A sample package that does nothing really. Version: 1.0 Author: Damon Courtney Packager: Damon Courtney Copyright: GPL Created: 10/10/2001 Updated: 10/20/2002 Categories: Sources: http://www.sample.org/sample.zip Provides: sample-1.0 sample::parser-1.0 Requires: tclxml-1.0 tdom-1.0 Exports: sample::init sample::doit sample::main Platforms: Windows-x86 Linux-x86 source tcl Description: .This is a description. . .Some more stuff here. . .Ending line. Files: LICENSE SIZE CHECKSUM sample.tcl SIZE CHECKSUM sample.txt SIZE CHECKSUM
Most of these are pretty obvious, but I'll explain a few anyway.
Provides: Specifies the Tcl packages provided by this package.
Requires: Specifies the Tcl packages that this package depends on.
Package names are defined as suggested by TIP #189: Tcl Modules.
Exports: A list of Tcl-level commands that are provided by the packages.
Platforms: A list of binary platforms as well as "source" if the source code to compile is also included, and "tcl" if the package has Tcl-only source. A tcl-only package would only specify "tcl" as its available platforms.
I open the floor up for discussion.