annotate sbin/fports @ 808:ab21dd56f99e

fports: Implement "fports detail -A" as a shortcut to "-b -n -m". While there fixed some "program" usage in the manpage. Also rename a bogus "options" directive to "option".
author Franz Glasner <fzglas.hg@dom66.de>
date Tue, 05 Nov 2024 11:57:34 +0100
parents ed94334bc6f1
children a59cc4bea000
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
1 #!/bin/sh
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
2 # -*- indent-tabs-mode: nil; -*-
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
3 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
4 #: Check the version status of installed ports and compare them to
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
5 #: version in remote repositories and the local ports index.
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
6 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
7 #: :Author: Franz Glasner
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
8 #: :Copyright: (c) 2017-2024 Franz Glasner.
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
9 #: All rights reserved.
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
10 #: :License: BSD 3-Clause "New" or "Revised" License.
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
11 #: See LICENSE for details.
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
12 #: If you cannot find LICENSE see
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
13 #: <https://opensource.org/licenses/BSD-3-Clause>
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
14 #: :ID: @(#)@@SIMPLEVERSIONTAG@@
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
15 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
16
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
17 : # separator for shellcheck: no module-level directives below
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
18
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
19 # shellcheck disable=SC2034 # VERSION appears unused
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
20 VERSION='@@VERSION@@'
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
21
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
22 # shellcheck disable=SC2016 # no expansion
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
23 USAGE='
804
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
24 USAGE: fports -h|--help
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
25 fports -V|--version
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
26 fports deptree [-l maxlevel|--maxlevel=maxlevel] [-r|--reverse] [-t|--list|--transitive] package...
808
ab21dd56f99e fports: Implement "fports detail -A" as a shortcut to "-b -n -m".
Franz Glasner <fzglas.hg@dom66.de>
parents: 807
diff changeset
27 fports detail [-A] [-b|--nofreebsd|--no-freebsd] [-n|--noauto|--no-auto] [-m|--mapped] [package...]
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
28
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
29 GLOBAL OPTIONS:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
30
804
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
31 -V, --version Print the program name and version number to stdout and exit.
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
32
804
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
33 -h, --help Print this help message to stdout and exit.
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
34
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
35 '
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
36
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
37
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
38 _p_datadir='@@DATADIR@@'
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
39 [ "${_p_datadir#@@DATADIR}" = '@@' ] && _p_datadir="$(dirname "$0")"/../share/local-bsdtools
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
40 . "${_p_datadir}/common.subr"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
41 . "${_p_datadir}/farray.sh"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
42 . "${_p_datadir}/ports.subr"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
43
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
44
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
45 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
46 #: Configuration directory.
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
47 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
48 : "${CONFIGDIR:=@@ETCDIR@@}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
49
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
50 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
51 #: Mapping configuration: installed package name -> original package name.
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
52 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
53 #: Note:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
54 #: This is independent of any repo
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
55 #
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
56 : "${PACKAGE_MAPPING:=${CONFIGDIR}/package-mapping.conf}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
57
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
58 # shellcheck disable=SC1091 # does not exist -- cannot read
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
59 [ -r "${CONFIGDIR}/pkgtools.conf" ] && . "${CONFIGDIR}/pkgtools.conf"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
60
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
61
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
62 # no unset variables
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
63 set -u
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
64
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
65
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
66 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
67 #: Implementation of the "deptree" command.
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
68 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
69 command_deptree() {
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
70 local opt_reversed opt_maxlevel opt_flat
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
71 # $@
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
72
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
73 local opt
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
74
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
75 opt_maxlevel=0
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
76 opt_reversed=no
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
77 opt_flat=no
804
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
78 while getopts "l:rt-:" opt; do
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
79 postprocess_getopts_for_long "l:rt-:" opt "maxlevel=" "reverse" "list" "transitive" ""
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
80 case "${opt}" in
804
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
81 l|maxlevel)
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
82 opt_maxlevel=$(($OPTARG + 0));;
804
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
83 r|reverse)
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
84 # shellcheck disable=SC2034
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
85 opt_reversed=yes;;
804
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
86 t|list|transitive)
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
87 opt_flat=yes;;
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
88 \?)
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
89 exit 2;;
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
90 *)
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
91 fatal 2 "option handling failed";;
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
92 esac
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
93 done
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
94 shift $((OPTIND-1))
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
95 OPTIND=1
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
96
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
97 if checkyesno opt_reversed; then
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
98 _command_deptree_reversed "${opt_maxlevel}" "${opt_flat}" "$@"
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
99 else
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
100 _command_deptree_normal "${opt_maxlevel}" "${opt_flat}" "$@"
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
101 fi
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
102 }
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
103
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
104
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
105 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
106 #: Implementation of printing a "normal" dependency tree
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
107 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
108 _command_deptree_normal() {
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
109 local maxlevel flat # $@
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
110
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
111 local pkgdeps pkgqueue curdeps pkg n v flatdeps
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
112
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
113 maxlevel="${1}"
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
114 flat="${2}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
115 shift 2
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
116
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
117 # shellcheck disable=SC2034 # pkgqueue seems unused
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
118 pkgqueue=''
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
119 farray_create pkgqueue # queue (array) of packages that are queued for
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
120 # resolution
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
121
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
122 for pkg in "$@"; do
788
7ca4a36e9e8d fports, ports.subr: Use the variable PKG as path to /usr/bin/pkg
Franz Glasner <fzglas.hg@dom66.de>
parents: 787
diff changeset
123 if ! "${PKG}" query '%n' "${pkg}" 1>/dev/null 2>/dev/null ; then
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
124 farray_release pkgqueue
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
125 fatal "${EX_DATAERR}" "Package not found: ${pkg}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
126 fi
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
127 farray_append pkgqueue "${pkg}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
128 done
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
129 pkgdeps=''
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
130 falist_create pkgdeps # alist of packagges with its direct dependencies
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
131 while farray_pop pkg pkgqueue 1; do
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
132 if ! falist_contains pkgdeps "${pkg}"; then
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
133 curdeps=''
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
134 farray_create curdeps
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
135 while IFS=$' \t\n' read -r n v; do
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
136 [ -z "${n}" ] || [ -z "${v}" ] && continue
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
137 farray_append curdeps "${n}=${v}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
138 farray_append pkgqueue "${n}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
139 done <<EOF_01a8cebe-8659-4e32-87a4-bbce117e386b
788
7ca4a36e9e8d fports, ports.subr: Use the variable PKG as path to /usr/bin/pkg
Franz Glasner <fzglas.hg@dom66.de>
parents: 787
diff changeset
140 $(LC_ALL=C.UTF-8 "${PKG}" query '%dn %dv' "${pkg}")
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
141 EOF_01a8cebe-8659-4e32-87a4-bbce117e386b
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
142 falist_set pkgdeps "${pkg}" "${curdeps}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
143 farray_release curdeps
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
144 curdeps=''
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
145 fi
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
146 done
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
147 farray_release pkgqueue
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
148 # falist_debug pkgdeps
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
149 if checkyesno flat; then
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
150 for pkg in "$@"; do
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
151 _flatten_pkgdeps flatdeps "${pkgdeps}" "${pkg}"
788
7ca4a36e9e8d fports, ports.subr: Use the variable PKG as path to /usr/bin/pkg
Franz Glasner <fzglas.hg@dom66.de>
parents: 787
diff changeset
152 _print_flatdeps '-->' "${pkg}" "$(LC_ALL=C.UTF-8 "${PKG}" query '%v' "${pkg}")" "${flatdeps}"
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
153 falist_release "${flatdeps}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
154 done
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
155 else
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
156 for pkg in "$@"; do
788
7ca4a36e9e8d fports, ports.subr: Use the variable PKG as path to /usr/bin/pkg
Franz Glasner <fzglas.hg@dom66.de>
parents: 787
diff changeset
157 _print_dependency_tree 0 "${maxlevel}" '-->' "${pkg}" "$(LC_ALL=C.UTF-8 "${PKG}" query '%v' "${pkg}")" "${pkgdeps}"
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
158 done
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
159 fi
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
160 falist_release pkgdeps
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
161 }
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
162
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
163
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
164 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
165 #: Implementation of printing a reversed dependency tree
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
166 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
167 _command_deptree_reversed() {
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
168 local maxlevel flat # $@
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
169
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
170 local pkgdeps pkgqueue curdeps pkg n v flatdeps
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
171
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
172 maxlevel="${1}"
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
173 # shellcheck disable=SC2034 # appears unused
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
174 flat="${2}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
175 shift 2
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
176
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
177 # shellcheck disable=SC2034 # pkgqueue seems unused
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
178 pkgqueue=''
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
179 farray_create pkgqueue # queue (array) of packages that are queued for
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
180 # resolution
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
181
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
182 for pkg in "$@"; do
788
7ca4a36e9e8d fports, ports.subr: Use the variable PKG as path to /usr/bin/pkg
Franz Glasner <fzglas.hg@dom66.de>
parents: 787
diff changeset
183 if ! "${PKG}" query '%n' "${pkg}" 1>/dev/null 2>/dev/null ; then
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
184 farray_release pkgqueue
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
185 fatal "${EX_DATAERR}" "Package not found: ${pkg}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
186 fi
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
187 farray_append pkgqueue "${pkg}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
188 done
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
189 pkgdeps=''
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
190 falist_create pkgdeps # alist of packagges with its direct dependencies
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
191 while farray_pop pkg pkgqueue 1; do
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
192 if ! falist_contains pkgdeps "${pkg}"; then
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
193 curdeps=''
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
194 farray_create curdeps
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
195 while IFS=$' \t\n' read -r n v; do
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
196 [ -z "${n}" ] || [ -z "${v}" ] && continue
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
197 farray_append curdeps "${n}=${v}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
198 farray_append pkgqueue "${n}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
199 done <<EOF_5079e996-c6d2-4e6d-825d-53183a64ab06
788
7ca4a36e9e8d fports, ports.subr: Use the variable PKG as path to /usr/bin/pkg
Franz Glasner <fzglas.hg@dom66.de>
parents: 787
diff changeset
200 $(LC_ALL=C.UTF-8 "${PKG}" query '%rn %rv' "${pkg}")
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
201 EOF_5079e996-c6d2-4e6d-825d-53183a64ab06
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
202 falist_set pkgdeps "${pkg}" "${curdeps}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
203 farray_release curdeps
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
204 curdeps=''
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
205 fi
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
206 done
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
207 farray_release pkgqueue
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
208 # falist_debug pkgdeps
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
209 if checkyesno flat; then
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
210 for pkg in "$@"; do
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
211 _flatten_pkgdeps flatdeps "${pkgdeps}" "${pkg}"
788
7ca4a36e9e8d fports, ports.subr: Use the variable PKG as path to /usr/bin/pkg
Franz Glasner <fzglas.hg@dom66.de>
parents: 787
diff changeset
212 _print_flatdeps '<--' "${pkg}" "$(LC_ALL=C.UTF-8 "${PKG}" query '%v' "${pkg}")" "${flatdeps}"
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
213 falist_release "${flatdeps}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
214 done
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
215 else
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
216 for pkg in "$@"; do
788
7ca4a36e9e8d fports, ports.subr: Use the variable PKG as path to /usr/bin/pkg
Franz Glasner <fzglas.hg@dom66.de>
parents: 787
diff changeset
217 _print_dependency_tree 0 "${maxlevel}" '<--' "${pkg}" "$(LC_ALL=C.UTF-8 "${PKG}" query '%v' "${pkg}")" "${pkgdeps}"
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
218 done
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
219 fi
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
220 falist_release pkgdeps
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
221 }
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
222
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
223
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
224 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
225 #: Internal helper to print an indented dependency list for a package.
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
226 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
227 #: Args:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
228 #: $1 (int): The (indentation) level where a level of `0` is the root level
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
229 #: $2 (int): The maximum level (`$1`) to print to
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
230 #: $3 (str): The package tag to use to for non-root-levels
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
231 #: $4 (str): The package name
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
232 #: $5 (str): The package version
785
43cebff4ea0d fports: Fix typo in docs
Franz Glasner <fzglas.hg@dom66.de>
parents: 770
diff changeset
233 #: $6 (alist): The alist of resolved packages and their dependencies
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
234 #:
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
235 _print_dependency_tree() {
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
236 # $1 $2 $3 $4 $5 $6
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
237
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
238 local i pkg ver curdeps
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
239
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
240 if [ "${2}" -ge 1 ]; then
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
241 [ "${1}" -gt "${2}" ] && return 0
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
242 fi
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
243
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
244 i="${1}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
245 while [ "${i}" -gt 1 ]; do
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
246 printf '%s' ' '
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
247 i=$((i - 1))
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
248 done
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
249 [ "${1}" -ne 0 ] && printf '%s ' "${3}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
250 printf '%s v%s\n' "${4}" "${5}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
251 falist_get curdeps "${6}" "${pkg}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
252 i=1
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
253 while farray_tryget pkg "${curdeps}" "${i}"; do
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
254 ver="${pkg#*=}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
255 pkg="${pkg%%=*}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
256 _print_dependency_tree $(($1 + 1)) "${2}" "${3}" "${pkg}" "${ver}" "${6}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
257 i=$((i + 1))
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
258 done
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
259 farray_release curdeps
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
260 }
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
261
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
262
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
263 #:
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
264 #: Args:
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
265 #: $1 (str): The package tag to use
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
266 #: $2 (str): The root package name
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
267 #: $3 (str): The package version of the root package in `$3`
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
268 #: $4 (alist): The alist of the flattened dependencies
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
269 #:
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
270 _print_flatdeps() {
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
271 # $1 $2 $3 $4
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
272
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
273 local pkgnames i n v
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
274
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
275 printf '%s v%s\n' "${2}" "${3}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
276
787
004c676c3415 fports: Improve script help "-h" somewhat
Franz Glasner <fzglas.hg@dom66.de>
parents: 786
diff changeset
277 # shellcheck disable=SC2034 # appears unused
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
278 pkgnames=''
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
279 farray_create pkgnames
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
280 falist_keys pkgnames "$4"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
281 farray_sort pkgnames
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
282 i=1
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
283 while farray_tryget n pkgnames "${i}"; do
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
284 falist_get v "${4}" "${n}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
285 printf '%s %s v%s\n' "${1}" "${n}" "${v}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
286 i=$((i + 1))
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
287 done
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
288
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
289 farray_release pkgnames
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
290 }
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
291
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
292
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
293 #:
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
294 #: Flatten a package dependency alist.
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
295 #:
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
296 #: Args:
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
297 #: $1 (str): The variable name where to store the flattened dependencies
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
298 #: into. This object (alist) must be released by the caller.
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
299 #: $2 (str): The alist with all packages and its dependencies
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
300 #: $3 (str): The package for which to flatten its dependencies
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
301 #:
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
302 _flatten_pkgdeps() {
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
303 local pkgdeps rootpkg # and $1
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
304
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
305 local alldeps queue pkg curdeps i depname depver
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
306
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
307 pkgdeps="${2}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
308 rootpkg="${3}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
309
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
310 falist_contains pkgdeps "${rootpkg}" || fatal "${EX_SOFTWARE}" "given package \`${rootpkg}' not in the given package dependency map"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
311
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
312 queue=''
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
313 farray_create queue # array with package names to be flattened
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
314
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
315 farray_append queue "${rootpkg}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
316
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
317 alldeps=''
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
318 falist_create alldeps # alist with pkgname -> version
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
319 while farray_pop pkg queue 1; do
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
320 if ! falist_contains alldeps "${pkg}"; then
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
321 curdeps=''
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
322 falist_get curdeps pkgdeps "${pkg}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
323 i=1
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
324 while farray_tryget depname curdeps "${i}"; do
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
325 depver="${depname#*=}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
326 depname="${depname%%=*}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
327 if ! falist_contains alldeps "${depname}"; then
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
328 falist_set alldeps "${depname}" "${depver}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
329 fi
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
330 farray_append queue "${depname}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
331 i=$((i + 1))
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
332 done
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
333 farray_release curdeps
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
334 fi
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
335 done
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
336
796
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
337 farray_release "${queue}"
786
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
338
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
339 setvar "${1}" "${alldeps}"
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
340 }
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
341
b78815b47d5e fports: deptree has now an option to print a flattened tree.
Franz Glasner <fzglas.hg@dom66.de>
parents: 785
diff changeset
342
796
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
343 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
344 #: Implementation of the "detail" command.
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
345 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
346 command_detail() {
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
347 local opt_noauto opt_mapped
796
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
348 # $@
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
349
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
350 local package \
806
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
351 packages do_sort idx prev_package \
796
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
352 repositories packagemapping instver instrepo \
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
353 repo title_printed indexfile _dummy opt acookie \
796
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
354 pkglabel pkgdescr pkgversion mapped_package
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
355
806
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
356 do_sort=no
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
357 opt_nofreebsd=no
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
358 opt_noauto=no
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
359 opt_mapped=no
808
ab21dd56f99e fports: Implement "fports detail -A" as a shortcut to "-b -n -m".
Franz Glasner <fzglas.hg@dom66.de>
parents: 807
diff changeset
360 while getopts "Abnm-:" opt; do
ab21dd56f99e fports: Implement "fports detail -A" as a shortcut to "-b -n -m".
Franz Glasner <fzglas.hg@dom66.de>
parents: 807
diff changeset
361 postprocess_getopts_for_long "Abnm-:" opt "nofreebsd" "no-freebsd" "noauto" "no-auto" "mapped" ""
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
362 case "${opt}" in
808
ab21dd56f99e fports: Implement "fports detail -A" as a shortcut to "-b -n -m".
Franz Glasner <fzglas.hg@dom66.de>
parents: 807
diff changeset
363 A)
ab21dd56f99e fports: Implement "fports detail -A" as a shortcut to "-b -n -m".
Franz Glasner <fzglas.hg@dom66.de>
parents: 807
diff changeset
364 opt_nofreebsd=yes
ab21dd56f99e fports: Implement "fports detail -A" as a shortcut to "-b -n -m".
Franz Glasner <fzglas.hg@dom66.de>
parents: 807
diff changeset
365 opt_noauto=yes
ab21dd56f99e fports: Implement "fports detail -A" as a shortcut to "-b -n -m".
Franz Glasner <fzglas.hg@dom66.de>
parents: 807
diff changeset
366 opt_mapped=yes
ab21dd56f99e fports: Implement "fports detail -A" as a shortcut to "-b -n -m".
Franz Glasner <fzglas.hg@dom66.de>
parents: 807
diff changeset
367 do_sort=yes
ab21dd56f99e fports: Implement "fports detail -A" as a shortcut to "-b -n -m".
Franz Glasner <fzglas.hg@dom66.de>
parents: 807
diff changeset
368 ;;
806
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
369 b|nofreebsd|no-freebsd)
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
370 # shellcheck disable=SC2034 # appears unused
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
371 opt_nofreebsd=yes
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
372 do_sort=yes
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
373 ;;
804
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
374 n|noauto|no-auto)
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
375 # shellcheck disable=SC2034 # appears unused
806
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
376 opt_noauto=yes
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
377 do_sort=yes
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
378 ;;
804
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
379 m|mapped)
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
380 # shellcheck disable=SC2034 # appears unused
806
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
381 opt_mapped=yes
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
382 do_sort=yes
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
383 ;;
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
384 \?)
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
385 exit 2;;
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
386 *)
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
387 fatal 2 "option handling failed";;
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
388 esac
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
389 done
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
390 shift $((OPTIND-1))
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
391 OPTIND=1
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
392
806
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
393 packages=''
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
394 farray_create packages
796
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
395 repositories=''
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
396 get_active_repositories repositories
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
397 packagemapping=''
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
398 init_package_mapping packagemapping
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
399 indexfile="$(get_local_index_file)"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
400
806
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
401 if checkyesno opt_nofreebsd; then
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
402 while IFS='|' read -r package repo; do
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
403 [ "${repo}" != 'FreeBSD' ] && farray_append packages "${package}"
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
404 done <<EOF_1fa6f326-49e6-4b01-a7ea-52372d00df1e
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
405 $(LC_ALL=C.UTF-8 "${PKG}" query '%n|%R')
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
406 EOF_1fa6f326-49e6-4b01-a7ea-52372d00df1e
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
407 fi
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
408 if checkyesno opt_noauto; then
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
409 for package in $(LC_ALL=C.UTF-8 "${PKG}" query -e '%a = 0' '%n'); do
806
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
410 farray_append packages "${package}"
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
411 done
806
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
412 fi
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
413 if checkyesno opt_mapped; then
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
414 acookie="$(falist_cookie_first packagemapping)"
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
415 while falist_tryget_key_at package "${acookie}"; do
806
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
416 farray_append packages "${package}"
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
417 acookie="$(falist_cookie_next "${acookie}")"
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
418 done
806
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
419 fi
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
420 for package in "$@"; do
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
421 farray_append packages "${package}"
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
422 done
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
423 checkyesnovalue "${do_sort}" && farray_sort packages
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
424
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
425 idx=1
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
426 prev_package='' # to skip duplicate packages
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
427 while farray_tryget package packages "${idx}"; do
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
428 if [ "${prev_package}" != "${package}" ]; then
800
1c4d729963dc fports: Implement "fports detail -A" and "fports detail -M".
Franz Glasner <fzglas.hg@dom66.de>
parents: 799
diff changeset
429 _package_max_detail "${package}" "${packagemapping}" "${repositories}" "${indexfile}"
806
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
430 prev_package="${package}"
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
431 fi
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
432 idx=$((idx + 1))
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
433 done
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
434
796
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
435 falist_release "${packagemapping}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
436 farray_release "${repositories}"
806
b59054f11029 fports: Implement "fports detail -b" to print details about all packages that are not installed from the blessed FreeBSD repo.
Franz Glasner <fzglas.hg@dom66.de>
parents: 804
diff changeset
437 farray_release "${packages}"
796
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
438 }
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
439
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
440
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
441 #:
797
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
442 #: Implementation of printing the most details possible for a package.
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
443 #:
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
444 #: Implements all the repeating stuff for a package for e.g. `command_detail`.
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
445 #:
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
446 #: Args:
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
447 #: $1 (str): The name of the package
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
448 #: $2 (alist): The
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
449 #: $3 (array): The array with all the configured/active repositories
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
450 #: $4 (str, null): The local index file if it exists
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
451 #:
799
96631c3886d9 fports: Rename _package_detail() to _package_max_detail()
Franz Glasner <fzglas.hg@dom66.de>
parents: 798
diff changeset
452 _package_max_detail() {
797
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
453 local package packagemapping repositories indexfile
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
454
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
455 local instver instrepo repo title_printed _dummy \
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
456 pkglabel pkgdescr pkgversion mapped_package
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
457
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
458 package="${1}"
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
459 packagemapping="${2}"
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
460 repositories="${3}"
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
461 indexfile="${4}"
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
462
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
463 # shellcheck disable=SC2034 # appears unused
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
464 title_printed=no
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
465 IFS='|' read -r instver instrepo <<EOF_e9bd7819-b4c5-4a86-b984-f5226db58cb1
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
466 $(LC_ALL=C.UTF-8 "${PKG}" query '%v|%R' "${package}")
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
467 EOF_e9bd7819-b4c5-4a86-b984-f5226db58cb1
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
468 print_title title_printed "${package}" "${instver}" "${instrepo}"
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
469 if [ -n "${indexfile}" ]; then
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
470 read -r _dummy pkglabel pkgdescr <<EOF_b1f225bd-d234-4a23-8a2a-40c2e5b7ff3c
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
471 $(LC_ALL=C.UTF-8 "${PKG}" version -U -I -n "${package}" -v "${indexfile}")
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
472 EOF_b1f225bd-d234-4a23-8a2a-40c2e5b7ff3c
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
473 pkgversion="$(parse_index_file_for_package_version "${indexfile}" "${package}")"
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
474 print_detail_item "INDEX" "${pkgversion}" "${pkglabel}" "${pkgdescr}"
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
475 fi
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
476 farray_for_each repositories _package_repository_detail "${package}" 0
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
477 mapped_package="$(get_package_mapping "${packagemapping}" "${package}")"
798
e48b38cf7bb1 fports: FIX: Remove debug setting with regard to mapped packages
Franz Glasner <fzglas.hg@dom66.de>
parents: 797
diff changeset
478 if [ -n "${mapped_package}" ]; then
797
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
479 printf '%18s %s\n' "--------------->" "${mapped_package}"
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
480 if [ -n "${indexfile}" ]; then
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
481 pkgversion="$(parse_index_file_for_package_version "${indexfile}" "${mapped_package}")"
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
482 pkglabel="$(LC_ALL=C.UTF-8 "${PKG}" version --test-version "${instver}" "${pkgversion}")"
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
483 print_detail_item "INDEX" "${pkgversion}" "${pkglabel}" '' 19
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
484 fi
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
485 farray_for_each repositories _mapped_package_repository_detail "${mapped_package}" "{instver}" 19
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
486 fi
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
487 }
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
488
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
489
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
490 #:
796
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
491 #: Array callback to print package details with regard to a repository.
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
492 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
493 #: Args:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
494 #: $1 (str): The repositories array
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
495 #: $2 (int): The current index
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
496 #: $3: The element value (i.e. repository name)
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
497 #: $4 (str): The (master) package name
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
498 #: $5 (int): The extra indent value to forward to called functions
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
499 #:
797
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
500 _package_repository_detail() {
796
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
501 local repositories idx reponame package extraindent
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
502
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
503 local _dummy \
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
504 pkglabel pkgdescr pkgversion
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
505
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
506 repositories="${1}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
507 # shellcheck disable=SC2034 # appears unused (yes, accept it)
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
508 idx="${2}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
509 reponame="${3}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
510 package="${4}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
511 extraindent="${5:-0}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
512
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
513 read -r _dummy pkglabel pkgdescr <<EOF_19cf2d80-4eb9-4cda-bd4d-96b04e769206
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
514 $(LC_ALL=C.UTF-8 "${PKG}" version -U -R -r "${reponame}" -n "${package}" -v)
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
515 EOF_19cf2d80-4eb9-4cda-bd4d-96b04e769206
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
516 pkgversion="$(LC_ALL=C.UTF-8 "${PKG}" rquery -U -r "${reponame}" '%v' "${package}")"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
517 print_detail_item "${reponame}" "${pkgversion}" "${pkglabel}" "${pkgdescr}" "${extraindent}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
518 }
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
519
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
520
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
521 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
522 #: Array callback to print package details for a mapped package with regard
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
523 #: to a repository.
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
524 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
525 #: Args:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
526 #: $1 (str): The repositories array
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
527 #: $2 (int): The current index
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
528 #: $3: The element value (i.e. repository name)
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
529 #: $4 (str): The mapped package name
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
530 #: $5 (str): The parent package version
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
531 #: $6 (int): The extra indent value to forward to called functions
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
532 #:
797
7f64b4420703 fports: Refactor: split up command_detail(): make a function that is called for each package
Franz Glasner <fzglas.hg@dom66.de>
parents: 796
diff changeset
533 _mapped_package_repository_detail() {
796
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
534 local repositories idx reponame package parent_pkgversion extraindent
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
535
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
536 local _dummy \
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
537 pkglabel pkgversion
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
538
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
539 repositories="${1}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
540 # shellcheck disable=SC2034 # appears unused (yes, accept it)
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
541 idx="${2}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
542 reponame="${3}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
543 package="${4}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
544 parent_pkgversion="${5}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
545 extraindent="${6:-0}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
546
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
547 pkgversion="$(LC_ALL=C.UTF-8 "${PKG}" rquery -U -r "${reponame}" '%v' "${package}")"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
548 pkglabel="$(LC_ALL=C.UTF-8 "${PKG}" version --test-version "${parent_pkgversion}" "${pkgversion}")"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
549 print_detail_item "${reponame}" "${pkgversion}" "${pkglabel}" '' "${extraindent}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
550 }
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
551
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
552
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
553 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
554 #: Print the output title line for a package.
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
555 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
556 #: Args:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
557 #: $1 (str): The name of the variable where to get or store the flag
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
558 #: whether the title for the package in `$2` has already been
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
559 #: printed.
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
560 #: $2 (str): The package name
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
561 #: $3 (str): The package version
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
562 #: $4 (str): The repository name from which the package has been installed
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
563 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
564 #: Output (stdout):
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
565 #: The formatted title line
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
566 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
567 print_title() {
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
568 local varname_title_printed package version repo
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
569
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
570 varname_title_printed="${1}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
571 package="${2}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
572 version="${3}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
573 repo="${4}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
574
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
575 if ! checkyes "${varname_title_printed}"; then
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
576 if [ -n "${version}" ]; then
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
577 # The package is installed
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
578 printf '%-36s %-17s (%s)\n' "${package}" "${version}" "${repo}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
579 else
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
580 # The package is not installed
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
581 printf '%-36s NOT INSTALLED\n' "${package}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
582 fi
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
583 setvar "${varname_title_printed}" 'yes'
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
584 fi
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
585 }
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
586
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
587
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
588 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
589 #: Print a detail item to stdout.
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
590 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
591 #: The description `_descr` will not be printed if the label `_label`
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
592 #: is ``?``.
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
593 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
594 #: Args:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
595 #: $1 (str): The repository name
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
596 #: $2 (str): The version number to print to
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
597 #: $3 (str): The label (aka comparison character) to print to
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
598 #: $4 (str): The description to print to
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
599 #: $5 (int, optional): The extra indentation to use. (Default 0)
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
600 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
601 #: Output (stdout):
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
602 #: The formatted detail line
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
603 #:
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
604 print_detail_item() {
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
605 local repo version label descr indent
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
606
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
607 local real_descr
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
608
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
609 repo="${1}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
610 version="${2}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
611 label="${3}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
612 descr="${4}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
613 indent="${5:-0}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
614
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
615 if [ "${label}" = '?' ]; then
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
616 real_descr=''
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
617 else
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
618 real_descr="${descr}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
619 fi
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
620
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
621 printf '%-*s %-15s: %-17s %s %s\n' $((indent)) '' "${repo}" "${version}" "${label}" "${real_descr}"
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
622 }
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
623
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
624
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
625 #
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
626 # Global option handling
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
627 #
804
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
628 while getopts "Vh-:" _opt ; do
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
629 postprocess_getopts_for_long "Vh-:" _opt "version" "help" ""
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
630 case "${_opt}" in
804
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
631 V|version)
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
632 printf 'fports %s\n' '@@SIMPLEVERSIONSTR@@'
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
633 exit 0
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
634 ;;
804
f406b3b76b62 fports: Implemented also long commandline options
Franz Glasner <fzglas.hg@dom66.de>
parents: 802
diff changeset
635 h|help)
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
636 echo "${USAGE}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
637 exit 0
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
638 ;;
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
639 \?)
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
640 exit 2;
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
641 ;;
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
642 *)
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
643 fatal 2 "option handling failed"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
644 ;;
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
645 esac
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
646 done
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
647
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
648 #
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
649 # Reset the Shell's option handling system to prepare for handling
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
650 # command-local options.
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
651 #
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
652 shift $((OPTIND-1))
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
653 OPTIND=1
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
654
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
655 command="${1-}"
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
656 shift
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
657
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
658 case "${command}" in
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
659 '') fatal 2 "no command given";;
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
660 deptree)
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
661 command_deptree "$@";;
796
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
662 detail)
e48d173534ec fports: Implement "fports detail" to print the status of all given packages in the most detail possible
Franz Glasner <fzglas.hg@dom66.de>
parents: 788
diff changeset
663 command_detail "$@";;
770
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
664 *)
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
665 fatal 2 "unknown command \`${command}'";;
56ab5c012d5f fports: Begin a new command "fports" and fully implemented its subcommand "fports deptree".
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
666 esac