From: Jim Freeze Date: 2003-05-28T01:13:42+09:00 Subject: Re: Project Directory Structure Thanks for all the input. A description of the Project Directory Structure and a quick 'hack' of a program to build the skeleton are listed below. Below is a suggested directory hierarchy. All of the directories, except possibly test/ ;), are optional. Most of the filenames listed are optional but are listed for consistent spelling and capitalization. CHANGELOG INSTALL LICENSE Manifest README # if multi lang, README.en, README.ja, etc TODO # optional setup.rb bin/ # ruby executables # other executables contrib/ # third party contributions doc/ # If multi lang, then use doc.en, doc.ja, etc man/ # for unix man api/ # rdoc output rd/ # if rd based docs tutorial/ examples/ ext/ ext_name/ extconf.rb ... other source lib/ # .rb files that go into RUBY_LIB # may want to use parallel directory structure below # site_ruby// src/ / test/ # test suites ------------------ #! /usr/bin/env ruby -w require 'fileutils' def usage <<-EOT Usage: #{File.basename($0)} project_path EOT end unless 1 == ARGV.size STDERR.puts usage exit 1 end root = File.expand_path(ARGV.shift) FileUtils.mkdir_p(root) files = %w{ CHANGELOG INSTALL LICENSE Manifest README TODO setup.rb } dirs = %w{ bin contrib doc doc/api examples ext lib src test } files.each { |file| path = File.join(root, file) puts "Creating file: #{path}" File.open(path,"w") {} } dirs.each { |dir| path = File.join(root, dir) puts "Creating directory: #{path}" FileUtils.mkdir_p(path) } % ./project_config.rb my_proj Creating file: /usr/home/jfreeze/my_proj/CHANGELOG Creating file: /usr/home/jfreeze/my_proj/INSTALL Creating file: /usr/home/jfreeze/my_proj/LICENSE Creating file: /usr/home/jfreeze/my_proj/Manifest Creating file: /usr/home/jfreeze/my_proj/README Creating file: /usr/home/jfreeze/my_proj/TODO Creating file: /usr/home/jfreeze/my_proj/setup.rb Creating directory: /usr/home/jfreeze/my_proj/bin Creating directory: /usr/home/jfreeze/my_proj/contrib Creating directory: /usr/home/jfreeze/my_proj/doc Creating directory: /usr/home/jfreeze/my_proj/doc/api Creating directory: /usr/home/jfreeze/my_proj/examples Creating directory: /usr/home/jfreeze/my_proj/ext Creating directory: /usr/home/jfreeze/my_proj/lib Creating directory: /usr/home/jfreeze/my_proj/src Creating directory: /usr/home/jfreeze/my_proj/test % ls -F my_proj/ CHANGELOG Manifest bin/ examples/ setup.rb INSTALL README contrib/ ext/ src/ LICENSE TODO doc/ lib/ test/ -- Jim Freeze ---------- Some people are born mediocre, some people achieve mediocrity, and some people have mediocrity thrust upon them. -- Joseph Heller, "Catch-22"