Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1#! @runtimeShell@
2
3set -o errexit
4set -o nounset
5
6show_help() {
7 @coreutils@/bin/cat << EOF
8Usage: lsb_release [options]
9
10Options:
11 -h, --help show this help message and exit
12 -v, --version show LSB modules this system supports
13 -i, --id show distributor ID
14 -d, --description show description of this distribution
15 -r, --release show release number of this distribution
16 -c, --codename show code name of this distribution
17 -a, --all show all of the above information
18 -s, --short show requested information in short format
19EOF
20 exit 0
21}
22
23# Potential command-line options.
24version=0
25id=0
26description=0
27release=0
28codename=0
29all=0
30short=0
31
32@getopt@/bin/getopt --test > /dev/null && rc=$? || rc=$?
33if [[ $rc -ne 4 ]]; then
34 # This shouldn't happen.
35 echo "Warning: Enhanced getopt not supported, please open an issue in nixpkgs." >&2
36else
37 # Define all short and long options.
38 SHORT=hvidrcas
39 LONG=help,version,id,description,release,codename,all,short
40
41 # Parse all options.
42 PARSED=`@getopt@/bin/getopt --options $SHORT --longoptions $LONG --name "$0" -- "$@"`
43
44 eval set -- "$PARSED"
45fi
46
47
48# Process each argument, and set the appropriate flag if we recognize it.
49while [[ $# -ge 1 ]]; do
50 case "$1" in
51 -v|--version)
52 version=1
53 ;;
54 -i|--id)
55 id=1
56 ;;
57 -d|--description)
58 description=1
59 ;;
60 -r|--release)
61 release=1
62 ;;
63 -c|--codename)
64 codename=1
65 ;;
66 -a|--all)
67 all=1
68 ;;
69 -s|--short)
70 short=1
71 ;;
72 -h|--help)
73 show_help
74 ;;
75 --)
76 shift
77 break
78 ;;
79 *)
80 echo "lsb_release: unrecognized option '$1'"
81 echo "Type 'lsb_release -h' for a list of available options."
82 exit 1
83 ;;
84 esac
85 shift
86done
87
88# Read our variables.
89if [[ -e /etc/os-release ]]; then
90 . /etc/os-release
91 OS_RELEASE_FOUND=1
92else
93 # This is e.g. relevant for the Nix build sandbox and compatible with the
94 # original lsb_release binary:
95 OS_RELEASE_FOUND=0
96 NAME="n/a"
97 PRETTY_NAME="(none)"
98 VERSION_ID="n/a"
99 VERSION_CODENAME="n/a"
100fi
101
102# Default output
103if [[ "$version" = "0" ]] && [[ "$id" = "0" ]] && \
104 [[ "$description" = "0" ]] && [[ "$release" = "0" ]] && \
105 [[ "$codename" = "0" ]] && [[ "$all" = "0" ]]; then
106 if [[ "$OS_RELEASE_FOUND" = "1" ]]; then
107 echo "No LSB modules are available." >&2
108 else
109 if [[ "$short" = "0" ]]; then
110 printf "LSB Version:\tn/a\n"
111 else
112 printf "n/a\n"
113 fi
114 fi
115 exit 0
116fi
117
118# Now output the data - The order of these was chosen to match
119# what the original lsb_release used.
120
121SHORT_OUTPUT=""
122append_short_output() {
123 if [[ "$1" = "n/a" ]]; then
124 SHORT_OUTPUT+=" $1"
125 else
126 SHORT_OUTPUT+=" \"$1\""
127 fi
128}
129
130if [[ "$all" = "1" ]] || [[ "$version" = "1" ]]; then
131 if [[ "$OS_RELEASE_FOUND" = "1" ]]; then
132 if [[ "$short" = "0" ]]; then
133 echo "No LSB modules are available." >&2
134 else
135 append_short_output "n/a"
136 fi
137 else
138 if [[ "$short" = "0" ]]; then
139 printf "LSB Version:\tn/a\n"
140 else
141 append_short_output "n/a"
142 fi
143 fi
144fi
145
146if [[ "$all" = "1" ]] || [[ "$id" = "1" ]]; then
147 if [[ "$short" = "0" ]]; then
148 printf "Distributor ID:\t$NAME\n"
149 else
150 append_short_output "$NAME"
151 fi
152fi
153
154if [[ "$all" = "1" ]] || [[ "$description" = "1" ]]; then
155 if [[ "$short" = "0" ]]; then
156 printf "Description:\t$PRETTY_NAME\n"
157 else
158 append_short_output "$PRETTY_NAME"
159 fi
160fi
161
162if [[ "$all" = "1" ]] || [[ "$release" = "1" ]]; then
163 if [[ "$short" = "0" ]]; then
164 printf "Release:\t$VERSION_ID\n"
165 else
166 append_short_output "$VERSION_ID"
167 fi
168fi
169
170if [[ "$all" = "1" ]] || [[ "$codename" = "1" ]]; then
171 if [[ "$short" = "0" ]]; then
172 printf "Codename:\t$VERSION_CODENAME\n"
173 else
174 append_short_output "$VERSION_CODENAME"
175 fi
176fi
177
178if [[ "$short" = "1" ]]; then
179 # Output in one line without the first space:
180 echo "${SHORT_OUTPUT:1}"
181fi
182
183# For compatibility with the original lsb_release:
184if [[ "$OS_RELEASE_FOUND" = "0" ]]; then
185 if [[ "$all" = "1" ]] || [[ "$id" = "1" ]] || \
186 [[ "$description" = "1" ]] || [[ "$release" = "1" ]] || \
187 [[ "$codename" = "1" ]]; then
188 exit 3
189 fi
190fi