|
1 | 1 | #!/bin/bash |
2 | 2 |
|
| 3 | +# Escape characters special in sed replacement strings (\, &, /) |
| 4 | +escape_sed() { printf '%s\n' "$1" | sed 's/[\\&/]/\\&/g'; } |
| 5 | + |
3 | 6 | mv python_template "$1" |
4 | 7 |
|
| 8 | +ESCAPED_1=$(escape_sed "$1") |
| 9 | + |
5 | 10 | # change project name in all files (exclude main devcontainer.json to protect template image URL) |
6 | | -find . \( -type d -name .git -prune \) -o \( -type f -not -name 'tasks.json' -not -name 'update_from_template.sh' -not -name 'pixi.lock' -not -path './.devcontainer/devcontainer.json' \) -print0 | xargs -0 sed -i "s/python_template/$1/g" |
| 11 | +find . \( -type d -name .git -prune \) -o \( -type f -not -name 'tasks.json' -not -name 'update_from_template.sh' -not -name 'pixi.lock' -not -path './.devcontainer/devcontainer.json' \) -print0 | xargs -0 sed -i "s/python_template/$ESCAPED_1/g" |
7 | 12 |
|
8 | 13 | # update just the name field in devcontainer.json |
9 | | -sed -i "s/\"name\": \"python_template\"/\"name\": \"$1\"/" .devcontainer/devcontainer.json |
| 14 | +sed -i "s/\"name\": \"python_template\"/\"name\": \"$ESCAPED_1\"/" .devcontainer/devcontainer.json |
10 | 15 |
|
11 | 16 | # regenerate lockfile to match renamed project |
12 | 17 | pixi update |
13 | 18 |
|
14 | 19 | # author name |
15 | 20 | if [ -n "$2" ]; then |
16 | | - find . \( -type d -name .git -prune \) -o \( -type f -not -name 'tasks.json' -not -name 'update_from_template.sh' \) -print0 | xargs -0 sed -i "s/Austin Gregg-Smith/$2/g" |
| 21 | + ESCAPED_2=$(escape_sed "$2") |
| 22 | + find . \( -type d -name .git -prune \) -o \( -type f -not -name 'tasks.json' -not -name 'update_from_template.sh' \) -print0 | xargs -0 sed -i "s/Austin Gregg-Smith/$ESCAPED_2/g" |
17 | 23 | fi |
18 | 24 |
|
19 | 25 | # author email |
20 | 26 | if [ -n "$3" ]; then |
21 | | - find . \( -type d -name .git -prune \) -o \( -type f -not -name 'tasks.json' -not -name 'update_from_template.sh' \) -print0 | xargs -0 sed -i "s/blooop@gmail.com/$3/g" |
| 27 | + ESCAPED_3=$(escape_sed "$3") |
| 28 | + find . \( -type d -name .git -prune \) -o \( -type f -not -name 'tasks.json' -not -name 'update_from_template.sh' \) -print0 | xargs -0 sed -i "s/blooop@gmail.com/$ESCAPED_3/g" |
22 | 29 | fi |
23 | 30 |
|
24 | 31 | # github username (exclude main devcontainer.json to protect template image URL) |
25 | 32 | if [ -n "$4" ]; then |
26 | | - find . \( -type d -name .git -prune \) -o \( -type f -not -name 'setup_host.sh' -not -name 'update_from_template.sh' -not -path './.devcontainer/devcontainer.json' \) -print0 | xargs -0 sed -i "s/blooop/$4/g" |
| 33 | + ESCAPED_4=$(escape_sed "$4") |
| 34 | + find . \( -type d -name .git -prune \) -o \( -type f -not -name 'setup_host.sh' -not -name 'update_from_template.sh' -not -path './.devcontainer/devcontainer.json' \) -print0 | xargs -0 sed -i "s/blooop/$ESCAPED_4/g" |
27 | 35 | fi |
0 commit comments