1 | # Called from spec/ysh-user-feedback
|
2 | #
|
3 | # Spec test framework reads code from stdin, which conflicts with read --line
|
4 |
|
5 | # https://lobste.rs/s/ritbgc/what_glue_languages_do_you_use_like#c_nhikri
|
6 | #
|
7 | # See bash counterpart in spec/blog1.test.sh
|
8 |
|
9 | git-branch-merged() {
|
10 | cat <<EOF
|
11 | foo
|
12 | * bar
|
13 | baz
|
14 | master
|
15 | EOF
|
16 | }
|
17 |
|
18 | # With bash-style readarray. The -t to remove trailing newline is annoying.
|
19 | git-branch-merged | while read -r line {
|
20 | # Note: this can't be 'const' because const is dynamic like 'readonly'. And
|
21 | # we don't have block scope.
|
22 | var line = line => trim() # removing leading space
|
23 |
|
24 | # with glob: line ~~ '\**' (awkward)
|
25 | # with regex: line ~ / %start '*' / (not terrible, but somewhat complex)
|
26 |
|
27 | if (line !== 'master' and not line => startsWith('*')) {
|
28 | echo $line
|
29 | }
|
30 | } | readarray -t branches
|
31 |
|
32 | # TODO: I think we want read --lines (&branches)? Then we don't need this
|
33 | # conversion.
|
34 | var branchList = :| "${branches[@]}" |
|
35 |
|
36 | if (len(branchList) === 0) {
|
37 | echo "No merged branches"
|
38 | } else {
|
39 | write git branch -D @branchList
|
40 | }
|
41 |
|
42 | # With "append". Hm read --lines isn't bad.
|
43 | var branches2 = :| |
|
44 | git-branch-merged | while read -r line {
|
45 | var line2 = line => trim() # removing leading space
|
46 | if (line2 !== 'master' and not line2 => startsWith('*')) {
|
47 | append $line2 (branches2)
|
48 | }
|
49 | }
|
50 |
|
51 | write -- ___ @branches2
|
52 |
|