westminster-standards-cli 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- westminster_standards_cli-0.1.0/LICENSE +21 -0
- westminster_standards_cli-0.1.0/PKG-INFO +258 -0
- westminster_standards_cli-0.1.0/README.md +243 -0
- westminster_standards_cli-0.1.0/pyproject.toml +36 -0
- westminster_standards_cli-0.1.0/setup.cfg +4 -0
- westminster_standards_cli-0.1.0/src/westminster_cli/__init__.py +5 -0
- westminster_standards_cli-0.1.0/src/westminster_cli/__main__.py +5 -0
- westminster_standards_cli-0.1.0/src/westminster_cli/cli.py +658 -0
- westminster_standards_cli-0.1.0/src/westminster_cli/corpus.py +126 -0
- westminster_standards_cli-0.1.0/src/westminster_cli/data/__init__.py +1 -0
- westminster_standards_cli-0.1.0/src/westminster_cli/data/standards.json +20467 -0
- westminster_standards_cli-0.1.0/src/westminster_cli/formatting.py +353 -0
- westminster_standards_cli-0.1.0/src/westminster_standards_cli.egg-info/PKG-INFO +258 -0
- westminster_standards_cli-0.1.0/src/westminster_standards_cli.egg-info/SOURCES.txt +19 -0
- westminster_standards_cli-0.1.0/src/westminster_standards_cli.egg-info/dependency_links.txt +1 -0
- westminster_standards_cli-0.1.0/src/westminster_standards_cli.egg-info/entry_points.txt +4 -0
- westminster_standards_cli-0.1.0/src/westminster_standards_cli.egg-info/requires.txt +1 -0
- westminster_standards_cli-0.1.0/src/westminster_standards_cli.egg-info/top_level.txt +1 -0
- westminster_standards_cli-0.1.0/tests/test_cli.py +657 -0
- westminster_standards_cli-0.1.0/tests/test_corpus.py +163 -0
- westminster_standards_cli-0.1.0/tests/test_formatting.py +272 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Westminster Standards CLI contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: westminster-standards-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A command line reader, searcher, and quiz tool for the Westminster Standards.
|
|
5
|
+
Author: Westminster Standards CLI contributors
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/normanormata/westminster_cli
|
|
8
|
+
Project-URL: Repository, https://github.com/normanormata/westminster_cli
|
|
9
|
+
Project-URL: Issues, https://github.com/normanormata/westminster_cli/issues
|
|
10
|
+
Requires-Python: >=3.9
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
License-File: LICENSE
|
|
13
|
+
Requires-Dist: prompt_toolkit<4.0,>=3.0
|
|
14
|
+
Dynamic: license-file
|
|
15
|
+
|
|
16
|
+
# Westminster Standards CLI
|
|
17
|
+
|
|
18
|
+
A small command line tool for reading, searching, and quizzing yourself on the Westminster Standards.
|
|
19
|
+
|
|
20
|
+
The CLI ships with the Orthodox Presbyterian Church constitutional text for:
|
|
21
|
+
|
|
22
|
+
- Westminster Confession of Faith (`wcf`)
|
|
23
|
+
- Westminster Larger Catechism (`wlc`)
|
|
24
|
+
- Westminster Shorter Catechism (`wsc`)
|
|
25
|
+
|
|
26
|
+
The data is derived from the OPC pages linked from <https://opc.org/confessions.html>. The constitutional text is the default; the 2025 Modern English Study Version (MESV) is also bundled and available via `-m`/`--mesv` and `--compare`. Note the OPC preface: the MESV is a study aid and carries no constitutional authority.
|
|
27
|
+
|
|
28
|
+
The bundled corpus lives in `src/westminster_cli/data/standards.json`. The importer in `scripts/build_opc_corpus.py` can rebuild it from downloaded OPC HTML.
|
|
29
|
+
|
|
30
|
+
## Installation
|
|
31
|
+
|
|
32
|
+
You need Python 3.9+ and [uv](https://docs.astral.sh/uv/) installed.
|
|
33
|
+
|
|
34
|
+
Install `uv` if you do not already have it:
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
To try the CLI from a fresh clone:
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
git clone https://github.com/normanormata/westminster_cli.git
|
|
44
|
+
cd westminster_cli
|
|
45
|
+
uv run ws
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
That opens the interactive terminal session. You can also run one-shot commands
|
|
49
|
+
without installing globally:
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
uv run ws stats
|
|
53
|
+
uv run ws wcf 1
|
|
54
|
+
uv run ws wsc 1 --question
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
To install `ws` as a command you can run from anywhere:
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
uv tool install git+https://github.com/normanormata/westminster_cli.git
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Then run:
|
|
64
|
+
|
|
65
|
+
```sh
|
|
66
|
+
ws
|
|
67
|
+
ws stats
|
|
68
|
+
ws wcf 1
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
If you cloned the repo and want your local edits to take effect while you work
|
|
72
|
+
on the CLI, install it in editable mode from inside the project folder:
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
uv tool install -e .
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Run locally
|
|
79
|
+
|
|
80
|
+
```sh
|
|
81
|
+
uv run ws
|
|
82
|
+
uv run ws --help
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Running `ws` with no arguments opens an interactive terminal session. Inside it,
|
|
86
|
+
type `/` to see live slash-command suggestions, use arrow keys to select a
|
|
87
|
+
command template, run commands without the `ws` prefix, and type `exit` to quit.
|
|
88
|
+
Plain commands such as `wcf`, `search`, and `stats` also complete while typing.
|
|
89
|
+
Completion is context-aware: after a document id (`wsc `) it suggests references,
|
|
90
|
+
and after a reference it suggests `--question`/`--answer`. Command history persists
|
|
91
|
+
across sessions, and a bottom toolbar shows quick hints and corpus counts.
|
|
92
|
+
|
|
93
|
+
Use `quiz` for an interactive flashcard session: it shows a question, waits for
|
|
94
|
+
Enter to reveal the answer, records whether you got it, and prints a running score.
|
|
95
|
+
Type `s` to skip a card or `q` to stop early. Pass a document id and question
|
|
96
|
+
count to shape the session, e.g. `ws quiz wlc 20` (defaults: `wsc`, 10 questions).
|
|
97
|
+
|
|
98
|
+
Pass `-p`/`--proofs` to any reading command (`ws wsc 1 -p`, `ws wcf 1.1 -p`,
|
|
99
|
+
`ws wcf 1 -p`) to show the OPC scripture proof texts beneath the text,
|
|
100
|
+
lettered to match the printed edition. It combines with `-q`/`-a`, and `/p wsc 1`
|
|
101
|
+
works as a slash alias.
|
|
102
|
+
|
|
103
|
+
Pass `-m`/`--mesv` to read the 2025 Modern English Study Version instead
|
|
104
|
+
(`ws wsc 1 -m`, `ws wcf 1.1 -m`, `/m wsc 1`), or `--compare` to see the
|
|
105
|
+
constitutional and MESV texts together. `-m` combines with `-q`/`-a`
|
|
106
|
+
(modern question or answer only) and `-p`.
|
|
107
|
+
|
|
108
|
+
UV creates and syncs the project environment automatically from `pyproject.toml`
|
|
109
|
+
and `uv.lock`.
|
|
110
|
+
|
|
111
|
+
The repo also includes direct wrappers if you want to run without syncing a UV
|
|
112
|
+
environment:
|
|
113
|
+
|
|
114
|
+
```sh
|
|
115
|
+
./ws --help
|
|
116
|
+
./westminster --help
|
|
117
|
+
./wsc show wsc 1
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Commands
|
|
121
|
+
|
|
122
|
+
```sh
|
|
123
|
+
uv run ws list
|
|
124
|
+
uv run ws list wsc
|
|
125
|
+
uv run ws wsc 1
|
|
126
|
+
uv run ws wsc 1 --question
|
|
127
|
+
uv run ws wsc 1 --answer
|
|
128
|
+
uv run ws wsc 1 --proofs
|
|
129
|
+
uv run ws wsc 1 --mesv
|
|
130
|
+
uv run ws wsc 1 --compare
|
|
131
|
+
uv run ws wcf 1
|
|
132
|
+
uv run ws wcf 1.1
|
|
133
|
+
uv run ws wcf 1.1 -p
|
|
134
|
+
uv run ws wcf 1.1 -m
|
|
135
|
+
uv run ws search "chief end"
|
|
136
|
+
uv run ws quiz
|
|
137
|
+
uv run ws quiz wlc 20
|
|
138
|
+
uv run ws stats
|
|
139
|
+
uv run ws sources
|
|
140
|
+
uv run ws clear
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Slash command discovery and aliases:
|
|
144
|
+
|
|
145
|
+
```sh
|
|
146
|
+
uv run ws /
|
|
147
|
+
uv run ws /wcf 1
|
|
148
|
+
uv run ws /wsc 1 --question
|
|
149
|
+
uv run ws /q wsc 1
|
|
150
|
+
uv run ws /a wlc 1
|
|
151
|
+
uv run ws /p wsc 1
|
|
152
|
+
uv run ws /m wsc 1
|
|
153
|
+
uv run ws /stats
|
|
154
|
+
uv run ws /clear
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
The explicit `show` command still works:
|
|
158
|
+
|
|
159
|
+
```sh
|
|
160
|
+
uv run ws show wcf 1
|
|
161
|
+
uv run ws show wsc 1
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
The full command name still works:
|
|
165
|
+
|
|
166
|
+
```sh
|
|
167
|
+
uv run westminster stats
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
After installing the tool, both names are available:
|
|
171
|
+
|
|
172
|
+
```sh
|
|
173
|
+
ws stats
|
|
174
|
+
westminster stats
|
|
175
|
+
wsc show wsc 1
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Test
|
|
179
|
+
|
|
180
|
+
```sh
|
|
181
|
+
uv run python -m unittest discover -s tests
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Rebuild the OPC corpus
|
|
185
|
+
|
|
186
|
+
```sh
|
|
187
|
+
curl -L https://opc.org/wcf.html -o /tmp/opc-wcf.html
|
|
188
|
+
curl -L https://opc.org/lc.html -o /tmp/opc-lc.html
|
|
189
|
+
curl -L https://opc.org/sc.html -o /tmp/opc-sc.html
|
|
190
|
+
python3 scripts/build_opc_corpus.py /tmp/opc-wcf.html /tmp/opc-lc.html /tmp/opc-sc.html
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Rebuild the scripture proofs
|
|
194
|
+
|
|
195
|
+
The proof references come from the OPC "with Scripture proofs" PDFs linked from
|
|
196
|
+
<https://opc.org/confessions.html>. After rebuilding the corpus, re-merge them:
|
|
197
|
+
|
|
198
|
+
```sh
|
|
199
|
+
curl -L https://opc.org/documents/CFLayout.pdf -o /tmp/CFLayout.pdf
|
|
200
|
+
curl -L https://opc.org/documents/LCLayout.pdf -o /tmp/LCLayout.pdf
|
|
201
|
+
curl -L https://opc.org/documents/SCLayout.pdf -o /tmp/SCLayout.pdf
|
|
202
|
+
uv run python scripts/add_scripture_proofs.py /tmp/CFLayout.pdf /tmp/LCLayout.pdf /tmp/SCLayout.pdf
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
The script validates that every superscript proof marker in the body text pairs
|
|
206
|
+
with a lettered footnote and reports per-document counts before writing.
|
|
207
|
+
|
|
208
|
+
## Rebuild the MESV text
|
|
209
|
+
|
|
210
|
+
The 2025 Modern English Study Version comes from the OPC PDFs linked from
|
|
211
|
+
<https://opc.org/confessions.html>:
|
|
212
|
+
|
|
213
|
+
```sh
|
|
214
|
+
curl -L https://opc.org/documents/2025_Modern_English_Study_Version_of_The_Confession_of_Faith.pdf -o /tmp/mesv_cf.pdf
|
|
215
|
+
curl -L https://opc.org/documents/2025_Modern_English_Study_Version_of_The_Larger_Catechism.pdf -o /tmp/mesv_lc.pdf
|
|
216
|
+
curl -L https://opc.org/documents/2025_Modern_English_Study_Version_of_The_Shorter_Catechism.pdf -o /tmp/mesv_sc.pdf
|
|
217
|
+
uv run python scripts/add_mesv.py /tmp/mesv_cf.pdf /tmp/mesv_lc.pdf /tmp/mesv_sc.pdf
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
The script validates that the MESV refs exactly match the constitutional
|
|
221
|
+
corpus (33 chapters / 171 sections, 196 and 107 questions) before writing.
|
|
222
|
+
|
|
223
|
+
## Data format
|
|
224
|
+
|
|
225
|
+
Each document has an id, title, short name, and entries:
|
|
226
|
+
|
|
227
|
+
```json
|
|
228
|
+
{
|
|
229
|
+
"id": "wsc",
|
|
230
|
+
"title": "Westminster Shorter Catechism",
|
|
231
|
+
"short_title": "Shorter Catechism",
|
|
232
|
+
"source": "Orthodox Presbyterian Church constitutional text",
|
|
233
|
+
"source_url": "https://opc.org/sc.html",
|
|
234
|
+
"entries": [
|
|
235
|
+
{
|
|
236
|
+
"ref": "1",
|
|
237
|
+
"kind": "qa",
|
|
238
|
+
"question": "What is the chief end of man?",
|
|
239
|
+
"answer": "Man's chief end is to glorify God, and to enjoy him forever."
|
|
240
|
+
}
|
|
241
|
+
]
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
For confession paragraphs, use `kind: "section"` with `heading` and `text`.
|
|
246
|
+
|
|
247
|
+
Entries may also carry an optional `proofs` list of scripture proof references,
|
|
248
|
+
each with the OPC footnote `letter` and its `references`:
|
|
249
|
+
|
|
250
|
+
```json
|
|
251
|
+
"proofs": [
|
|
252
|
+
{ "letter": "a", "references": ["Ps. 86:9", "Rom. 11:36"] }
|
|
253
|
+
]
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Entries may also carry the 2025 MESV text in parallel fields:
|
|
257
|
+
`question_mesv`/`answer_mesv` for catechism entries, and
|
|
258
|
+
`text_mesv`/`heading_mesv` for confession sections.
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
# Westminster Standards CLI
|
|
2
|
+
|
|
3
|
+
A small command line tool for reading, searching, and quizzing yourself on the Westminster Standards.
|
|
4
|
+
|
|
5
|
+
The CLI ships with the Orthodox Presbyterian Church constitutional text for:
|
|
6
|
+
|
|
7
|
+
- Westminster Confession of Faith (`wcf`)
|
|
8
|
+
- Westminster Larger Catechism (`wlc`)
|
|
9
|
+
- Westminster Shorter Catechism (`wsc`)
|
|
10
|
+
|
|
11
|
+
The data is derived from the OPC pages linked from <https://opc.org/confessions.html>. The constitutional text is the default; the 2025 Modern English Study Version (MESV) is also bundled and available via `-m`/`--mesv` and `--compare`. Note the OPC preface: the MESV is a study aid and carries no constitutional authority.
|
|
12
|
+
|
|
13
|
+
The bundled corpus lives in `src/westminster_cli/data/standards.json`. The importer in `scripts/build_opc_corpus.py` can rebuild it from downloaded OPC HTML.
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
You need Python 3.9+ and [uv](https://docs.astral.sh/uv/) installed.
|
|
18
|
+
|
|
19
|
+
Install `uv` if you do not already have it:
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
To try the CLI from a fresh clone:
|
|
26
|
+
|
|
27
|
+
```sh
|
|
28
|
+
git clone https://github.com/normanormata/westminster_cli.git
|
|
29
|
+
cd westminster_cli
|
|
30
|
+
uv run ws
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
That opens the interactive terminal session. You can also run one-shot commands
|
|
34
|
+
without installing globally:
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
uv run ws stats
|
|
38
|
+
uv run ws wcf 1
|
|
39
|
+
uv run ws wsc 1 --question
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
To install `ws` as a command you can run from anywhere:
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
uv tool install git+https://github.com/normanormata/westminster_cli.git
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Then run:
|
|
49
|
+
|
|
50
|
+
```sh
|
|
51
|
+
ws
|
|
52
|
+
ws stats
|
|
53
|
+
ws wcf 1
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
If you cloned the repo and want your local edits to take effect while you work
|
|
57
|
+
on the CLI, install it in editable mode from inside the project folder:
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
uv tool install -e .
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Run locally
|
|
64
|
+
|
|
65
|
+
```sh
|
|
66
|
+
uv run ws
|
|
67
|
+
uv run ws --help
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Running `ws` with no arguments opens an interactive terminal session. Inside it,
|
|
71
|
+
type `/` to see live slash-command suggestions, use arrow keys to select a
|
|
72
|
+
command template, run commands without the `ws` prefix, and type `exit` to quit.
|
|
73
|
+
Plain commands such as `wcf`, `search`, and `stats` also complete while typing.
|
|
74
|
+
Completion is context-aware: after a document id (`wsc `) it suggests references,
|
|
75
|
+
and after a reference it suggests `--question`/`--answer`. Command history persists
|
|
76
|
+
across sessions, and a bottom toolbar shows quick hints and corpus counts.
|
|
77
|
+
|
|
78
|
+
Use `quiz` for an interactive flashcard session: it shows a question, waits for
|
|
79
|
+
Enter to reveal the answer, records whether you got it, and prints a running score.
|
|
80
|
+
Type `s` to skip a card or `q` to stop early. Pass a document id and question
|
|
81
|
+
count to shape the session, e.g. `ws quiz wlc 20` (defaults: `wsc`, 10 questions).
|
|
82
|
+
|
|
83
|
+
Pass `-p`/`--proofs` to any reading command (`ws wsc 1 -p`, `ws wcf 1.1 -p`,
|
|
84
|
+
`ws wcf 1 -p`) to show the OPC scripture proof texts beneath the text,
|
|
85
|
+
lettered to match the printed edition. It combines with `-q`/`-a`, and `/p wsc 1`
|
|
86
|
+
works as a slash alias.
|
|
87
|
+
|
|
88
|
+
Pass `-m`/`--mesv` to read the 2025 Modern English Study Version instead
|
|
89
|
+
(`ws wsc 1 -m`, `ws wcf 1.1 -m`, `/m wsc 1`), or `--compare` to see the
|
|
90
|
+
constitutional and MESV texts together. `-m` combines with `-q`/`-a`
|
|
91
|
+
(modern question or answer only) and `-p`.
|
|
92
|
+
|
|
93
|
+
UV creates and syncs the project environment automatically from `pyproject.toml`
|
|
94
|
+
and `uv.lock`.
|
|
95
|
+
|
|
96
|
+
The repo also includes direct wrappers if you want to run without syncing a UV
|
|
97
|
+
environment:
|
|
98
|
+
|
|
99
|
+
```sh
|
|
100
|
+
./ws --help
|
|
101
|
+
./westminster --help
|
|
102
|
+
./wsc show wsc 1
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Commands
|
|
106
|
+
|
|
107
|
+
```sh
|
|
108
|
+
uv run ws list
|
|
109
|
+
uv run ws list wsc
|
|
110
|
+
uv run ws wsc 1
|
|
111
|
+
uv run ws wsc 1 --question
|
|
112
|
+
uv run ws wsc 1 --answer
|
|
113
|
+
uv run ws wsc 1 --proofs
|
|
114
|
+
uv run ws wsc 1 --mesv
|
|
115
|
+
uv run ws wsc 1 --compare
|
|
116
|
+
uv run ws wcf 1
|
|
117
|
+
uv run ws wcf 1.1
|
|
118
|
+
uv run ws wcf 1.1 -p
|
|
119
|
+
uv run ws wcf 1.1 -m
|
|
120
|
+
uv run ws search "chief end"
|
|
121
|
+
uv run ws quiz
|
|
122
|
+
uv run ws quiz wlc 20
|
|
123
|
+
uv run ws stats
|
|
124
|
+
uv run ws sources
|
|
125
|
+
uv run ws clear
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Slash command discovery and aliases:
|
|
129
|
+
|
|
130
|
+
```sh
|
|
131
|
+
uv run ws /
|
|
132
|
+
uv run ws /wcf 1
|
|
133
|
+
uv run ws /wsc 1 --question
|
|
134
|
+
uv run ws /q wsc 1
|
|
135
|
+
uv run ws /a wlc 1
|
|
136
|
+
uv run ws /p wsc 1
|
|
137
|
+
uv run ws /m wsc 1
|
|
138
|
+
uv run ws /stats
|
|
139
|
+
uv run ws /clear
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
The explicit `show` command still works:
|
|
143
|
+
|
|
144
|
+
```sh
|
|
145
|
+
uv run ws show wcf 1
|
|
146
|
+
uv run ws show wsc 1
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
The full command name still works:
|
|
150
|
+
|
|
151
|
+
```sh
|
|
152
|
+
uv run westminster stats
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
After installing the tool, both names are available:
|
|
156
|
+
|
|
157
|
+
```sh
|
|
158
|
+
ws stats
|
|
159
|
+
westminster stats
|
|
160
|
+
wsc show wsc 1
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Test
|
|
164
|
+
|
|
165
|
+
```sh
|
|
166
|
+
uv run python -m unittest discover -s tests
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Rebuild the OPC corpus
|
|
170
|
+
|
|
171
|
+
```sh
|
|
172
|
+
curl -L https://opc.org/wcf.html -o /tmp/opc-wcf.html
|
|
173
|
+
curl -L https://opc.org/lc.html -o /tmp/opc-lc.html
|
|
174
|
+
curl -L https://opc.org/sc.html -o /tmp/opc-sc.html
|
|
175
|
+
python3 scripts/build_opc_corpus.py /tmp/opc-wcf.html /tmp/opc-lc.html /tmp/opc-sc.html
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Rebuild the scripture proofs
|
|
179
|
+
|
|
180
|
+
The proof references come from the OPC "with Scripture proofs" PDFs linked from
|
|
181
|
+
<https://opc.org/confessions.html>. After rebuilding the corpus, re-merge them:
|
|
182
|
+
|
|
183
|
+
```sh
|
|
184
|
+
curl -L https://opc.org/documents/CFLayout.pdf -o /tmp/CFLayout.pdf
|
|
185
|
+
curl -L https://opc.org/documents/LCLayout.pdf -o /tmp/LCLayout.pdf
|
|
186
|
+
curl -L https://opc.org/documents/SCLayout.pdf -o /tmp/SCLayout.pdf
|
|
187
|
+
uv run python scripts/add_scripture_proofs.py /tmp/CFLayout.pdf /tmp/LCLayout.pdf /tmp/SCLayout.pdf
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
The script validates that every superscript proof marker in the body text pairs
|
|
191
|
+
with a lettered footnote and reports per-document counts before writing.
|
|
192
|
+
|
|
193
|
+
## Rebuild the MESV text
|
|
194
|
+
|
|
195
|
+
The 2025 Modern English Study Version comes from the OPC PDFs linked from
|
|
196
|
+
<https://opc.org/confessions.html>:
|
|
197
|
+
|
|
198
|
+
```sh
|
|
199
|
+
curl -L https://opc.org/documents/2025_Modern_English_Study_Version_of_The_Confession_of_Faith.pdf -o /tmp/mesv_cf.pdf
|
|
200
|
+
curl -L https://opc.org/documents/2025_Modern_English_Study_Version_of_The_Larger_Catechism.pdf -o /tmp/mesv_lc.pdf
|
|
201
|
+
curl -L https://opc.org/documents/2025_Modern_English_Study_Version_of_The_Shorter_Catechism.pdf -o /tmp/mesv_sc.pdf
|
|
202
|
+
uv run python scripts/add_mesv.py /tmp/mesv_cf.pdf /tmp/mesv_lc.pdf /tmp/mesv_sc.pdf
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
The script validates that the MESV refs exactly match the constitutional
|
|
206
|
+
corpus (33 chapters / 171 sections, 196 and 107 questions) before writing.
|
|
207
|
+
|
|
208
|
+
## Data format
|
|
209
|
+
|
|
210
|
+
Each document has an id, title, short name, and entries:
|
|
211
|
+
|
|
212
|
+
```json
|
|
213
|
+
{
|
|
214
|
+
"id": "wsc",
|
|
215
|
+
"title": "Westminster Shorter Catechism",
|
|
216
|
+
"short_title": "Shorter Catechism",
|
|
217
|
+
"source": "Orthodox Presbyterian Church constitutional text",
|
|
218
|
+
"source_url": "https://opc.org/sc.html",
|
|
219
|
+
"entries": [
|
|
220
|
+
{
|
|
221
|
+
"ref": "1",
|
|
222
|
+
"kind": "qa",
|
|
223
|
+
"question": "What is the chief end of man?",
|
|
224
|
+
"answer": "Man's chief end is to glorify God, and to enjoy him forever."
|
|
225
|
+
}
|
|
226
|
+
]
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
For confession paragraphs, use `kind: "section"` with `heading` and `text`.
|
|
231
|
+
|
|
232
|
+
Entries may also carry an optional `proofs` list of scripture proof references,
|
|
233
|
+
each with the OPC footnote `letter` and its `references`:
|
|
234
|
+
|
|
235
|
+
```json
|
|
236
|
+
"proofs": [
|
|
237
|
+
{ "letter": "a", "references": ["Ps. 86:9", "Rom. 11:36"] }
|
|
238
|
+
]
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Entries may also carry the 2025 MESV text in parallel fields:
|
|
242
|
+
`question_mesv`/`answer_mesv` for catechism entries, and
|
|
243
|
+
`text_mesv`/`heading_mesv` for confession sections.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "westminster-standards-cli"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "A command line reader, searcher, and quiz tool for the Westminster Standards."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.9"
|
|
11
|
+
authors = [{ name = "Westminster Standards CLI contributors" }]
|
|
12
|
+
license = "MIT"
|
|
13
|
+
license-files = ["LICENSE"]
|
|
14
|
+
dependencies = ["prompt_toolkit>=3.0,<4.0"]
|
|
15
|
+
|
|
16
|
+
[project.urls]
|
|
17
|
+
Homepage = "https://github.com/normanormata/westminster_cli"
|
|
18
|
+
Repository = "https://github.com/normanormata/westminster_cli"
|
|
19
|
+
Issues = "https://github.com/normanormata/westminster_cli/issues"
|
|
20
|
+
|
|
21
|
+
[project.scripts]
|
|
22
|
+
westminster = "westminster_cli.cli:main"
|
|
23
|
+
ws = "westminster_cli.cli:main"
|
|
24
|
+
wsc = "westminster_cli.cli:main"
|
|
25
|
+
|
|
26
|
+
[tool.setuptools.packages.find]
|
|
27
|
+
where = ["src"]
|
|
28
|
+
|
|
29
|
+
[tool.setuptools.package-data]
|
|
30
|
+
westminster_cli = ["data/*.json"]
|
|
31
|
+
|
|
32
|
+
[dependency-groups]
|
|
33
|
+
dev = [
|
|
34
|
+
"pymupdf>=1.26.5",
|
|
35
|
+
"pytest>=8.4.2",
|
|
36
|
+
]
|