]> ruderich.org/simon Gitweb - config/dotfiles.git/commitdiff
Use setup.sh instead of Makefile.
authorSimon Ruderich <simon@ruderich.org>
Wed, 18 Feb 2009 17:21:29 +0000 (18:21 +0100)
committerSimon Ruderich <simon@ruderich.org>
Wed, 18 Feb 2009 17:21:29 +0000 (18:21 +0100)
This was done as shell scripts are far more expandable than Makefiles.

link.sh and m4.sh were converted to functions and stored in lib.sh. The
subdirectories include it and call link() and m4() when necessary.

As the subdirectories also no longer use Makefiles for the setup task, the new
setup.sh scripts calls their setup.sh scripts.

Makefile [deleted file]
lib.sh [new file with mode: 0644]
link.sh [deleted file]
m4.sh [deleted file]
setup.sh [new file with mode: 0755]

diff --git a/Makefile b/Makefile
deleted file mode 100644 (file)
index 11cf95b..0000000
--- a/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# Makefile for the dotfiles directory where most configuration files are
-# stored.
-
-
-# Run setup in all configuration directories. Ignore errors as some of the
-# directories may not be present.
-.PHONY: setup
-setup:
-       -cd browser && make setup > /dev/null
-       -cd lftp && make setup > /dev/null
-       -cd mail && make setup > /dev/null
-       -cd music && make setup > /dev/null
-       -cd shell && make setup > /dev/null
-       -cd vcs && make setup > /dev/null
-       -cd vim && make setup > /dev/null
diff --git a/lib.sh b/lib.sh
new file mode 100644 (file)
index 0000000..e222da4
--- /dev/null
+++ b/lib.sh
@@ -0,0 +1,73 @@
+# Setup functions and settings used in subdirectories.
+#
+# Their setup.sh script sources this file.
+
+
+# csh gives the error "Unknown colorls variable `su'." when used with newer
+# options supported by zsh or GNU ls.
+unset LS_COLORS
+
+# Get path to m4 because it's later redefined as function.
+m4=`which m4`
+
+
+# Creates a symbolic link for file $1 in dirname of $2 with name of basenmae
+# $2.
+#
+# `./link.sh example ~/.examplerc` creates a symbolic link to example
+# (wherever it is located) in ~/ named .examplerc.
+link() {
+    # Get all necessary paths.
+    pwd=`pwd`
+    base=`dirname "$2"`
+    source=`echo -n "$pwd/$1" | sed "s|$base/||"`
+    target=`basename "$2"`
+
+    # Go to the directory where the link is going to be created.
+    cd "$base"
+
+    # Abort if the target file exists and is no symbolic link. Prevents
+    # overwriting real files.
+    if [ -e "$target" -a ! -h "$target" ]; then
+        echo "link(): target '$target' exists already and is no symbolic link!" >&2
+        exit 1
+    fi
+
+    # Make sure the source exists.
+    if [ ! -e "$source" ]; then
+        echo "link(): source '$source' doesn't exist!" >&2
+        exit 1
+    fi
+
+    # Create the new symbolic link; remove the old one if necessary.
+    echo "link(): linking '$source' to '$target'"
+    rm -f "$target"
+    ln -s "$source" "$target"
+
+    # Go back to the directory where we were before.
+    cd "$pwd"
+
+    unset pwd base source target
+}
+
+# m4 wrapper which uses $1.m4 as template file, feeds it to m4 and writes it
+# to $1 with a warning at the beginning to not edit the generated file.
+#
+# All arguments (except the first which is the filename) are passed to m4.
+m4() {
+    # First argument is file name.
+    file=$1
+    shift
+
+    # Write a warning to the generated file.
+    echo "###################################" > $file
+    echo "# WARNING! DO NOT EDIT THIS FILE! #" >> $file
+    echo "###################################" >> $file
+    echo >> $file
+    echo "# It was generated from $file.m4 on `date`." >> $file
+    echo >> $file
+
+    # Process $1.m4 with m4 using the given options.
+    echo "m4(): generating '$file' from '$file.m4' with options '$*'"
+    $m4 $* $file.m4 >> $file
+}
diff --git a/link.sh b/link.sh
deleted file mode 100755 (executable)
index f0f0917..0000000
--- a/link.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-
-# Creates a symbolic link for file $1 in dirname of $2 with name of basenmae
-# $2.
-#
-# `./link.sh example ~/.examplerc` creates a symbolic link to example
-# (wherever it is located) in ~/ named .examplerc.
-
-
-# Get all necessary paths.
-pwd=`pwd`
-base=`dirname "$2"`
-source=`echo -n "$pwd/$1" | sed "s|$base/||"`
-target=`basename "$2"`
-
-# Go to the directory where the link is going to be created.
-cd "$base"
-
-# Abort if the target file exists and is no symbolic link. Prevents
-# overwriting real files.
-if [ -e "$target" -a ! -h "$target" ]; then
-    echo "link.sh: target '$target' exists already and is no symbolic link!" >&2
-    exit 1
-fi
-
-# Make sure the source exists.
-if [ ! -e "$source" ]; then
-    echo "link.sh: source '$source' doesn't exist!" >&2
-    exit 1
-fi
-
-# Create the new symbolic link; remove the old one if necessary.
-echo "link.sh: linking '$source' to '$target'"
-rm -f "$target"
-ln -s "$source" "$target"
diff --git a/m4.sh b/m4.sh
deleted file mode 100755 (executable)
index 92e9439..0000000
--- a/m4.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-# m4 wrapper script which uses $1.m4 as template file, feeds it to m4 and
-# writes it to $1 with a warning at the beginning to not edit the generated
-# file.
-#
-# All arguments to this script (except the first which is the filename) are
-# passed to m4.
-
-
-# First argument is file name.
-file=$1
-shift
-
-# Write a warning to the generated file.
-echo "###################################" > $file
-echo "# WARNING! DO NOT EDIT THIS FILE! #" >> $file
-echo "###################################" >> $file
-echo >> $file
-echo "# It was generated from $file.m4 on `date`." >> $file
-echo >> $file
-
-# Process $1.m4 with m4 using the given options.
-echo "m4.sh: generating '$file' from '$file.m4' with options '$*'"
-m4 $* $file.m4 >> $file
diff --git a/setup.sh b/setup.sh
new file mode 100755 (executable)
index 0000000..b902a26
--- /dev/null
+++ b/setup.sh
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Runs setup.sh in all configuration directories.
+
+
+# Projects which use git.
+projects="browser lftp mail music os shell vcs vim"
+
+# Run .setup.sh in each project.
+for project in $projects; do
+    [ -d "$project" ] && (echo "running setup.sh in '$project'";
+                          cd "$project"; ./setup.sh > /dev/null)
+done