From: Curt Hibbs Date: 2003-01-24T04:01:46+09:00 Subject: ModuleBuilder [was: Can we attack the 'not enough libraries' thing straight on?] I would like to support something like this in FreeRIDE as part of our project-management/deployment support (which does not yet exist), and I would appreciate it if you could keep us informed as the project progresses. Thank you, Curt > -----Original Message----- Berger, Daniel wrote: > A few of us here in Denver are working on this issue. See > http://development.faeriemud.org/ModuleBuilder/. There's a link to CVS as > well. > > As far as standards, here is how the file layout is gonna be until someone > threatens me with a pair of pliers and a blowtorch (or Michael and Martin > kick me off the project): > > Layout will be based on package name. A script (ala h2xs, but > with a better > name and no assumptions that C is present) will be provided to > autogenerate > the directory & file layout. The initial version of this script is called > "rbuildmaker.rb" (name subject to change) and can be found under the bin > directory on the cvs page (follow the links from the url provided above). > > Examples: > > package "foo" - all package names will be lower case > > foo/ > lib/ - foo.rb (plus whatever other libs) > doc/ - documentation > test/ - test cases here > CHANGES - changelog > install.rb - a revamped, consistent, standard install script > MANIFEST - listing of package contents > test.rb - will run any unit tests included (for a "make > test", or the > like) > INSTALL - installation instructions > LICENSE - Licensing information (perhaps relegated to rd2) > > package "foo-bar" > > foo-bar/ > lib/foo/bar.rb > ... > > In the second example, bar.rb would then be installed in the > sitelibdir (by > default - would be configurable) under the directory "foo". My feeling is > that documentation should be as well (if provided). I wouldn't mind > autogenerating and installing ri docs or man pages either. Keeping > everything in the sitelibdir would also make it easier to > determine what 3rd > party modules have been installed on your system. I can't think > of a reason > not to install in the sitelibdir, unless it's a permissions/administration > issue. > > Some stub documenation will be automatically created for you as well. For > example, using the foo-bar package, the bar.rb file will start off like > this: > > module Foo > class Bar > VERSION = "0.1.0" > # Add code here > def self.VERSION > VERSION > end > end > end > =begin > = Description > # Add description > = Synopsis > # Add synopsis > = Class Methods > # Add class method docs > = Instance Methods > # Add instance method docs > = Constants > # Add constant docs > = Author > # Your name, email address, irc nick, whatever > = License > # Ruby's by default. Change as desired. > = Copyright > (C) #{current-year} All Rights Reserved. Change as desired > =end > > Thus, package name matches directory layout matches module-class > hierarchy. > > A couple of points to head off questions: > > lower case - You can make your package name whatever case you > like, but all > of *mine* are going to be lower case. Most people seem to follow this > tradition anyway. Let's make it a standard. > > stub - don't bug me about the stub documentation details. It's JUST STUB > DOCUMENTATION. I don't expect it to survive long. It's just there as a > guideline and to remind you to document certain things, like your License > and Copyright. > > rd2 - if you prefer rdoc, delete and retype as you see fit. See my point > about "stub" above. > > hypocrisy - I admit I do not follow these standards 100% in my > own packages > (but I'm close). However, I plan on converting all them where they differ > eventually. > > Now, autogenerating a file layout is easy. It's the install.rb script > that's going to be the heart of this project (and thus most difficult). > > Questions anyone? > > Regards, > > Dan > >