aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvatar Bo Ørsted Andresen <zlin@exherbo.org> 2008-10-17 23:31:14 +0200
committerAvatar Bo Ørsted Andresen <zlin@exherbo.org> 2008-10-18 20:06:47 +0200
commit354116d42c45d42146fc20ace9de4210d9f8f064 (patch)
tree2d99580bbd6dd5d73cb454bf33712ce630b67499
parent290f399cc8c7c5c407b083c9b4f9b0ea954a725e (diff)
downloadpaludis-354116d42c45d42146fc20ace9de4210d9f8f064.tar.gz
paludis-354116d42c45d42146fc20ace9de4210d9f8f064.tar.xz
Add here{bin,{conf,env,init}d,ins,sbin} to exheres-0.
-rw-r--r--paludis/repositories/e/e_repository_TEST.cc162
-rwxr-xr-xpaludis/repositories/e/e_repository_TEST_setup.sh294
-rw-r--r--paludis/repositories/e/ebuild/utils/exheres-0/Makefile.am6
-rwxr-xr-xpaludis/repositories/e/ebuild/utils/exheres-0/herebin37
-rwxr-xr-xpaludis/repositories/e/ebuild/utils/exheres-0/hereconfd37
-rwxr-xr-xpaludis/repositories/e/ebuild/utils/exheres-0/hereenvd37
-rwxr-xr-xpaludis/repositories/e/ebuild/utils/exheres-0/hereinitd37
-rwxr-xr-xpaludis/repositories/e/ebuild/utils/exheres-0/hereins37
-rwxr-xr-xpaludis/repositories/e/ebuild/utils/exheres-0/heresbin37
9 files changed, 684 insertions, 0 deletions
diff --git a/paludis/repositories/e/e_repository_TEST.cc b/paludis/repositories/e/e_repository_TEST.cc
index 0be6ad5..59082f2 100644
--- a/paludis/repositories/e/e_repository_TEST.cc
+++ b/paludis/repositories/e/e_repository_TEST.cc
@@ -2003,6 +2003,168 @@ namespace test_cases
}
{
+ TestMessageSuffix suffix("herebin success", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("cat/herebin-success",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ id->perform_action(action);
+ }
+
+ {
+ TestMessageSuffix suffix("herebin fail missing argument", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("cat/herebin-argument-fail",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ TEST_CHECK_THROWS(id->perform_action(action), InstallActionError);
+ }
+
+ {
+ TestMessageSuffix suffix("herebin fail missing input", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("=cat/herebin-input-fail-1",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ TEST_CHECK_THROWS(id->perform_action(action), InstallActionError);
+ }
+
+ {
+ TestMessageSuffix suffix("hereconfd success", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("cat/hereconfd-success",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ id->perform_action(action);
+ }
+
+ {
+ TestMessageSuffix suffix("hereconfd fail missing argument", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("cat/hereconfd-argument-fail",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ TEST_CHECK_THROWS(id->perform_action(action), InstallActionError);
+ }
+
+ {
+ TestMessageSuffix suffix("hereconfd fail missing input", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("=cat/hereconfd-input-fail-1",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ TEST_CHECK_THROWS(id->perform_action(action), InstallActionError);
+ }
+
+ {
+ TestMessageSuffix suffix("hereenvd success", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("cat/hereenvd-success",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ id->perform_action(action);
+ }
+
+ {
+ TestMessageSuffix suffix("hereenvd fail missing argument", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("cat/hereenvd-argument-fail",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ TEST_CHECK_THROWS(id->perform_action(action), InstallActionError);
+ }
+
+ {
+ TestMessageSuffix suffix("hereenvd fail missing input", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("=cat/hereenvd-input-fail-1",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ TEST_CHECK_THROWS(id->perform_action(action), InstallActionError);
+ }
+
+ {
+ TestMessageSuffix suffix("hereinitd success", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("cat/hereinitd-success",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ id->perform_action(action);
+ }
+
+ {
+ TestMessageSuffix suffix("hereinitd fail missing argument", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("cat/hereinitd-argument-fail",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ TEST_CHECK_THROWS(id->perform_action(action), InstallActionError);
+ }
+
+ {
+ TestMessageSuffix suffix("hereinitd fail missing input", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("=cat/hereinitd-input-fail-1",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ TEST_CHECK_THROWS(id->perform_action(action), InstallActionError);
+ }
+
+ {
+ TestMessageSuffix suffix("hereins success", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("cat/hereins-success",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ id->perform_action(action);
+ }
+
+ {
+ TestMessageSuffix suffix("hereins fail missing argument", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("cat/hereins-argument-fail",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ TEST_CHECK_THROWS(id->perform_action(action), InstallActionError);
+ }
+
+ {
+ TestMessageSuffix suffix("hereins fail missing input", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("=cat/hereins-input-fail-1",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ TEST_CHECK_THROWS(id->perform_action(action), InstallActionError);
+ }
+
+ {
+ TestMessageSuffix suffix("heresbin success", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("cat/heresbin-success",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ id->perform_action(action);
+ }
+
+ {
+ TestMessageSuffix suffix("heresbin fail missing argument", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("cat/heresbin-argument-fail",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ TEST_CHECK_THROWS(id->perform_action(action), InstallActionError);
+ }
+
+ {
+ TestMessageSuffix suffix("heresbin fail missing input", true);
+ const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
+ PackageDepSpec(parse_user_package_dep_spec("=cat/heresbin-input-fail-1",
+ &env, UserPackageDepSpecOptions()))))]->last());
+ TEST_CHECK(id);
+ TEST_CHECK_THROWS(id->perform_action(action), InstallActionError);
+ }
+
+ {
TestMessageSuffix suffix("fperms success", true);
const std::tr1::shared_ptr<const PackageID> id(*env[selection::RequireExactlyOne(generator::Matches(
PackageDepSpec(parse_user_package_dep_spec("cat/fperms-success",
diff --git a/paludis/repositories/e/e_repository_TEST_setup.sh b/paludis/repositories/e/e_repository_TEST_setup.sh
index cee5a19..26b575e 100755
--- a/paludis/repositories/e/e_repository_TEST_setup.sh
+++ b/paludis/repositories/e/e_repository_TEST_setup.sh
@@ -1645,6 +1645,300 @@ src_install() {
nonfatal dobin monkey || die
}
END
+mkdir -p "packages/cat/herebin-success"
+cat <<END > packages/cat/herebin-success/herebin-success-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ herebin foo <<EOF
+blah
+EOF
+}
+END
+mkdir -p "packages/cat/herebin-argument-fail"
+cat <<END > packages/cat/herebin-argument-fail/herebin-argument-fail-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ herebin monkey
+}
+END
+mkdir -p "packages/cat/herebin-input-fail"
+cat <<END > packages/cat/herebin-input-fail/herebin-input-fail-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ herebin <<EOF
+blah
+EOF
+}
+END
+mkdir -p "packages/cat/hereconfd-success"
+cat <<END > packages/cat/hereconfd-success/hereconfd-success-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ hereconfd foo <<EOF
+blah
+EOF
+}
+END
+mkdir -p "packages/cat/hereconfd-argument-fail"
+cat <<END > packages/cat/hereconfd-argument-fail/hereconfd-argument-fail-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ hereconfd monkey
+}
+END
+mkdir -p "packages/cat/hereconfd-input-fail"
+cat <<END > packages/cat/hereconfd-input-fail/hereconfd-input-fail-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ hereconfd <<EOF
+blah
+EOF
+}
+END
+mkdir -p "packages/cat/hereenvd-success"
+cat <<END > packages/cat/hereenvd-success/hereenvd-success-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ hereenvd foo <<EOF
+blah
+EOF
+}
+END
+mkdir -p "packages/cat/hereenvd-argument-fail"
+cat <<END > packages/cat/hereenvd-argument-fail/hereenvd-argument-fail-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ hereenvd monkey
+}
+END
+mkdir -p "packages/cat/hereenvd-input-fail"
+cat <<END > packages/cat/hereenvd-input-fail/hereenvd-input-fail-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ hereenvd <<EOF
+blah
+EOF
+}
+END
+mkdir -p "packages/cat/hereinitd-success"
+cat <<END > packages/cat/hereinitd-success/hereinitd-success-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ hereinitd foo <<EOF
+blah
+EOF
+}
+END
+mkdir -p "packages/cat/hereinitd-argument-fail"
+cat <<END > packages/cat/hereinitd-argument-fail/hereinitd-argument-fail-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ hereinitd monkey
+}
+END
+mkdir -p "packages/cat/hereinitd-input-fail"
+cat <<END > packages/cat/hereinitd-input-fail/hereinitd-input-fail-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ hereinitd <<EOF
+blah
+EOF
+}
+END
+mkdir -p "packages/cat/hereins-success"
+cat <<END > packages/cat/hereins-success/hereins-success-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ hereins foo <<EOF
+blah
+EOF
+}
+END
+mkdir -p "packages/cat/hereins-argument-fail"
+cat <<END > packages/cat/hereins-argument-fail/hereins-argument-fail-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ hereins monkey
+}
+END
+mkdir -p "packages/cat/hereins-input-fail"
+cat <<END > packages/cat/hereins-input-fail/hereins-input-fail-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ hereins <<EOF
+blah
+EOF
+}
+END
+mkdir -p "packages/cat/heresbin-success"
+cat <<END > packages/cat/heresbin-success/heresbin-success-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ heresbin foo <<EOF
+blah
+EOF
+}
+END
+mkdir -p "packages/cat/heresbin-argument-fail"
+cat <<END > packages/cat/heresbin-argument-fail/heresbin-argument-fail-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ heresbin monkey
+}
+END
+mkdir -p "packages/cat/heresbin-input-fail"
+cat <<END > packages/cat/heresbin-input-fail/heresbin-input-fail-1.ebuild || exit 1
+DESCRIPTION="The Long Description"
+SUMMARY="The Short Description"
+HOMEPAGE="http://example.com/"
+DOWNLOADS=""
+SLOT="0"
+MYOPTIONS="spork"
+LICENCES="GPL-2"
+PLATFORMS="test"
+
+src_install() {
+ heresbin <<EOF
+blah
+EOF
+}
+END
mkdir -p "packages/cat/fperms-success"
cat <<END > packages/cat/fperms-success/fperms-success-1.ebuild || exit 1
DESCRIPTION="The Long Description"
diff --git a/paludis/repositories/e/ebuild/utils/exheres-0/Makefile.am b/paludis/repositories/e/ebuild/utils/exheres-0/Makefile.am
index 5769041..0470168 100644
--- a/paludis/repositories/e/ebuild/utils/exheres-0/Makefile.am
+++ b/paludis/repositories/e/ebuild/utils/exheres-0/Makefile.am
@@ -8,6 +8,12 @@ libexecprog_SCRIPTS = \
dohtml \
dosed \
donewins \
+ herebin \
+ hereconfd \
+ hereenvd \
+ hereinitd \
+ hereins \
+ heresbin \
nonfatal \
prepall \
prepallstrip \
diff --git a/paludis/repositories/e/ebuild/utils/exheres-0/herebin b/paludis/repositories/e/ebuild/utils/exheres-0/herebin
new file mode 100755
index 0000000..5f15e11
--- /dev/null
+++ b/paludis/repositories/e/ebuild/utils/exheres-0/herebin
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+# vim: set sw=4 sts=4 et :
+
+# Copyright (c) 2008 Bo Ørsted Andresen
+#
+# This file is part of the Paludis package manager. Paludis is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General
+# Public License as published by the Free Software Foundation; either version
+# 2 of the License, or (at your option) any later version.
+#
+# Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place, Suite 330, Boston, MA 02111-1307 USA
+
+export PATH="${PALUDIS_EBUILD_DIR:+${PALUDIS_EBUILD_DIR}/utils:}${PATH}"
+source "${PALUDIS_EBUILD_DIR}"/die_functions.bash
+
+if [[ ! -d ${!PALUDIS_TEMP_DIR_VAR} ]]; then
+ paludis_die_or_error "\${${PALUDIS_TEMP_DIR_VAR}} not valid; aborting"
+fi
+
+if [[ ${#} -ne 1 ]]; then
+ paludis_die_or_error "exactly one argument needed."
+fi
+
+if [[ -t 0 ]]; then
+ paludis_die_or_error "requires stdin input"
+fi
+
+rm -rf "${!PALUDIS_TEMP_DIR_VAR}/${1}"
+cat > "${!PALUDIS_TEMP_DIR_VAR}/${1}"
+dobin "${!PALUDIS_TEMP_DIR_VAR}/${1}"
diff --git a/paludis/repositories/e/ebuild/utils/exheres-0/hereconfd b/paludis/repositories/e/ebuild/utils/exheres-0/hereconfd
new file mode 100755
index 0000000..70ce6d6
--- /dev/null
+++ b/paludis/repositories/e/ebuild/utils/exheres-0/hereconfd
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+# vim: set sw=4 sts=4 et :
+
+# Copyright (c) 2008 Bo Ørsted Andresen
+#
+# This file is part of the Paludis package manager. Paludis is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General
+# Public License as published by the Free Software Foundation; either version
+# 2 of the License, or (at your option) any later version.
+#
+# Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place, Suite 330, Boston, MA 02111-1307 USA
+
+export PATH="${PALUDIS_EBUILD_DIR:+${PALUDIS_EBUILD_DIR}/utils:}${PATH}"
+source "${PALUDIS_EBUILD_DIR}"/die_functions.bash
+
+if [[ ! -d ${!PALUDIS_TEMP_DIR_VAR} ]]; then
+ paludis_die_or_error "\${${PALUDIS_TEMP_DIR_VAR}} not valid; aborting"
+fi
+
+if [[ ${#} -ne 1 ]]; then
+ paludis_die_or_error "exactly one argument needed"
+fi
+
+if [[ -t 0 ]]; then
+ paludis_die_or_error "requires stdin input"
+fi
+
+rm -rf "${!PALUDIS_TEMP_DIR_VAR}/${1}"
+cat > "${!PALUDIS_TEMP_DIR_VAR}/${1}"
+doconfd "${!PALUDIS_TEMP_DIR_VAR}/${1}"
diff --git a/paludis/repositories/e/ebuild/utils/exheres-0/hereenvd b/paludis/repositories/e/ebuild/utils/exheres-0/hereenvd
new file mode 100755
index 0000000..0359f7e
--- /dev/null
+++ b/paludis/repositories/e/ebuild/utils/exheres-0/hereenvd
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+# vim: set sw=4 sts=4 et :
+
+# Copyright (c) 2008 Bo Ørsted Andresen
+#
+# This file is part of the Paludis package manager. Paludis is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General
+# Public License as published by the Free Software Foundation; either version
+# 2 of the License, or (at your option) any later version.
+#
+# Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place, Suite 330, Boston, MA 02111-1307 USA
+
+export PATH="${PALUDIS_EBUILD_DIR:+${PALUDIS_EBUILD_DIR}/utils:}${PATH}"
+source "${PALUDIS_EBUILD_DIR}"/die_functions.bash
+
+if [[ ! -d ${!PALUDIS_TEMP_DIR_VAR} ]]; then
+ paludis_die_or_error "\${${PALUDIS_TEMP_DIR_VAR}} not valid; aborting"
+fi
+
+if [[ ${#} -ne 1 ]]; then
+ paludis_die_or_error "exactly one argument needed"
+fi
+
+if [[ -t 0 ]]; then
+ paludis_die_or_error "requires stdin input"
+fi
+
+rm -rf "${!PALUDIS_TEMP_DIR_VAR}/${1}"
+cat > "${!PALUDIS_TEMP_DIR_VAR}/${1}"
+doenvd "${!PALUDIS_TEMP_DIR_VAR}/${1}"
diff --git a/paludis/repositories/e/ebuild/utils/exheres-0/hereinitd b/paludis/repositories/e/ebuild/utils/exheres-0/hereinitd
new file mode 100755
index 0000000..26036b5
--- /dev/null
+++ b/paludis/repositories/e/ebuild/utils/exheres-0/hereinitd
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+# vim: set sw=4 sts=4 et :
+
+# Copyright (c) 2008 Bo Ørsted Andresen
+#
+# This file is part of the Paludis package manager. Paludis is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General
+# Public License as published by the Free Software Foundation; either version
+# 2 of the License, or (at your option) any later version.
+#
+# Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place, Suite 330, Boston, MA 02111-1307 USA
+
+export PATH="${PALUDIS_EBUILD_DIR:+${PALUDIS_EBUILD_DIR}/utils:}${PATH}"
+source "${PALUDIS_EBUILD_DIR}"/die_functions.bash
+
+if [[ ! -d ${!PALUDIS_TEMP_DIR_VAR} ]]; then
+ paludis_die_or_error "\${${PALUDIS_TEMP_DIR_VAR}} not valid; aborting"
+fi
+
+if [[ ${#} -ne 1 ]]; then
+ paludis_die_or_error "exactly one argument needed"
+fi
+
+if [[ -t 0 ]]; then
+ paludis_die_or_error "requires stdin input"
+fi
+
+rm -rf "${!PALUDIS_TEMP_DIR_VAR}/${1}"
+cat > "${!PALUDIS_TEMP_DIR_VAR}/${1}"
+doinitd "${!PALUDIS_TEMP_DIR_VAR}/${1}"
diff --git a/paludis/repositories/e/ebuild/utils/exheres-0/hereins b/paludis/repositories/e/ebuild/utils/exheres-0/hereins
new file mode 100755
index 0000000..04b97a5
--- /dev/null
+++ b/paludis/repositories/e/ebuild/utils/exheres-0/hereins
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+# vim: set sw=4 sts=4 et :
+
+# Copyright (c) 2008 Bo Ørsted Andresen
+#
+# This file is part of the Paludis package manager. Paludis is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General
+# Public License as published by the Free Software Foundation; either version
+# 2 of the License, or (at your option) any later version.
+#
+# Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place, Suite 330, Boston, MA 02111-1307 USA
+
+export PATH="${PALUDIS_EBUILD_DIR:+${PALUDIS_EBUILD_DIR}/utils:}${PATH}"
+source "${PALUDIS_EBUILD_DIR}"/die_functions.bash
+
+if [[ ! -d ${!PALUDIS_TEMP_DIR_VAR} ]]; then
+ paludis_die_or_error "\${${PALUDIS_TEMP_DIR_VAR}} not valid; aborting"
+fi
+
+if [[ ${#} -ne 1 ]]; then
+ paludis_die_or_error "exactly one argument needed"
+fi
+
+if [[ -t 0 ]]; then
+ paludis_die_or_error "requires stdin input"
+fi
+
+rm -rf "${!PALUDIS_TEMP_DIR_VAR}/${1}"
+cat > "${!PALUDIS_TEMP_DIR_VAR}/${1}"
+doins "${!PALUDIS_TEMP_DIR_VAR}/${1}"
diff --git a/paludis/repositories/e/ebuild/utils/exheres-0/heresbin b/paludis/repositories/e/ebuild/utils/exheres-0/heresbin
new file mode 100755
index 0000000..b9e4412
--- /dev/null
+++ b/paludis/repositories/e/ebuild/utils/exheres-0/heresbin
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+# vim: set sw=4 sts=4 et :
+
+# Copyright (c) 2008 Bo Ørsted Andresen
+#
+# This file is part of the Paludis package manager. Paludis is free software;
+# you can redistribute it and/or modify it under the terms of the GNU General
+# Public License as published by the Free Software Foundation; either version
+# 2 of the License, or (at your option) any later version.
+#
+# Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place, Suite 330, Boston, MA 02111-1307 USA
+
+export PATH="${PALUDIS_EBUILD_DIR:+${PALUDIS_EBUILD_DIR}/utils:}${PATH}"
+source "${PALUDIS_EBUILD_DIR}"/die_functions.bash
+
+if [[ ! -d ${!PALUDIS_TEMP_DIR_VAR} ]]; then
+ paludis_die_or_error "\${${PALUDIS_TEMP_DIR_VAR}} not valid; aborting"
+fi
+
+if [[ ${#} -ne 1 ]]; then
+ paludis_die_or_error "exactly one argument needed."
+fi
+
+if [[ -t 0 ]]; then
+ paludis_die_or_error "requires stdin input"
+fi
+
+rm -rf "${!PALUDIS_TEMP_DIR_VAR}/${1}"
+cat > "${!PALUDIS_TEMP_DIR_VAR}/${1}"
+dosbin "${!PALUDIS_TEMP_DIR_VAR}/${1}"