diff options
author | Andrew Cady <d@cryptonomic.net> | 2022-03-27 19:57:48 -0400 |
---|---|---|
committer | Andrew Cady <d@cryptonomic.net> | 2022-03-27 19:57:53 -0400 |
commit | 27ec0712a4bdc8e27cab768ef407ab632f4261b9 (patch) | |
tree | 4c4aa309117c27e6dfb85f6794a0d2d1461c3bac | |
parent | 88e95dad71447b03ac95514da0fd281389dc9d7b (diff) |
unfinished command "slice"
WIP
-rwxr-xr-x | slice | 47 |
1 files changed, 47 insertions, 0 deletions
@@ -0,0 +1,47 @@ | |||
1 | #!/bin/bash | ||
2 | default_percent='50' | ||
3 | keep_env=(XAUTHORITY DISPLAY) | ||
4 | set -e | ||
5 | |||
6 | usage() | ||
7 | { | ||
8 | cat <<EOF | ||
9 | Usage: $0 [percentage]% [--] command [arguments...] | ||
10 | |||
11 | The [percentage] argument must end with a literal '%'. | ||
12 | |||
13 | E.g.: | ||
14 | |||
15 | slice 50% firefox | ||
16 | |||
17 | The command cannot start with a literal '-'. | ||
18 | EOF | ||
19 | } | ||
20 | |||
21 | percent=$1 | ||
22 | case "$1" in | ||
23 | --) percent=$default_percent ;; | ||
24 | '' | -*) usage >&2; exit 1;; | ||
25 | *.*%) percent=${1%.*} ;; | ||
26 | *%) percent=${1%\%} ;; | ||
27 | esac | ||
28 | [ "$percent" -ge 0 ] | ||
29 | [ "$percent" -le 100 ] | ||
30 | |||
31 | shift | ||
32 | case "$1" in | ||
33 | --) shift ;; | ||
34 | esac | ||
35 | unit_name=$1 | ||
36 | |||
37 | keep_env_opts=() | ||
38 | for v in "${keep_env[@]}" | ||
39 | do | ||
40 | keep_env_opts+=(-E "${!v}") | ||
41 | done | ||
42 | |||
43 | systemd-run -u "$unit_name" \ | ||
44 | "${keep_env_opts[@]}" | ||
45 | "$0" "$@" | ||
46 | "$@" | ||
47 | |||