From 6a2ab0571f690acab50a7559071c7cdcc4aea27b Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sat, 6 Dec 2008 12:08:11 +0100 Subject: Added include/genzshrc (Maybe for future optimization tests or so) --- include/genzshrc | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 include/genzshrc (limited to 'include') diff --git a/include/genzshrc b/include/genzshrc new file mode 100755 index 0000000..21a022a --- /dev/null +++ b/include/genzshrc @@ -0,0 +1,52 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +my $zshrc = "$ENV{HOME}/.zshrc"; +my $zsource = "$ENV{HOME}/packages/zsh/etc/rc"; +my %subst = ( + ZDIR => "$ENV{HOME}/packages/zsh/etc", + HOME => $ENV{HOME}, +); +my ($command, $args); + +sub substitute($) { + my $string = shift; + my ($param, $value); + while (($param, $value) = each(%subst)) { + $string =~ s/\$($param|\{$param\})/$value/g; + } + return($string); +} + +sub parse($) { + my $file = shift; + my $fh; + open($fh, '<', $file) or die("Can't open $file: $!"); + while(<$fh>) { + chomp; + s/^\s*//; + if (/^#/ or $_ eq '') { + next + } + if (/^(\S+)(?:\s+(.+))?$/ and deploy($1, $2)) { + next; + } + print; + print "\n"; + } + close($fh); +} + +sub deploy($;$) { + my ($command, $args) = @_; + my $plain_args = substitute($args || ''); + if ($command =~ /^x?source$/ and -r $plain_args) { + print "## source $plain_args\n"; + parse($plain_args); + return(1); + } + return(0); +} + +parse($zsource); -- cgit v1.2.3