#!/bin/sh # # $NetBSD: pkg_path,v 1.5 2018/08/22 20:48:37 maya Exp $ # # Copyright (c) 2006 The NetBSD Foundation, Inc. # All rights reserved. # # This code is derived from software contributed to The NetBSD Foundation # by Johnny C. Lam. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # ###################################################################### # # NAME # pkg_path -- canonicalize directories into "package paths" # # SYNOPSIS # pkg_path [-s pkgsrcdir] dir ... # # OPTIONS # The following command line arguments are supported. # # -s pkgsrcdir Use the specified directory as the path to the # pkgsrc directory tree. By default, this is the # value stored in the PKGSRCDIR environment variable. # # DESCRIPTION # pkg_path canonicalizes the specified directories into package # paths that are relative to the pkgsrc directory tree, and prints # each of them to standard output on a new line. The specified # directories are taken to be relative to the current directory. # Directories that are not valid package directories or are not # found are skipped during processing. # # ENVIRONMENT # PKGSRCDIR This is the location of the pkgsrc directory tree, # which defaults to "/usr/pkgsrc". # ###################################################################### : ${ECHO=echo} : ${PKGSRCDIR="/usr/pkgsrc"} : ${PWD_CMD="pwd -P"} self="${0##*/}" usage() { ${ECHO} 1>&2 "usage: $self [-s pkgsrcdir] dir ..." } exitcode=0 # Process optional arguments while [ $# -gt 0 ]; do case "$1" in -s) PKGSRCDIR=$2; shift 2 ;; --) shift; break ;; -*) ${ECHO} 1>&2 "$self: unknown option -- ${1#-}" usage exit 1 ;; *) break ;; esac done # Process required arguments startdir=`${PWD_CMD}` while [ $# -gt 0 ]; do dir="$1"; shift case "$dir" in ${PKGSRCDIR}/*) ;; /*) ${ECHO} 1>&2 "$self: \`\`$dir'' not a valid package directory" exitcode=1 continue ;; esac if [ ! -d "$startdir/$dir" ]; then ${ECHO} 1>&2 "$self: \`\`$dir'' not found" exitcode=1 continue fi pkgpath=`cd $startdir/$dir && ${PWD_CMD}` pkgpath="${pkgpath#${PKGSRCDIR}/}" ${ECHO} "$pkgpath" done exit $exitcode