Subject: [PATCH] Move config options into separate package.

From: Jon Loeliger <[email-masked]>
Date: Wed, 22 Mar 2006 20:49:51 -0600

Allow new gitweb.cgi to be installed without having to
continually tinker with the site-specific configuration
options need for an install.

Signed-off-by: Jon Loeliger <[email-masked]>

---

This patch can be pulled directly from the "jdl" branch here:

    http://www.jdl.com/pub/software/gitweb.git

 gitweb.cgi       |   29 ++++++++++++-----------------
 gitweb_config.pm |   42 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 54 insertions(+), 17 deletions(-)
 create mode 100644 gitweb_config.pm

a55eba90ac75a5f722b865e631a728d4a6446d07
diff --git a/gitweb.cgi b/gitweb.cgi
index c1bb624..4d3bcd6 100755
--- a/gitweb.cgi
+++ b/gitweb.cgi
@@ -16,31 +16,26 @@ use Encode;
 use Fcntl ':mode';
 binmode STDOUT, ':utf8';
 
+require gitweb_config;
+
 my $cgi = new CGI;
 my $version =		"264";
 my $my_url =		$cgi->url();
 my $my_uri =		$cgi->url(-absolute => 1);
 my $rss_link =		"";
 
-# absolute fs-path which will be prepended to the project path
-#my $projectroot =	"/pub/scm";
-my $projectroot =	"/home/kay/public_html/pub/scm";
-
-# location of the git-core binaries
-my $gitbin =		"/usr/bin";
-
-# location for temporary files needed for diffs
-my $git_temp =		"/tmp/gitweb";
-
 # target of the home link on top of all pages
-my $home_link =		$my_uri;
+my $home_link =	$my_uri;
 
-# html text to include at home page
-my $home_text =		"indextext.html";
+# Get config values or use defaults.
+my $config_opts = gitweb_config::get_config_opts();
+my $gitbin = $config_opts->{gitbin} || "/usr/bin";
+my $git_temp = $config_opts->{git_temp} || "/tmp/gitweb";
+my $projectroot = $config_opts->{projectroot} || "/pub/scm";
+my $home_text =	$config_opts->{home_text} || "indextext.html";
+my $projects_list = $config_opts->{projects_list} || "index/index.aux";
+my $description_len = $config_opts->{description_len} || 25;
 
-# source of projects list
-#my $projects_list =	$projectroot;
-my $projects_list =	"index/index.aux";
 
 # input validation and dispatch
 my $action = $cgi->param('a');
@@ -853,7 +848,7 @@ sub git_project_list {
 		$pr->{'commit'} = \%co;
 		if (!defined $pr->{'descr'}) {
 			my $descr = git_read_description($pr->{'path'}) || "";
-			$pr->{'descr'} = chop_str($descr, 25, 5);
+			$pr->{'descr'} = chop_str($descr, $description_len, 5);
 		}
 		if (!defined $pr->{'owner'}) {
 			$pr->{'owner'} = get_file_owner("$projectroot/$pr->{'path'}") || "";
diff --git a/gitweb_config.pm b/gitweb_config.pm
new file mode 100644
index 0000000..d67fb34
--- /dev/null
+++ b/gitweb_config.pm
@@ -0,0 +1,42 @@
+#
+# This program is licensed under the GPLv2
+#
+
+#
+# Configuration Options for gitweb
+#
+# gitbin: Location of the git-core binaries
+#	"/usr/bin"
+#
+# git_temp: Location for temporary files needed for diffs
+#	"/tmp/gtiweb"
+#
+# projectroot: Absolute fs-path which will be prepended to the project path
+#	"/pub/scm"
+#	"/home/kay/public_html/pub/scm"
+#
+# projects_list: Source of projects list
+#	"/pub/scm"
+#	"index/index.aux"
+#
+# home_text: Html text to include at home page
+#	"indextext.html"
+#
+# description_len: Length of description field
+#	25
+#	35
+
+package gitweb_config;
+
+my $opts = {
+    gitbin => "/usr/bin",
+    git_temp => "/tmp/gitweb",
+    projectroot => "/pub/software",
+    projects_list => "/pub/software",
+    home_text => "indextext.html",
+    description_len => 35,
+};
+
+sub get_config_opts { return $opts; }
+
+1;
-- 
1.2.4.gc98264