From: <sun...@us...> - 2004-12-21 04:58:16
|
Update of /cvsroot/crystal/CS/bin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27568/bin Modified Files: jobber.pl Added Files: jobber.cfg jobber.cfg-template Log Message: Eric Sunshine generalized `jobber.pl' to make it project-agnostic. It can now be used by any project for performing maintenance tasks. The task list and project-specific configuration are now read from an external configuration file. (For instance, it can now re-generate project files and publish online documentation for CEL by reading a configuration file specific to CEL; it is no longer tied to CS.) Also added `jobber.cfg-template', an example configuration file which projects can copy and modify as needed. --- NEW FILE: jobber.cfg --- #============================================================================== # jobber.cfg # # Copyright (C) 2000-2004 by Eric Sunshine <sun...@su...> # # Crystal Space-specific configuration for jobber.pl, a generalized tool for # performing maintenance tasks on a project's source base and documentation. # The configuration file is just normal Perl code. # # For Crystal Space, we configure jobber.pl to checkout the Crystal Space # source tree from the CVS repository and then perform the following tasks, # after which it commits any changes back to the repository: # # * Repair broken @node directives and @menu blocks in Texinfo files. # * Convert Texinfo documentation to HTML format. # * Build the public API reference manual. # * Build the developer's API reference manual. # * Re-build Visual-C++ DSW/DSP and SLN/VCPROJ project files. # * Re-build the Swig-generated Python and Perl5 files. # * Make all generated HTML (manual and API) available online for browsing. # * Make archives of the generated HTML available for download. # #============================================================================== # Minimum jobber.pl version expected by this configuration. jobber_require(32); #============================================================================== # *** External Client Configuration Section *** # # Use this section to configure tools or environment which might impact # jobber.pl indirectly. For instance, you might augment the PATH environment # variable or set the CVS_RSH environment variable. At the command-line, # jobber.pl allows users to define arbitrary run-time properties via the --set # option. These properties can be accessed by consulting the %jobber_properties # hash. For instance, the command-line argument "--set foo=bar" sets "bar" as # the value of $jobber_properties{foo}. #============================================================================== #------------------------------------------------------------------------------ # We prefer that the CVS username is specified on the command-line via # "--set cvsuser=someone". #------------------------------------------------------------------------------ exists $jobber_properties{'cvsuser'} or die "ERROR: You must set the CVS username via `--set cvsuser=someone'\n"; my $cvsuser = $jobber_properties{'cvsuser'}; #------------------------------------------------------------------------------ # The parent location where browseable and downloadable Crystal Space # documentation is placed. Used in the composition of $jobber_browseable_dir # and $jobber_package_dir. #------------------------------------------------------------------------------ my $cs_base_doc_dir = '/home/groups/c/cr/crystal/htdocs/docs'; #------------------------------------------------------------------------------ # SourceForge's shell machine does not have compilers or other build tools # installed, so we can not invoke Crystal Space's configure script to prepare # the project. Instead, we fake up project configuration by manually creating # a minimal Jamconfig and Jamfile. #------------------------------------------------------------------------------ my $configure = "csver=`./configure --version | awk '/crystal/ { print \$3 }'`\n" . "csverlist=`echo \$csver | tr '.' ' '`\n" . "cscopy=`sed '/\\[[Cc]opyright/!d;s/[^[]*\\[\\([^]]*\\)\\].*/\\1/'" . " < configure.ac`\n" . "cat << EOF > Jamconfig\n" . "CMD.C++ ?= \"g++\" ;\n" . "CMD.CC ?= \"gcc\" ;\n" . "CMD.DOXYGEN ?= \"doxygen\" ;\n" . "CMD.DVIPS ?= \"dvips\" ;\n" . "CMD.LINK ?= \"\\\$(CMD.C++)\" ;\n" . "CMD.MAKEINFO ?= \"makeinfo\" ;\n" . "CMD.MKDIR ?= \"mkdir\" ;\n" . "CMD.MKDIRS ?= \"mkdir -p\" ;\n" . "CMD.OBJC ?= \"gcc\" ;\n" . "CMD.OBJC++ ?= \"g++\" ;\n" . "CMD.SWIG ?= \"swig\" ;\n" . "CMD.TEXI2DVI ?= \"texi2dvi\" ;\n" . "JAM ?= \"jam\" ;\n" . "MODE ?= \"optimize\" ;\n" . "MSVCGEN_SILENT ?= \"yes\" ;\n" . "PACKAGE_COPYRIGHT ?= \"\$cscopy\" ;\n" . "PACKAGE_HOMEPAGE ?= \"http://www.crystalspace3d.org/\" ;\n" . "PACKAGE_LONGNAME ?= \"Crystal Space\" ;\n" . "PACKAGE_NAME ?= \"crystalspace\" ;\n" . "PACKAGE_STRING ?= \"crystalspace \$csver\" ;\n" . "PACKAGE_VERSION ?= \"\$csver\" ;\n" . "PACKAGE_VERSION_LIST ?= \$csverlist ;\n" . "PERL ?= \"perl\" ;\n" . "PERL5.AVAILABLE ?= \"yes\" ;\n" . "PYTHON ?= \"python\" ;\n" . "PYTHON.AVAILABLE ?= \"yes\" ;\n" . "TARGET.OS ?= \"UNIX\" ;\n" . "EOF\n" . "sed 's/\@top_srcdir\@/./;s/\@top_builddir\@//' < Jamfile.in > Jamfile\n"; #------------------------------------------------------------------------------ # For write-access, SourceForge requires SSH access. #------------------------------------------------------------------------------ $ENV{'CVS_RSH'} = 'ssh'; #------------------------------------------------------------------------------ # Ensure that Doxygen, Swig, and Jam can be found. The SourceForge shell # machine does not always have every tool installed which we require, so we # provide our own copies. #------------------------------------------------------------------------------ $ENV{'PATH'} = '/home/groups/c/cr/crystal/bin:' . '/home/groups/c/cr/crystal/swig/bin:' . $ENV{'PATH'} . ':/usr/local/bin'; #============================================================================== # *** Jobber Configuration Section *** #============================================================================== #------------------------------------------------------------------------------ # $jobber_project_root [required] # Root directory of the project. This is the top-level directory created # as a side-effect of retrieving the files from CVS. No default. #------------------------------------------------------------------------------ $jobber_project_root = 'CS'; #------------------------------------------------------------------------------ # $jobber_cvs_root [required] # The CVSROOT setting used for invoking CVS commands. The specified value # must allow "write" access to the repository if files are to be committed # back to the repository. No default. #------------------------------------------------------------------------------ $jobber_cvs_root = ":ext:$cvsuser\@cvs1:/cvsroot/crystal"; #------------------------------------------------------------------------------ # $jobber_cvs_sources [optional] # All directories which need to be extracted from the repository in order # to perform the conversion process. This list should include the # documentation directories as well as those containing tools and # supporting files needed by the tasks in the $jobber_tasks list. This # list may contain CVS module aliases since it is used with the CVS # 'checkout' command (i.e. "cvs checkout -P $jobber_cvs_sources"). # Default: $jobber_project_root #------------------------------------------------------------------------------ #$jobber_cvs_sources = $jobber_project_root; #------------------------------------------------------------------------------ # $jobber_cvs_flags [optional] # Additional flags to pass to each of the `cvs' command invocations. An # obvious example would be to set this variable to "-z9" to enable # compression. No default. #------------------------------------------------------------------------------ $jobber_cvs_flags = '-z9'; #------------------------------------------------------------------------------ # $jobber_browseable_dir [conditional] # Absolute path of directory into which generated documentation should be # copied for online browsing. This setting is required if any tasks publish # documentation, otherwise it is optional. No default. #------------------------------------------------------------------------------ $jobber_browseable_dir = "$cs_base_doc_dir/online"; #------------------------------------------------------------------------------ # $jobber_package_dir [conditional] # Absolute path of directory into which archives of generated documentation # are placed to make them available for download in package form. This # setting is required if any tasks publish documentation, otherwise it is # optional. No default. #------------------------------------------------------------------------------ $jobber_package_dir = "$cs_base_doc_dir/download"; #------------------------------------------------------------------------------ # $jobber_public_group [optional] # Group name to which to assign ownership of all directories which will # exist after script's termination (such as the "browseable" directory). # May be 'undef' if no special group should be assigned. Default: undef #------------------------------------------------------------------------------ $jobber_public_group = 'crystal'; #------------------------------------------------------------------------------ # $jobber_public_mode [optional] # Mode to which to assign all directories which will exist after script's # termination (such as the "browseable" directory). Use this in # conjunction with $jobber_public_group to make directories group-writable, # for example. For this purpose, set it to the octal value 0775. May be # 'undef' if no special mode should be assigned. Default: undef #------------------------------------------------------------------------------ $jobber_public_mode = 0775; #------------------------------------------------------------------------------ # $jobber_temp_dir [optional] # Absolute path of temporary working directory where all processing should # occur. The script cleans up after itself, so nothing will be left in # this directory after the script terminates. Default: "/tmp" #------------------------------------------------------------------------------ #$jobber_temp_dir = '/tmp'; #------------------------------------------------------------------------------ # @jobber_binary_override [optional] # Normally, jobber.pl determines automatically whether files which it adds # to the repository are binary or text (CVS needs to know this # information). There may be special cases, however, when text files need # to be treated as binary files. This setting is a list of regular # expressions which are matched against the names of files being added to # the CVS repository. If a filename matches one of these expressions, then # it is considered binary (thus, the CVS "-kb" option is used). An example # of when this comes in handy is when dealing with Visual-C++ DSW and DSP # project files in which the CRLF line-terminator must be preserved. # Default: .dsw and .dsp files #------------------------------------------------------------------------------ #@jobber_binary_override = ('(?i)\.(dsw|dsp)$'); #------------------------------------------------------------------------------ # @jobber_tasks [required] # A list of tasks to perform on the checked-out source tree. Typical tasks # are those which repair outdated files, and those which generate # human-consumable documentation from various sources. Files generated or # repaired by the tasks can then optionally be committed back to the CVS # repository and/or published for browsing or download. Each task's # "command" is invoked in the top-level directory of the project tree # ($jobber_project_root). # # Many projects need to be "configured" before various tasks can be # performed (often by running some sort of configuration script). If this # true for your project, then your very first task should invoke the # command(s) which configure the project. # # Each task record is a dictionary which contains the following keys: # # name [required] # Human-readable name for this task; used in status messages. # action [required] # Human-readable verb which describes the action performed by this # target. It is combined with the value of the "name" key to construct # an informative diagnositc message. # command [optional] # The actual command which is invoked to perform this task. It may # repair outdated files or generate a set of files (such as HTML # documentation). # newdirs [optional] # Refers to an array of directories into which files are generated by # this task. This key should only be present if new files are created # by this target. # olddirs [optional] # Refers to an array of existing directories where files generated by # this task are stored in the CVS repository. If the "newdirs" key is # omitted, then the directories mentioned by "olddirs" are those # containing files modified in-place by the command, rather than # generated anew in a different location. If both "newdirs" and # "olddirs" are present, then entries in "newdirs" must correspond to # entries in "olddirs", and each directory in "newdirs" must exactly # mirror the layout and hierarchy of each corresponding directory in # "olddirs". # log [optional] # Log message to use for CVS transactions involving this target. The # keys "olddirs" and "log" should be present only if the files # generated by this target should be committed back into the CVS # repository. # export [optional] # Refers to a sub-dictionary which describes how to export the target. # This key should be present only if the files generated by the task # should be published for browsing and downloading. If this key is # used, then one or both of "olddirs" and "newdirs" must also be # present. The sub-dictionary referenced by the "export" entry may # contain the following keys: # # dir [required] # Directory name into which files for this task are published. # Online browseable files are placed into # $jobber_browseable_dir/$dir, and downloadable packages are placed # into $jobber_package_dir/$dir. # name [required] # Base package name used when generating downloadable packages via # @jobber_archivers (see below). When published, the base package # name is combined with the archiver's file extension and placed # within the appropriate subdirectory of $jobber_package_dir. # *NOTE* Presently, the implementation is limited to only exporting # the first directory referenced by the sibling "newdirs" key. # appear [optional] # Controls the appearance of the directory in the generated # package. For example, when packaging files from a temporary # build directory named "./out/docs/html/manual", it might be # preferable if it actually appeared as "CS/docs/html/manual" in # the downloadable package. # browseable-postprocess [optional] # Allows specification of a post-processing step for documentation # which is being made available for online browsing. The value of # this key is any valid shell command. It is invoked after the # files have been copied to the browseable directory. If the # meta-token ~T appears in the command, then the path of the # directory into which the files have been published is # interpolated into the command in its place. #------------------------------------------------------------------------------ @jobber_tasks = ({ 'name' => 'build environment', 'action' => 'Configuring', 'command' => $configure }, { 'name' => 'master header files', 'action' => 'Repairing', 'command' => 'jam freezemasterheaders', 'olddirs' => ['include'], 'log' => 'Automated master header file repair.' }, { 'name' => 'Visual-C++ project files', 'action' => 'Repairing', 'command' => 'jam msvcgen', 'newdirs' => ['out/mk/msvc'], 'olddirs' => ['mk/msvc'], 'log' => 'Automated Visual-C++ project file repair.' }, { 'name' => 'Texinfo files', 'action' => 'Repairing @node and @menu directives in', 'command' => 'jam repairdoc', 'olddirs' => ['docs/texinfo'], 'log' => 'Automated Texinfo @node and @menu repair.' }, { 'name' => 'Swig Python files', 'action' => 'Repairing', 'command' => 'jam pythonfreeze', 'olddirs' => ['plugins/cscript/cspython', 'scripts/python'], 'log' => 'Automated Swig Python file repair.' }, { 'name' => 'Swig Perl5 files', 'action' => 'Repairing', 'command' => 'jam perl5freeze', 'olddirs' => ['scripts/perl5'], 'log' => 'Automated Swig Perl5 file repair.' }, { 'name' => 'User\'s Manual', 'action' => 'Generating', 'command' => 'jam manualhtml', 'newdirs' => ['out/docs/html/manual'], 'olddirs' => ['docs/html/manual'], 'log' => 'Automated Texinfo to HTML conversion.', 'export' => { 'dir' => 'manual', 'name' => 'csmanual-html', 'appear' => "$jobber_project_root/docs/html/manual", 'browseable-postprocess' => 'sh docs/support/annotate/transform.sh ~T' }}, { 'name' => 'Public API Reference', 'action' => 'Generating', 'command' => 'jam apihtml', 'newdirs' => ['out/docs/html/api'], 'olddirs' => ['docs/html/api'], 'log' => 'Automated API reference generation.', 'export' => { 'dir' => 'api', 'name' => 'csapi-html', 'appear' => "$jobber_project_root/docs/html/api", 'browseable-postprocess' => 'sh docs/support/annotate/transform.sh ~T' }}, # { 'name' => 'Developer API Reference', # 'action' => 'Generating', # 'command' => 'jam apidevhtml', # 'newdirs' => ['out/docs/html/apidev'], # 'export' => # { 'dir' => 'apidev', # 'name' => 'csapidev-html', # 'appear' => "$jobber_project_root/docs/html/apidev", # 'browseable-postprocess' => # 'sh docs/support/annotate/transform.sh ~T' }} ); #------------------------------------------------------------------------------ # @jobber_archivers [optional] # A list of archiver records. An archiver is used to generate a package # from an input directory. Each entry in this list is a dictionary which # contains the following keys: # # name [required] # Specifies the archiver's printable name. # extension [required] # File extension for the generated archive file. # command [required] # Command template which describes how to generate the given archive. # The template may contain the meta-token ~S and ~D. The name of the # source directory is interpolated into the command in place of ~S, and # the destination package name is interpolated in place of ~D. # # As a convenience, jobber.pl defines several pre-fabricated archiver # dictionaries: # # $ARCHIVER_BZIP2 # Archives with 'tar' and compresses with 'bzip2'. Extension: .tar.bz2 # $ARCHIVER_GZIP # Archives with 'tar' and compresses with 'gzip'. Extension: .tgz # $ARCHIVER_ZIP # Archives and compresses with 'zip'. Extension: .zip # # Default: ($ARCHIVER_BZIP2, $ARCHIVER_GZIP, $ARCHIVER_ZIP) #------------------------------------------------------------------------------ @jobber_archivers = ( $ARCHIVER_BZIP2, # $ARCHIVER_GZIP, # $ARCHIVER_ZIP, ); --- NEW FILE: jobber.cfg-template --- #============================================================================== # jobber.cfg-template # # Copyright (C) 2000-2004 by Eric Sunshine <sun...@su...> # # Project-specific configuration for jobber.pl, a generalized tool for # performing maintenance tasks on a project's source tree from a CVS # repository. The configuration file is just normal Perl code. # #============================================================================== # Minimum jobber.pl version expected by this configuration. jobber_require(32); #============================================================================== # *** External Client Configuration Section *** # # Use this section to configure tools or environment which might impact # jobber.pl indirectly. For instance, you might augment the PATH environment # variable or set the CVS_RSH environment variable. At the command-line, # jobber.pl allows users to define arbitrary run-time properties via the --set # option. These properties can be accessed by consulting the %jobber_properties # hash. For instance, the command-line argument "--set foo=bar" sets "bar" as # the value of $jobber_properties{foo}. #============================================================================== #------------------------------------------------------------------------------ # Example: Allow CVS username for $jobber_cvs_root to be specified optionally # on the command-line via "--set cvsuser=someone". #------------------------------------------------------------------------------ #my $cvsuser = exists $jobber_properties{'cvsuser'} ? # $jobber_properties{'cvsuser'} : 'myusername'; #------------------------------------------------------------------------------ # Example: Augment PATH. #------------------------------------------------------------------------------ #$ENV{'PATH'} .= ':/usr/local/bin'; #------------------------------------------------------------------------------ # Example: Access CVS repository via SSH. #------------------------------------------------------------------------------ #$ENV{'CVS_RSH'} = 'ssh'; #============================================================================== # *** Jobber Configuration Section *** #============================================================================== #------------------------------------------------------------------------------ # $jobber_project_root [required] # Root directory of the project. This is the top-level directory created # as a side-effect of retrieving the files from CVS. No default. #------------------------------------------------------------------------------ $jobber_project_root = 'myproject'; #------------------------------------------------------------------------------ # $jobber_cvs_root [required] # The CVSROOT setting used for invoking CVS commands. The specified value # must allow "write" access to the repository if files are to be committed # back to the repository. No default. #------------------------------------------------------------------------------ $jobber_cvs_root = ':ext:myusername@mycvsserver:/myproject'; #$jobber_cvs_root = ":ext:$cvsuser\@mycvsserver:/myproject"; #------------------------------------------------------------------------------ # $jobber_cvs_sources [optional] # All directories which need to be extracted from the repository in order # to perform the conversion process. This list should include the # documentation directories as well as those containing tools and # supporting files needed by the tasks in the $jobber_tasks list. This # list may contain CVS module aliases since it is used with the CVS # 'checkout' command (i.e. "cvs checkout -P $jobber_cvs_sources"). # Default: $jobber_project_root #------------------------------------------------------------------------------ #$jobber_cvs_sources = $jobber_project_root; #------------------------------------------------------------------------------ # $jobber_cvs_flags [optional] # Additional flags to pass to each of the `cvs' command invocations. An # obvious example would be to set this variable to "-z9" to enable # compression. No default. #------------------------------------------------------------------------------ #$jobber_cvs_flags = '-z9'; #------------------------------------------------------------------------------ # $jobber_browseable_dir [conditional] # Absolute path of directory into which generated documentation should be # copied for online browsing. This setting is required if any tasks publish # documentation, otherwise it is optional. No default. #------------------------------------------------------------------------------ $jobber_browseable_dir = '/htdocs/docs/online'; #------------------------------------------------------------------------------ # $jobber_package_dir [conditional] # Absolute path of directory into which archives of generated documentation # are placed to make them available for download in package form. This # setting is required if any tasks publish documentation, otherwise it is # optional. No default. #------------------------------------------------------------------------------ $jobber_package_dir = '/htdocs/docs/download'; #------------------------------------------------------------------------------ # $jobber_public_group [optional] # Group name to which to assign ownership of all directories which will # exist after script's termination (such as the "browseable" directory). # May be 'undef' if no special group should be assigned. Default: undef #------------------------------------------------------------------------------ $jobber_public_group = 'mygroup'; #------------------------------------------------------------------------------ # $jobber_public_mode [optional] # Mode to which to assign all directories which will exist after script's # termination (such as the "browseable" directory). Use this in # conjunction with $jobber_public_group to make directories group-writable, # for example. For this purpose, set it to the octal value 0775. May be # 'undef' if no special mode should be assigned. Default: undef #------------------------------------------------------------------------------ $jobber_public_mode = 0775; #------------------------------------------------------------------------------ # $jobber_temp_dir [optional] # Absolute path of temporary working directory where all processing should # occur. The script cleans up after itself, so nothing will be left in # this directory after the script terminates. Default: "/tmp" #------------------------------------------------------------------------------ #$jobber_temp_dir = '/tmp'; #------------------------------------------------------------------------------ # @jobber_binary_override [optional] # Normally, jobber.pl determines automatically whether files which it adds # to the repository are binary or text (CVS needs to know this # information). There may be special cases, however, when text files need # to be treated as binary files. This setting is a list of regular # expressions which are matched against the names of files being added to # the CVS repository. If a filename matches one of these expressions, then # it is considered binary (thus, the CVS "-kb" option is used). An example # of when this comes in handy is when dealing with Visual-C++ DSW and DSP # project files in which the CRLF line-terminator must be preserved. # Default: .dsw and .dsp files #------------------------------------------------------------------------------ #@jobber_binary_override = ('(?i)\.(dsw|dsp)$'); #------------------------------------------------------------------------------ # @jobber_tasks [required] # A list of tasks to perform on the checked-out source tree. Typical tasks # are those which repair outdated files, and those which generate # human-consumable documentation from various sources. Files generated or # repaired by the tasks can then optionally be committed back to the CVS # repository and/or published for browsing or download. Each task's # "command" is invoked in the top-level directory of the project tree # ($jobber_project_root). # # Many projects need to be "configured" before various tasks can be # performed (often by running some sort of configuration script). If this # true for your project, then your very first task should invoke the # command(s) which configure the project. # # Each task record is a dictionary which contains the following keys: # # name [required] # Human-readable name for this task; used in status messages. # action [required] # Human-readable verb which describes the action performed by this # target. It is combined with the value of the "name" key to construct # an informative diagnositc message. # command [optional] # The actual command which is invoked to perform this task. It may # repair outdated files or generate a set of files (such as HTML # documentation). # newdirs [optional] # Refers to an array of directories into which files are generated by # this task. This key should only be present if new files are created # by this target. # olddirs [optional] # Refers to an array of existing directories where files generated by # this task are stored in the CVS repository. If the "newdirs" key is # omitted, then the directories mentioned by "olddirs" are those # containing files modified in-place by the command, rather than # generated anew in a different location. If both "newdirs" and # "olddirs" are present, then entries in "newdirs" must correspond to # entries in "olddirs", and each directory in "newdirs" must exactly # mirror the layout and hierarchy of each corresponding directory in # "olddirs". # log [optional] # Log message to use for CVS transactions involving this target. The # keys "olddirs" and "log" should be present only if the files # generated by this target should be committed back into the CVS # repository. # export [optional] # Refers to a sub-dictionary which describes how to export the target. # This key should be present only if the files generated by the task # should be published for browsing and downloading. If this key is # used, then one or both of "olddirs" and "newdirs" must also be # present. The sub-dictionary referenced by the "export" entry may # contain the following keys: # # dir [required] # Directory name into which files for this task are published. # Online browseable files are placed into # $jobber_browseable_dir/$dir, and downloadable packages are placed # into $jobber_package_dir/$dir. # name [required] # Base package name used when generating downloadable packages via # @jobber_archivers (see below). When published, the base package # name is combined with the archiver's file extension and placed # within the appropriate subdirectory of $jobber_package_dir. # *NOTE* Presently, the implementation is limited to only exporting # the first directory referenced by the sibling "newdirs" key. # appear [optional] # Controls the appearance of the directory in the generated # package. For example, when packaging files from a temporary # build directory named "./out/docs/html/manual", it might be # preferable if it actually appeared as "CS/docs/html/manual" in # the downloadable package. # browseable-postprocess [optional] # Allows specification of a post-processing step for documentation # which is being made available for online browsing. The value of # this key is any valid shell command. It is invoked after the # files have been copied to the browseable directory. If the # meta-token ~T appears in the command, then the path of the # directory into which the files have been published is # interpolated into the command in its place. #------------------------------------------------------------------------------ @jobber_tasks = ({ 'name' => 'build environment', 'action' => 'Configuring', 'command' => './configure' }, { 'name' => 'User\'s Manual', 'action' => 'Generating', 'command' => 'make manual', 'newdirs' => ['build/html/manual'], 'olddirs' => ['docs/html/manual'], 'log' => 'Automated HTML documentation generation.', 'export' => { 'dir' => 'manual', 'name' => 'mymanual-html', 'appear' => "$jobber_project_root/docs/html/manual" }}, { 'name' => 'API Reference', 'action' => 'Generating', 'command' => 'make apiref', 'newdirs' => ['build/html/apiref'], 'olddirs' => ['docs/html/apiref'], 'log' => 'Automated API reference generation.', 'export' => { 'dir' => 'apiref', 'name' => 'myapiref-html', 'appear' => "$jobber_project_root/docs/html/apiref" }}); #------------------------------------------------------------------------------ # @jobber_archivers [optional] # A list of archiver records. An archiver is used to generate a package # from an input directory. Each entry in this list is a dictionary which # contains the following keys: # # name [required] # Specifies the archiver's printable name. # extension [required] # File extension for the generated archive file. # command [required] # Command template which describes how to generate the given archive. # The template may contain the meta-token ~S and ~D. The name of the # source directory is interpolated into the command in place of ~S, and # the destination package name is interpolated in place of ~D. # # As a convenience, jobber.pl defines several pre-fabricated archiver # dictionaries: # # $ARCHIVER_BZIP2 # Archives with 'tar' and compresses with 'bzip2'. Extension: .tar.bz2 # $ARCHIVER_GZIP # Archives with 'tar' and compresses with 'gzip'. Extension: .tgz # $ARCHIVER_ZIP # Archives and compresses with 'zip'. Extension: .zip # # Default: ($ARCHIVER_BZIP2, $ARCHIVER_GZIP, $ARCHIVER_ZIP) #------------------------------------------------------------------------------ #@jobber_archivers = ($ARCHIVER_BZIP2, $ARCHIVER_GZIP, $ARCHIVER_ZIP); Index: jobber.pl =================================================================== RCS file: /cvsroot/crystal/CS/bin/jobber.pl,v retrieving revision 1.47 retrieving revision 1.48 diff -u -d -r1.47 -r1.48 --- jobber.pl 28 Nov 2004 07:14:20 -0000 1.47 +++ jobber.pl 21 Dec 2004 04:57:33 -0000 1.48 @@ -1,7 +1,7 @@ #!/usr/bin/perl -w #============================================================================== # -# Automated Processing, Publishing, and CVS Update Script +# Automated Task Processing, Publishing, and CVS Update Script # Copyright (C) 2000-2004 by Eric Sunshine <sun...@su...> # # This program is free software; you can redistribute it and/or modify @@ -22,57 +22,253 @@ #------------------------------------------------------------------------------ # jobber.pl [...1083 lines suppressed...] + -c --config file + Specify the configuration file rather than searching the + current working directory and the home directory for a file + named jobber.cfg or .jobber. -t --test Process all tasks but do not actually modify the CVS repository or export any files. -h --help Display this usage message. - -v --version Display the version number of @{[basename($0)]} + -V --version Display the version number of @{[basename($0)]} EOT } @@ -905,6 +988,7 @@ GetOptions(@SCRIPT_OPTIONS) or usage_error(''); banner(); print "Non-destructive testing mode enabled.\n\n" if $TESTING; + load_config(); } sub option_help { print_usage(\*STDOUT); exit(0); } |