terp-cli 0.1.0__tar.gz → 0.2.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.
- terp_cli-0.2.0/PKG-INFO +16 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/pyproject.toml +8 -8
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/__init__.py +6 -6
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/scaffold.py +3 -3
- terp_cli-0.1.0/PKG-INFO +0 -16
- {terp_cli-0.1.0 → terp_cli-0.2.0}/.gitignore +0 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/_appref.py +0 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/access.py +0 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/apidocs.py +0 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/dev.py +0 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/docker.py +0 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/jobs.py +0 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/openapi.py +0 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/profiles.py +0 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/py.typed +0 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/schema.py +0 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/seed.py +0 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/users.py +0 -0
- {terp_cli-0.1.0 → terp_cli-0.2.0}/src/terp/cli/verify.py +0 -0
terp_cli-0.2.0/PKG-INFO
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: terp-cli
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Terp command-line tool — inspect, scaffolding, migrations, checks, api-docs.
|
|
5
|
+
License-Expression: Apache-2.0
|
|
6
|
+
Requires-Python: >=3.13
|
|
7
|
+
Requires-Dist: terp-arch==0.2.0
|
|
8
|
+
Requires-Dist: terp-core==0.2.0
|
|
9
|
+
Requires-Dist: terp-migrations==0.2.0
|
|
10
|
+
Provides-Extra: jobs
|
|
11
|
+
Requires-Dist: terp-cap-outbox==0.2.0; extra == 'jobs'
|
|
12
|
+
Requires-Dist: terp-cap-scheduler-apscheduler==0.2.0; extra == 'jobs'
|
|
13
|
+
Provides-Extra: scheduler
|
|
14
|
+
Requires-Dist: terp-cap-scheduler-apscheduler==0.2.0; extra == 'scheduler'
|
|
15
|
+
Provides-Extra: worker
|
|
16
|
+
Requires-Dist: terp-cap-outbox==0.2.0; extra == 'worker'
|
|
@@ -4,29 +4,29 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "terp-cli"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.2.0"
|
|
8
8
|
description = "Terp command-line tool — inspect, scaffolding, migrations, checks, api-docs."
|
|
9
9
|
requires-python = ">=3.13"
|
|
10
10
|
license = "Apache-2.0"
|
|
11
11
|
dependencies = [
|
|
12
|
-
"terp-core==0.
|
|
12
|
+
"terp-core==0.2.0",
|
|
13
13
|
# `terp migrate` delegates to terp-migrations (lazily imported), keeping Alembic
|
|
14
14
|
# off the path for `terp inspect` / `terp guide` while making migrations work.
|
|
15
|
-
"terp-migrations==0.
|
|
15
|
+
"terp-migrations==0.2.0",
|
|
16
16
|
# `terp guide rules` projects the live rule registry; terp-arch is imported lazily
|
|
17
17
|
# (only when that topic is rendered), so it stays off the common `terp guide` path.
|
|
18
|
-
"terp-arch==0.
|
|
18
|
+
"terp-arch==0.2.0",
|
|
19
19
|
]
|
|
20
20
|
|
|
21
21
|
# Job-process adapters stay optional: the base CLI must not install the table-owning outbox
|
|
22
22
|
# or a scheduler engine into apps that only use inspect/check/migrate. Deployments can select
|
|
23
23
|
# one process role, while `jobs` is the convenient complete jobs-process bundle.
|
|
24
24
|
[project.optional-dependencies]
|
|
25
|
-
worker = ["terp-cap-outbox==0.
|
|
26
|
-
scheduler = ["terp-cap-scheduler-apscheduler==0.
|
|
25
|
+
worker = ["terp-cap-outbox==0.2.0"]
|
|
26
|
+
scheduler = ["terp-cap-scheduler-apscheduler==0.2.0"]
|
|
27
27
|
jobs = [
|
|
28
|
-
"terp-cap-outbox==0.
|
|
29
|
-
"terp-cap-scheduler-apscheduler==0.
|
|
28
|
+
"terp-cap-outbox==0.2.0",
|
|
29
|
+
"terp-cap-scheduler-apscheduler==0.2.0",
|
|
30
30
|
]
|
|
31
31
|
|
|
32
32
|
[project.scripts]
|
|
@@ -409,13 +409,13 @@ Database migrations (terp migrate)
|
|
|
409
409
|
upgrade(db_url, app_root); assert_migrations_match_models(db_url, app_root)
|
|
410
410
|
""",
|
|
411
411
|
"frontend": """\
|
|
412
|
-
Frontend module screens (@
|
|
412
|
+
Frontend module screens (@terpjs/react-core)
|
|
413
413
|
|
|
414
414
|
- A module's frontend slot is frontend/src/modules/<name>/ with a module.tsx manifest;
|
|
415
|
-
everything composes the token-styled @
|
|
416
|
-
per-export "Use" guidance) is the @
|
|
415
|
+
everything composes the token-styled @terpjs/react-core surface. The full catalog (with
|
|
416
|
+
per-export "Use" guidance) is the @terpjs/react-core README; each export also carries
|
|
417
417
|
JSDoc, so your editor shows the same guidance inline.
|
|
418
|
-
- The boundary lint (@
|
|
418
|
+
- The boundary lint (@terpjs/eslint-boundaries) refuses, fail-closed:
|
|
419
419
|
raw <button>/<input>/<select>/<textarea> -> Button / Input / Select / Textarea
|
|
420
420
|
raw <table> -> DataView (terp guide dataview)
|
|
421
421
|
raw <dialog> -> ConfirmDialog
|
|
@@ -424,11 +424,11 @@ Frontend module screens (@terp/react-core)
|
|
|
424
424
|
WebSocket / EventSource / sendBeacon -> the generated client (one egress path)
|
|
425
425
|
style={} / className / module stylesheets -> layout via Stack/DetailList; design tokens
|
|
426
426
|
<a href="/..."> -> the router's Link (role-aware, no reload)
|
|
427
|
-
deep imports (@
|
|
427
|
+
deep imports (@terpjs/*/src, @terpjs/*/dist) -> import from the package root only
|
|
428
428
|
- Frontend security defaults (each its own lint rule, same error-only footing):
|
|
429
429
|
dangerouslySetInnerHTML and DOM HTML-injection sinks (innerHTML/outerHTML/
|
|
430
430
|
insertAdjacentHTML/document.write) are refused — render text, or Markdown from
|
|
431
|
-
@
|
|
431
|
+
@terpjs/react-core for rich text; eval() / new Function() are refused; javascript:
|
|
432
432
|
URLs in href/src are refused; a static target="_blank" link needs rel="noopener".
|
|
433
433
|
- Every routed view renders a page archetype (Page / OverviewPage / DetailPage / HubPage);
|
|
434
434
|
buildAppRouter refuses an unframed view at runtime, fail closed. An app can ratchet
|
|
@@ -208,7 +208,7 @@ def _files(name: str, package: str, profile: ModuleProfile) -> dict[str, str]:
|
|
|
208
208
|
|
|
209
209
|
|
|
210
210
|
_MODULE_TSX = """\
|
|
211
|
-
import { defineModuleManifest } from "@
|
|
211
|
+
import { defineModuleManifest } from "@terpjs/contract";
|
|
212
212
|
|
|
213
213
|
import { __PASCAL__List } from "./__PASCAL__List";
|
|
214
214
|
|
|
@@ -229,7 +229,7 @@ _VIEW_TSX = """\
|
|
|
229
229
|
//
|
|
230
230
|
// uv run terp openapi && npm --prefix frontend run generate // -> src/api/schema.d.ts
|
|
231
231
|
//
|
|
232
|
-
// import { useResource, useTerpClient } from "@
|
|
232
|
+
// import { useResource, useTerpClient } from "@terpjs/react-core";
|
|
233
233
|
// import type { paths, components } from "../../api/schema";
|
|
234
234
|
// type __PASCAL__ = components["schemas"]["__PASCAL__Read"];
|
|
235
235
|
// const client = useTerpClient<paths>();
|
|
@@ -239,7 +239,7 @@ _VIEW_TSX = """\
|
|
|
239
239
|
// });
|
|
240
240
|
// // ...then pass createPlaceholder="New __NAME__" to <ResourceList> so writers can add rows.
|
|
241
241
|
//
|
|
242
|
-
import { OverviewPage, ResourceList, useResource } from "@
|
|
242
|
+
import { OverviewPage, ResourceList, useResource } from "@terpjs/react-core";
|
|
243
243
|
|
|
244
244
|
export function __PASCAL__List() {
|
|
245
245
|
// Placeholder until you wire the typed client above: an empty, read-only list (compiles pre-codegen).
|
terp_cli-0.1.0/PKG-INFO
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: terp-cli
|
|
3
|
-
Version: 0.1.0
|
|
4
|
-
Summary: Terp command-line tool — inspect, scaffolding, migrations, checks, api-docs.
|
|
5
|
-
License-Expression: Apache-2.0
|
|
6
|
-
Requires-Python: >=3.13
|
|
7
|
-
Requires-Dist: terp-arch==0.1.0
|
|
8
|
-
Requires-Dist: terp-core==0.1.0
|
|
9
|
-
Requires-Dist: terp-migrations==0.1.0
|
|
10
|
-
Provides-Extra: jobs
|
|
11
|
-
Requires-Dist: terp-cap-outbox==0.1.0; extra == 'jobs'
|
|
12
|
-
Requires-Dist: terp-cap-scheduler-apscheduler==0.1.0; extra == 'jobs'
|
|
13
|
-
Provides-Extra: scheduler
|
|
14
|
-
Requires-Dist: terp-cap-scheduler-apscheduler==0.1.0; extra == 'scheduler'
|
|
15
|
-
Provides-Extra: worker
|
|
16
|
-
Requires-Dist: terp-cap-outbox==0.1.0; extra == 'worker'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|