|
6 | 6 | # >>> publish to npm (optional) |
7 | 7 |
|
8 | 8 | # Init UI colors |
9 | | -nc="\033[0m" # no color |
10 | | -br="\033[1;91m" # bright red |
11 | | -by="\033[1;33m" # bright yellow |
12 | | -bg="\033[1;92m" # bright green |
13 | | -bw="\033[1;97m" # bright white |
| 9 | +NC="\033[0m" # no color |
| 10 | +BR="\033[1;91m" # bright red |
| 11 | +BY="\033[1;33m" # bright yellow |
| 12 | +BG="\033[1;92m" # bright green |
| 13 | +BW="\033[1;97m" # bright white |
14 | 14 |
|
15 | 15 | # Validate version arg |
16 | 16 | ver_types=("major" "minor" "patch") |
17 | 17 | if [[ ! "${ver_types[@]}" =~ "$1" ]] ; then |
18 | | - echo "${br}Invalid version argument. Please specify 'major', 'minor', or 'patch'.${nc}" |
| 18 | + echo "${BR}Invalid version argument. Please specify 'major', 'minor', or 'patch'.${NC}" |
19 | 19 | exit 1 ; fi |
20 | 20 |
|
21 | 21 | # Determine new version to bump to |
22 | | -OLD_VERSION=$(node -pe "require('./package.json').version") |
23 | | -IFS='.' read -ra subvers <<< "$OLD_VERSION" # split OLD_VERSION into subvers array |
| 22 | +old_ver=$(node -pe "require('./package.json').version") |
| 23 | +IFS='.' read -ra subvers <<< "$old_ver" # split old_ver into subvers array |
24 | 24 | case $1 in # edit subvers based on version type |
25 | 25 | "patch") subvers[2]=$((subvers[2] + 1)) ;; |
26 | 26 | "minor") subvers[1]=$((subvers[1] + 1)) ; subvers[2]=0 ;; |
27 | 27 | "major") subvers[0]=$((subvers[0] + 1)) ; subvers[1]=0 ; subvers[2]=0 ;; |
28 | 28 | esac |
29 | | -new_ver=$(printf "%s.%s.%s" "${subvers[@]}") |
| 29 | +NEW_VER=$(printf "%s.%s.%s" "${subvers[@]}") |
30 | 30 |
|
31 | 31 | # Bump version in package.json + package-lock.json |
32 | | -echo -e "${by}Bumping versions in package manifests...${bw}" |
33 | | -npm version --no-git-tag-version "$new_ver" |
| 32 | +echo -e "${BY}Bumping versions in package manifests...${BW}" |
| 33 | +npm version --no-git-tag-version "$NEW_VER" |
34 | 34 |
|
35 | 35 | # Bump versions in READMEs |
36 | | -echo -e "${by}\nBumping versions in READMEs...${bw}" |
| 36 | +echo -e "${BY}\nBumping versions in READMEs...${BW}" |
37 | 37 | sed -i \ |
38 | | - -e "s/\(chatgpt\(-\|\.js@\)\)[0-9]\+\(\.[0-9]\+\)\{2\}/\1$new_ver/g" `# jsDelivr URLs` \ |
39 | | - -e "s|v[0-9]\+\.[0-9]\+\.[0-9]\+|v$new_ver|g" `# Minified Size shield link/src + userguide links` \ |
| 38 | + -e "s/\(chatgpt\(-\|\.js@\)\)[0-9]\+\(\.[0-9]\+\)\{2\}/\1$NEW_VER/g" `# jsDelivr URLs` \ |
| 39 | + -e "s|v[0-9]\+\.[0-9]\+\.[0-9]\+|v$NEW_VER|g" `# Minified Size shield link/src + userguide links` \ |
40 | 40 | $(find docs -regex ".*/\(README\|USERGUIDE\)\.md") ./README.md |
41 | | -echo "v$new_ver" |
| 41 | +echo "v$NEW_VER" |
42 | 42 |
|
43 | 43 | # Bump chatgpt.js version in Greasemonkey starter |
44 | | -echo -e "${by}\nBumping versions in Greasemonkey starter...${bw}" |
45 | | -sed -i "s|\(chatgpt\.js@\)[0-9.]\+|\1$new_ver|g" starters/greasemonkey/*.user.js |
46 | | -echo "chatgpt.js v$new_ver" |
| 44 | +echo -e "${BY}\nBumping versions in Greasemonkey starter...${BW}" |
| 45 | +sed -i "s|\(chatgpt\.js@\)[0-9.]\+|\1$NEW_VER|g" starters/greasemonkey/*.user.js |
| 46 | +echo "chatgpt.js v$NEW_VER" |
47 | 47 |
|
48 | 48 | # Bump userscript version in Greasemonkey starter |
49 | | -today=$(date +'%Y.%-m.%-d') # YYYY.M.D format |
50 | | -if grep -q "@version\s*${today}$" starters/greasemonkey/*.user.js # exact match for $today |
51 | | - then # bump to $today.1 |
52 | | - sed -i "s|\(@version\s*\).*$|\1$today.1|" starters/greasemonkey/*.user.js |
53 | | -elif grep -q "@version\s*${today}" starters/greasemonkey/*.user.js # partial match for $today |
54 | | - then # bump to $today.n+1 |
55 | | - last_ver=$(sed -n "/@version\s*${today%.*}/{p;q}" starters/greasemonkey/*.user.js | grep -o '.$') |
56 | | - sed -i "s|\(@version\s*\).*$|\1$today.$((last_ver + 1))|" starters/greasemonkey/*.user.js |
57 | | -else # no match for $today |
58 | | - # bump to $today |
59 | | - sed -i "s|\(@version\s*\).*$|\1$today|" starters/greasemonkey/*.user.js ; fi |
| 49 | +TODAY=$(date +'%Y.%-m.%-d') # YYYY.M.D format |
| 50 | +if grep -q "@version\s*${TODAY}$" starters/greasemonkey/*.user.js # exact match for $TODAY |
| 51 | + then # bump to $TODAY.1 |
| 52 | + sed -i "s|\(@version\s*\).*$|\1$TODAY.1|" starters/greasemonkey/*.user.js |
| 53 | +elif grep -q "@version\s*${TODAY}" starters/greasemonkey/*.user.js # partial match for $TODAY |
| 54 | + then # bump to $TODAY.n+1 |
| 55 | + last_ver=$(sed -n "/@version\s*${TODAY%.*}/{p;q}" starters/greasemonkey/*.user.js | grep -o '.$') |
| 56 | + sed -i "s|\(@version\s*\).*$|\1$TODAY.$((last_ver + 1))|" starters/greasemonkey/*.user.js |
| 57 | +else # no match for $TODAY |
| 58 | + # bump to $TODAY |
| 59 | + sed -i "s|\(@version\s*\).*$|\1$TODAY|" starters/greasemonkey/*.user.js ; fi |
60 | 60 | new_gm_ver=$(sed -n "s/.*@version\s*\(.*\)/\1/p" starters/greasemonkey/*.user.js) |
61 | 61 | echo "chatgpt.js-greasemonkey-starter.user.js v$new_gm_ver" |
62 | 62 |
|
63 | 63 | # Commit bumps to Git |
64 | | -echo -e "${by}\nCommitting bumps to Git...\n${nc}" |
| 64 | +echo -e "${BY}\nCommitting bumps to Git...\n${NC}" |
65 | 65 | git add package*.json |
66 | | -git commit -n -m "Bumped versions in manifests to $new_ver" |
| 66 | +git commit -n -m "Bumped versions in manifests to $NEW_VER" |
67 | 67 | git add "README.md" "./**/README.md" "./**/USERGUIDE.md" |
68 | | -git commit -n -m "Bumped versions in jsDelivr URLs to $new_ver" |
| 68 | +git commit -n -m "Bumped versions in jsDelivr URLs to $NEW_VER" |
69 | 69 | git add ./*greasemonkey-starter.user.js |
70 | | -git commit -n -m "Bumped chatgpt.js to $new_ver" |
| 70 | +git commit -n -m "Bumped chatgpt.js to $NEW_VER" |
71 | 71 |
|
72 | 72 | # Build chatgpt.min.js to dist/ |
73 | | -echo -e "${by}\nBuilding chatgpt.min.js...\n${nc}" |
| 73 | +echo -e "${BY}\nBuilding chatgpt.min.js...\n${NC}" |
74 | 74 | bash utils/build.sh |
75 | 75 |
|
76 | 76 | # Update jsDelivr URLs for GitHub assets w/ commit hash |
77 | | -echo -e "${by}\nUpdating jsDelivr URLs for GitHub assets w/ commit hash...${nc}" |
78 | | -bump_hash=$(git rev-parse HEAD) |
| 77 | +echo -e "${BY}\nUpdating jsDelivr URLs for GitHub assets w/ commit hash...${NC}" |
| 78 | +BUMP_HASH=$(git rev-parse HEAD) |
79 | 79 | old_file=$(<dist/chatgpt.min.js) |
80 | | -sed -i -E "s|(cdn\.jsdelivr\.net\/gh\/[^/]+\/[^@/\"']+)[^/\"']*|\1@$bump_hash|g" dist/chatgpt.min.js |
| 80 | +sed -i -E "s|(cdn\.jsdelivr\.net\/gh\/[^/]+\/[^@/\"']+)[^/\"']*|\1@$BUMP_HASH|g" dist/chatgpt.min.js |
81 | 81 | new_file=$(<dist/chatgpt.min.js) |
82 | 82 | if [[ "$old_file" != "$new_file" ]] |
83 | | - then echo -e "${bw}$bump_hash${nc}" |
| 83 | + then echo -e "${BW}$BUMP_HASH${NC}" |
84 | 84 | else echo "No jsDelivr URLs for GH assets found in built files" |
85 | 85 | fi |
86 | 86 |
|
87 | 87 | # Commit build to Git |
88 | | -echo -e "${by}\nCommitting build to Git...\n${nc}" |
| 88 | +echo -e "${BY}\nCommitting build to Git...\n${NC}" |
89 | 89 | git add ./**/chatgpt.min.js |
90 | | -git commit -n -m "Built chatgpt.js $new_ver" |
| 90 | +git commit -n -m "Built chatgpt.js $NEW_VER" |
91 | 91 |
|
92 | 92 | # Push to GiHub |
93 | | -echo -e "${by}\nPushing to GitHub...\n${nc}" |
| 93 | +echo -e "${BY}\nPushing to GitHub...\n${NC}" |
94 | 94 | git pull && git push |
95 | 95 |
|
96 | 96 | # Publish to NPM |
97 | 97 | if [[ "$*" == *"--publish"* ]] ; then |
98 | | - echo -e "${by}\nPublishing to npm...\n${nc}" |
| 98 | + echo -e "${BY}\nPublishing to npm...\n${NC}" |
99 | 99 | npm publish ; fi |
100 | 100 |
|
101 | 101 | # Print final summary |
102 | | -echo -e "\n${bg}Successfully bumped to v$new_ver$( |
| 102 | +echo -e "\n${BG}Successfully bumped to v$NEW_VER$( |
103 | 103 | [[ "$*" == *"--publish"* ]] && echo ' and published to npm' || echo '' |
104 | | -)!${nc}" |
| 104 | +)!${NC}" |
0 commit comments