diff --git a/tmkproject.rst b/tmkproject.rst index d13b283..eca40e1 100644 --- a/tmkproject.rst +++ b/tmkproject.rst @@ -7,13 +7,51 @@ SYNOPSIS -------- -mkproject.sh name type cost 'Brief Description' +:: + + mkproject.sh name type cost 'description' + + where, + + name Name of the project + type Programmnig lanuage (pl, py, sh ...) + cost What you wish to charge ($0.99 ...) + 'description' A brief description of the project + Must be passed as a single argument DESCRIPTION ----------- -Long description +``mkproject`` is a way to quickly produce the code and documentation +skeletons for a new project and to put these under ``CVS`` version +control. It allows you to "brand" them with your own company and +copyright information, as well specifying a standard license and +pricing (if any). + +The package comes with example templates for ``perl``, ``python``, and +``shell scripts``. These contain some of the standard code you may +want to use with every project. + +Also included is an example standard for writing documentation using +the ``Restructured Text`` markdown language. + +Finally, a ``makefile`` is included to produce documentation and +release packaging for your project. Documention is automatically +produced in a wide variety of formats including ``html``, +``PostScript``, ``pdf``, ``man``, and plain text. + +The package comes with a default ``Makefile`` usefull when creating a +``FreeBSD`` port of your project. + +Because everything is template-driven, it is simple to customize the +"standard" program and documentation templates to suit your needs. It +is also quite straightforward to add support for additional languages. + +For example, you almost certainly will want to change the licensing +terms contained in ``./common/license.txt``. Once you've edited +that file, every project you create with ``mkproject`` will have +YOUR licensing terms in it. REQUIRED ENVIRONMENT @@ -24,44 +62,63 @@ to do with producing documentation in various output formats from a Restructured Text source document: -- ``CVS`` -- ``python 2.x`` -- ``docutils`` -- ``TeX/LaTex`` (full implementaiton with utils) -- ``enscript`` -- ``flip`` + - ``CVS`` (You must have this properly configured for checkin, checkout.) + - ``python 2.x`` + - ``docutils`` + - ``TeX/LaTex`` (A full implementaiton w/utilities.) + - ``enscript`` + - ``flip`` -You also need a modern version of ``make``, like the one -from the GNU projects. Old BSD type ``make`` utilities -will not work. +You also need a modern version of ``make``, like the one from the GNU +projects. Old BSD type ``make`` utilities will not work. -GETTING STARTED ---------------- +BRANDING +-------- Before using ``mkproject`` you have to customize it for your -site-specific information. You do this by editing the ``.mkprojectrc`` -file. +site-specific information. You do this by editing the +``.mkprojectrc`` file. This branding information is then passed on to +every project you create thereafter. -Once you've done this, using ``mkproject`` is pretty simply:: - mkproject.sh type name copyright_date cost `Brief Description` +CREATING A NEW PROJECT +---------------------- -Where:: +Once you've edited ``.mkprojectrc``, you a ready to create a new +project. Recall that you do this:: - FILL THIS IN!!!!! + mkproject.sh name type cost 'description` This will generate a project under the ``PROJECTSDIR`` directory -(defined in ``.mkproject``) and check them in to ``CVS``. +defined in ``.mkproject``, and check them in to ``CVS``. MAKE OPTIONS ------------ -Projectes created by ``mkproject`` are controlled by -a ``makefile`` that supports a number of features: +Projects created by ``mkproject`` are controlled by a ``makefile`` +that allows you to do everything from produce documentation +to package everything for release. The ``makefile`` supports +the following major targets:: - FILL THIS IN!!!!!! + docs Produce project documentation is a wide variety of formats + including html, PostScript, pdf, man format, and plain text. + + release Create a release tarball in the project's ./Releases + directory. The tarball will contain both the name + and version number of the project. + + clean Remove the intermediate files produced during + the documentation process. + + scrub Remove (almost) everything, except for the makefile itself + and the support/release directories. + + init Scrub the working directory and checkout the last + committed copies from the CVS repository. + + version Display the current version of the project. HOW TO ADD A NEW LANGUAGE @@ -73,17 +130,23 @@ near the top to define the ``INTERPERTER`` and ``LANGUAGE`` variables appropriately to the new language. -- Create a new directory named after the language type - usually - the suffix used to name source files in that language. Under - this directory, place any files or templates you want as defaults - for every project of that type. At a minimum, you *must* include - a file named ``program.typesuffix``. This should be your default - skeleton code for that language. Do *not* include the initial - header block - ``mkproject`` will insert it for you. +- Create a new directory named after the language type - usually it is + the suffix used to name source files in that language. Under this + directory, place any files or templates you want as defaults for + every project of that type. At a minimum, you *must* include a file + named ``program.typesuffix``. This should be your default skeleton + code for that language. Do *not* include the initial header block - + ``mkproject`` will insert it for you. - In ``common/makefile`` add an ``enscript`` (or other pretty printer program) stanza to pretty print your program code. +- When writing your skeleton code and documentation files, there are + a number of tokens you can use which ``mkproject`` will fill in + when it creates a new project: + + + OTHER ----- @@ -124,9 +187,15 @@ :: - $Id: tmkproject.rst,v 1.100 2012/06/01 20:56:46 tundra Exp $ + $Id: tmkproject.rst,v 1.101 2012/06/01 21:44:35 tundra Exp $ You can find the latest version of this program at: http://www.tundraware.com/Software/mkproject + + + + + +