Package: ikiwiki
Version: 3.141
Severity: wishlist
Tags: patch

Hi Joey,

I have a few projects which are already in Git repositories, so I don't
want the Automator to create repositories (via ikiwiki-makerepo).  Could it
be possible to split the import subroutine to just only dump the generated
setup without performing a full setup?  The attached patch is a first
attempt for this feature.

-- 
roktas
From 9fa79b9cbdb72ae7a1e596bac399965fb1fab879 Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Recai=20Okta=C5=9F?= <[email protected]>
Date: Fri, 19 Jun 2009 17:40:19 +0300
Subject: allow automator to just only dump the generated setup without performing a full setup

- use 'dump' (instead of 'import'), e.g.

	IkiWiki::Setup::Automator->dump(...)

- dumps to STDOUT if $config{dumpsetup} is not defined
---
 IkiWiki/Setup.pm           |   14 ++++++++++----
 IkiWiki/Setup/Automator.pm |   18 ++++++++++++++++--
 2 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/IkiWiki/Setup.pm b/IkiWiki/Setup.pm
index 6ee1120..44632f1 100644
--- a/IkiWiki/Setup.pm
+++ b/IkiWiki/Setup.pm
@@ -108,14 +108,20 @@ sub getsetup () {
 }
 
 sub dump ($) {
-	my $file=IkiWiki::possibly_foolish_untaint(shift);
+	my $file=shift;
 	
 	require IkiWiki::Setup::Standard;
 	my @dump=IkiWiki::Setup::Standard::gendump("Setup file for ikiwiki.");
 
-	open (OUT, ">", $file) || die "$file: $!";
-	print OUT "$_\n" foreach @dump;
-	close OUT;
+	if (defined $file) {
+		$file=IkiWiki::possibly_foolish_untaint($file);
+		open (OUT, ">", $file) || die "$file: $!";
+		print OUT "$_\n" foreach @dump;
+		close OUT;
+	}
+	else {
+		print "$_\n" foreach @dump;
+	}
 }
 
 1
diff --git a/IkiWiki/Setup/Automator.pm b/IkiWiki/Setup/Automator.pm
index 742d676..20b9155 100644
--- a/IkiWiki/Setup/Automator.pm
+++ b/IkiWiki/Setup/Automator.pm
@@ -24,7 +24,7 @@ sub prettydir ($) {
 	return $dir;
 }
 
-sub import (@) {
+sub gensetup (@) {
 	my $this=shift;
 	IkiWiki::Setup::merge({...@_});
 
@@ -36,7 +36,7 @@ sub import (@) {
 
 	# Avoid overwriting any existing files.
 	foreach my $key (qw{srcdir destdir repository dumpsetup}) {
-		next unless exists $config{$key};
+		next unless defined $config{$key};
 		my $add="";
 		my $dir=IkiWiki::dirname($config{$key})."/";
 		my $base=IkiWiki::basename($config{$key});
@@ -74,6 +74,20 @@ sub import (@) {
 	}
 
 	IkiWiki::checkconfig();
+}
+
+sub dump (@) {
+	gensetup(@_);
+
+	# Generate setup file.
+	require IkiWiki::Setup;
+	IkiWiki::Setup::dump($config{dumpsetup});
+
+	exit 0;
+}
+
+sub import (@) {
+	gensetup(@_);
 
 	print "\n\nSetting up $config{wikiname} ...\n";
 
-- 
1.6.2.4

Reply via email to