freebsd-ports/Keywords/sample.yaml
Bryan Drewery 4070b12551 - Add a @sample plist keyword
It accepts a file (must end in .sample, this is not configurable):

    @sample file.conf.sample

  This will install file.conf.sample and copy it to file.conf. The file.conf
  will be removed if it matches file.conf.sample on deinstall.

  This replaces older patterns of:

    @unexec if cmp -s %D/etc/pkgtools.conf %D/etc/pkgtools.conf.sample; then rm -f %D/etc/pkgtools.conf; fi
    etc/pkgtools.conf.sample
    @exec [ -f %B/pkgtools.conf ] || cp %B/%f %B/pkgtools.conf

  [1] This somewhat obsoletes work in ports/157168 which added CONF_FILES,
      but we have been moving towards more logic in pkg-plist where possible
      and less magical macros. Though this thinking does clash with autoplist
      ideas. We may still want CONF_FILES, which just drops a list of
      @sample entries into the plist anyway.
- Add a Keywords/pkg_install.awk and hook it into generate-plist. This is
  for pkg_install compatibility since it does not know how to read
  Keywords/sample.yaml.
  This file gives us a strategy to implement more keywords before
  pkg_install is EOL.
  Keywords are documented here:
  bffc31420b
- This needs to be documented in PH and portlint support added still.

PR:		ports/157168 [1]
Discussed with:	bapt
Reviewed by:	bapt
Requested by:	many
With hat:	portmgr
2014-04-12 03:39:02 +00:00

29 lines
878 B
YAML

# $FreeBSD$
#
# MAINTAINER: portmgr@FreeBSD.org
#
# @sample etc/somefile.conf.sample
#
# This will install the somefile.conf.sample and automatically copy to
# somefile.conf if it doesn't exist. On deinstall it will remove the
# somefile.conf if it still matches the sample, otherwise it is
# kept.
#
# This replaces the old pattern:
# @unexec if cmp -s %D/etc/pkgtools.conf %D/etc/pkgtools.conf.sample; then rm -f %D/etc/pkgtools.conf; fi
# etc/pkgtools.conf.sample
# @exec [ -f %B/pkgtools.conf ] || cp %B/%f %B/pkgtools.conf
actions: [file]
post-install: |
sample_file="%D/%@"
target_file="${sample_file%.sample}"
if ! [ -f "${target_file}" ]; then
/bin/cp -p "${sample_file}" "${target_file}"
fi
pre-deinstall: |
sample_file="%D/%@"
target_file="${sample_file%.sample}"
if cmp -s "${target_file}" "${sample_file}"; then
rm -f "${target_file}"
fi