Skip to content

Commit 39b50f4

Browse files
committed
Add release and setup scripts
1 parent 5734081 commit 39b50f4

File tree

8 files changed

+214
-2
lines changed

8 files changed

+214
-2
lines changed

.gitattributes

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
*.bat eol=crlf
2+
*.cmd eol=crlf
3+
*.sfx -text
14
.gitattributes export-ignore
25
.gitignore export-ignore
3-
README.md export-ignore
4-
*.bat eol=crlf
6+
.gitmodules export-ignore
7+
/release/ export-ignore

release/.gitignore

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/tmp
2+
/*.7z
3+
/*.exe
4+
/*.pdf
5+
/*.tgz
6+
/*_original.sfx

release/archive.sh

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
#!/bin/sh
2+
# To use this, below things needs to be done first.
3+
# * Install Ruby
4+
# * Install asciidoctor-pdf with `gem install asciidoctor-pdf'
5+
# * Install fonts used in theme file
6+
# * Install 7-zip, or jai, to its default location
7+
# * Install Git 2.36.0 or any later version
8+
# * Install jg 2.10.0 or any later version
9+
set -o nounset
10+
11+
archive_cleanup () {
12+
cd "$scriptdir" || exit
13+
rm -rf tmp/
14+
}
15+
16+
archive () {
17+
local fname
18+
local exe7z
19+
local exe_from_7zip="C:/Program Files/7-Zip/7z.exe"
20+
local exe_from_jai="C:/Users/$USERNAME/AppData/Local/Programs/jai/7za.exe"
21+
local description toplevel
22+
if test -x "$exe_from_7zip"
23+
then
24+
exe7z=$exe_from_7zip
25+
elif test -x "$exe_from_jai"
26+
then
27+
exe7z=$exe_from_jai
28+
else
29+
>&2 printf "error: no 7-Zip excutable available\n"
30+
return 1
31+
fi
32+
printf "using %s\n" "$exe7z"
33+
rm -rf tmp/ || return
34+
mkdir tmp || return
35+
trap archive_cleanup INT TERM
36+
toplevel=$(git rev-parse --show-toplevel) || return
37+
description=$(git describe --always HEAD) || return
38+
description=${description#v}
39+
dirname=$(basename -- "$toplevel") || return
40+
fname="$dirname-$description"
41+
mkdir "tmp/$fname" || return
42+
(
43+
cd "$toplevel" || return
44+
jg ls-files \
45+
| grep -v '\(^\|/\).git\w\+$' \
46+
| grep -v '^release/' \
47+
| tr '\n' '\0' \
48+
| xargs -0 cp --parents -r -t "$scriptdir/tmp/$fname" \
49+
|| return
50+
) || return
51+
(
52+
set +o noglob
53+
cd "tmp/$fname" || return
54+
(
55+
cd .. || return
56+
tar -zcf "../$fname.tgz" "$fname" || return
57+
"$exe7z" a -mx9 "../$fname.7z" "$fname" || return
58+
) || return
59+
"$exe7z" a -mx9 "$name.7z" * || return
60+
cp "../../$name.sfx" . || return
61+
cmd //c "copy /b $name.sfx + $name.7z $(cygpath -w "../../$(basename $PWD).exe")" || return
62+
) || return
63+
}
64+
65+
print_adoc () {
66+
ls ../*.adoc 1>/dev/null 2>&1 || return 0
67+
asciidoctor-pdf -a scripts=cjk \
68+
-a pdf-theme=cjk-theme.yml \
69+
-a pdf-fontsdir=$LOCALAPPDATA\\Microsoft\\Windows\\fonts,$WINDIR\\fonts \
70+
../*.adoc \
71+
-D .
72+
}
73+
74+
main () {
75+
local scriptdir name
76+
scriptdir=$(cd "$(dirname "$0")" && PWD) || exit
77+
name=$(basename -- "$(cd "$(git rev-parse --show-toplevel)" && PWD)") || exit
78+
cd "$scriptdir" || exit
79+
archive
80+
print_adoc
81+
archive_cleanup
82+
}
83+
84+
main "$@"

release/cjk-theme.yml

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
extends: default
2+
font:
3+
catalog:
4+
merge: true
5+
Noto Sans SC:
6+
normal: NotoSansSC-Regular.ttf
7+
bold: NotoSansSC-Bold.ttf
8+
italic: NotoSansSC-Bold.ttf
9+
base:
10+
text_align: left
11+
font_family: Noto Sans SC
12+
font_size: 12
13+
line_height_length: 18
14+
line_height: $base_line_height_length / 12
15+
heading:
16+
margin_top: $vertical_rhythm * 2
17+
margin_bottom: $vertical_rhythm
18+
admonition:
19+
font_color: 707070
20+
role:
21+
address:
22+
text_align: right
23+
font_size: 10.5
24+
line_height_length: 10.5

release/jg.sfx

34 KB
Binary file not shown.

setup.bat

+89
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
@echo off
2+
setlocal
3+
pushd "%~dp0setup.d" || exit /b
4+
call info.cmd || exit /b
5+
set silent=
6+
set uninstall=
7+
set _exit=
8+
set ec=0
9+
title %_gpss_name% setup
10+
11+
:parseargs
12+
if %1. == . (goto endparseargs)
13+
if /i "%~1" == "--silent" (
14+
set silent=1
15+
shift /1
16+
goto parseargs
17+
)
18+
if /i "%~1" == "--uninstall" (
19+
set uninstall=1
20+
shift /1
21+
goto parseargs
22+
)
23+
if "%~1" == "/?" (goto help)
24+
if "%~1" == "-?" (goto help)
25+
if /i "%~1" == "--help" (goto help)
26+
>&2 echo error: invalid argument `%~1'
27+
set ec=1
28+
goto end
29+
:endparseargs
30+
31+
if defined uninstall (goto uninstall)
32+
if not defined silent (if exist "%_gpss_path_dir%\%_gpss_exec%" (goto installed))
33+
34+
:install
35+
if exist install.pre.cmd (call install.pre.cmd)
36+
call:installfiles || ((set ec=%errorlevel%) & (goto end))
37+
if not defined _gpss_noreg (call register.cmd || ((set ec=%errorlevel%) & goto end))
38+
if exist install.post.cmd (call install.post.cmd)
39+
if exist install.takeover.cmd ((call install.takeover.cmd) & (exit /b))
40+
if not defined silent (echo Install complete.)
41+
goto end
42+
43+
:uninstall
44+
if exist uninstall.pre.cmd (call uninstall.pre.cmd)
45+
call:uninstallfiles || ((set ec=%errorlevel%) & (goto end))
46+
if not defined _gpss_noreg (call unregister.cmd || ((set ec=%errorlevel%) & goto end))
47+
if exist uninstall.post.cmd (call uninstall.post.cmd)
48+
if exist uninstall.takeover.cmd ((call uninstall.takeover.cmd) & (exit /b))
49+
if not defined silent (echo Uninstall complete.)
50+
goto end
51+
52+
:installed
53+
choice /c oiuq /n /m "%_gpss_name% was already installed; would you like to: (O)verwrite, (I)nstall again cleanly, (U)ninstall, or (Q)uit?"
54+
if %ERRORLEVEL% EQU 0 ((set _exit=1) & (goto end))
55+
if %ERRORLEVEL% EQU 1 (goto install)
56+
if %ERRORLEVEL% EQU 2 (call "%~dpnx0" --silent --uninstall & goto install)
57+
if %ERRORLEVEL% EQU 3 (goto uninstall)
58+
if %ERRORLEVEL% EQU 4 ((set _exit=1) & (goto end))
59+
goto end
60+
61+
:installfiles
62+
if not exist f.manifest ((>&2 echo error: unable to find file `f.manifest') & (exit /b 1))
63+
if not exist "%_gpss_target_dir%" (mkdir "%_gpss_target_dir%" || ((set ec=%errorlevel%) & (goto end)))
64+
if exist d.manifest (for /f "delims=" %%a in (d.manifest) do (if not exist "%_gpss_target_dir%\%%~a" (mkdir "%_gpss_target_dir%\%%~a" || exit /b)))
65+
for /f "delims=" %%a in (f.manifest) do (copy /b /y "..\%%~a" "%_gpss_target_dir%\%%~a" 1>nul)
66+
exit /b 0
67+
68+
:uninstallfiles
69+
if not exist f.manifest ((>&2 echo error: unable to find file `f.manifest') & (exit /b 1))
70+
for /f "delims=" %%a in (f.manifest) do (del "%_gpss_target_dir%\%%~a" 2>nul)
71+
if exist d.manifest (for /f "delims=" %%a in (d.manifest) do (rmdir "%_gpss_target_dir%\%%~a" 2>nul))
72+
if not exist "%_gpss_target_dir%" (rmdir "%_gpss_target_dir%" 2>nul)
73+
exit /b 0
74+
75+
:help
76+
echo usage: setup
77+
echo or: setup --silent
78+
echo or: setup --uninstall
79+
goto end
80+
81+
:pause
82+
if defined silent (exit /b 0)
83+
echo Press any key to exit.
84+
pause >nul
85+
exit /b 0
86+
87+
:end
88+
if not defined _exit (call:pause)
89+
exit /b %ec%

setup.d/f.manifest

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
jg

setup.d/info.cmd

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
set _gpss_name=jg
2+
set _gpss_exec=jg
3+
set _gpss_target_dir=%USERPROFILE%\bin
4+
set _gpss_path_dir=%_gpss_target_dir%
5+
set _gpss_noreg=1

0 commit comments

Comments
 (0)