@dforge-core/dforge-mcp 0.2.45 → 0.2.46-next
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.
- package/CHANGELOG.md +12 -0
- package/README.md +2 -1
- package/package.json +48 -46
- package/scripts/install-skills.mjs +1 -0
- package/skills/dforge-1c-import/SKILL.md +374 -0
- package/skills/dforge-1c-import/references/environment.md +97 -0
- package/skills/dforge-1c-import/references/loading.md +161 -0
- package/skills/dforge-1c-import/references/measurements.md +210 -0
- package/skills/dforge-1c-import/references/print-forms.md +148 -0
- package/skills/dforge-1c-import/scripts/1c.py +178 -0
- package/skills/dforge-1c-import/scripts/README.md +110 -0
- package/skills/dforge-1c-import/scripts/lib/analyze.py +83 -0
- package/skills/dforge-1c-import/scripts/lib/attrs.py +278 -0
- package/skills/dforge-1c-import/scripts/lib/autospec.py +964 -0
- package/skills/dforge-1c-import/scripts/lib/binding.py +257 -0
- package/skills/dforge-1c-import/scripts/lib/bsl.py +811 -0
- package/skills/dforge-1c-import/scripts/lib/callgraph.py +717 -0
- package/skills/dforge-1c-import/scripts/lib/cli.py +53 -0
- package/skills/dforge-1c-import/scripts/lib/columnmap.py +346 -0
- package/skills/dforge-1c-import/scripts/lib/coverage.py +242 -0
- package/skills/dforge-1c-import/scripts/lib/custom.py +83 -0
- package/skills/dforge-1c-import/scripts/lib/delta.py +741 -0
- package/skills/dforge-1c-import/scripts/lib/deps.py +136 -0
- package/skills/dforge-1c-import/scripts/lib/docusage.py +105 -0
- package/skills/dforge-1c-import/scripts/lib/dump1c.py +251 -0
- package/skills/dforge-1c-import/scripts/lib/explore.py +55 -0
- package/skills/dforge-1c-import/scripts/lib/external.py +201 -0
- package/skills/dforge-1c-import/scripts/lib/extract_code.py +251 -0
- package/skills/dforge-1c-import/scripts/lib/forms.py +239 -0
- package/skills/dforge-1c-import/scripts/lib/genmodule.py +1432 -0
- package/skills/dforge-1c-import/scripts/lib/handlers.py +202 -0
- package/skills/dforge-1c-import/scripts/lib/handmap.py +142 -0
- package/skills/dforge-1c-import/scripts/lib/i18n_coverage.py +87 -0
- package/skills/dforge-1c-import/scripts/lib/idioms.py +273 -0
- package/skills/dforge-1c-import/scripts/lib/integrity.py +264 -0
- package/skills/dforge-1c-import/scripts/lib/inventory.py +535 -0
- package/skills/dforge-1c-import/scripts/lib/layers.py +106 -0
- package/skills/dforge-1c-import/scripts/lib/meta.py +315 -0
- package/skills/dforge-1c-import/scripts/lib/migrate.py +1299 -0
- package/skills/dforge-1c-import/scripts/lib/mxl.py +368 -0
- package/skills/dforge-1c-import/scripts/lib/naming.py +251 -0
- package/skills/dforge-1c-import/scripts/lib/paths.py +90 -0
- package/skills/dforge-1c-import/scripts/lib/peek.py +70 -0
- package/skills/dforge-1c-import/scripts/lib/posted.py +218 -0
- package/skills/dforge-1c-import/scripts/lib/posting.py +655 -0
- package/skills/dforge-1c-import/scripts/lib/printgen.py +239 -0
- package/skills/dforge-1c-import/scripts/lib/rebuild.py +194 -0
- package/skills/dforge-1c-import/scripts/lib/recorded.py +170 -0
- package/skills/dforge-1c-import/scripts/lib/recorders.py +94 -0
- package/skills/dforge-1c-import/scripts/lib/reftargets.py +95 -0
- package/skills/dforge-1c-import/scripts/lib/reportgen.py +157 -0
- package/skills/dforge-1c-import/scripts/lib/roles.py +33 -0
- package/skills/dforge-1c-import/scripts/lib/seedstate.py +488 -0
- package/skills/dforge-1c-import/scripts/lib/sizing.py +184 -0
- package/skills/dforge-1c-import/scripts/lib/spec.py +400 -0
- package/skills/dforge-1c-import/scripts/lib/statements.py +774 -0
- package/skills/dforge-1c-import/scripts/lib/subsystems.py +480 -0
- package/skills/dforge-1c-import/scripts/lib/terms.py +451 -0
- package/skills/dforge-1c-import/scripts/lib/terms_uk.py +555 -0
- package/skills/dforge-1c-import/scripts/lib/totals.py +387 -0
- package/skills/dforge-1c-import/scripts/lib/typemap.py +73 -0
- package/skills/dforge-1c-import/scripts/lib/unpack.py +136 -0
- package/skills/dforge-1c-import/scripts/lib/validate.py +508 -0
- package/skills/dforge-1c-import/scripts/project-template/contours.py +47 -0
- package/skills/dforge-1c-import/scripts/project-template/sources.py +14 -0
- package/skills/dforge-mcp-author/SKILL.md +5 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
Separate the client's own development from the stock UTP configuration.
|
|
5
|
+
|
|
6
|
+
Stock 1C objects are CamelCase starting with a capital; this integrator prefixes
|
|
7
|
+
everything it added with a lowercase tag. Whatever carries a tag *and* holds data
|
|
8
|
+
is the real porting scope - the rest is vendor code we are not copying anyway.
|
|
9
|
+
"""
|
|
10
|
+
from __future__ import print_function
|
|
11
|
+
|
|
12
|
+
import codecs
|
|
13
|
+
import collections
|
|
14
|
+
import json
|
|
15
|
+
import os
|
|
16
|
+
import re
|
|
17
|
+
import sys
|
|
18
|
+
|
|
19
|
+
import paths
|
|
20
|
+
|
|
21
|
+
OUT = paths.OUT
|
|
22
|
+
LOWER_PREFIX = re.compile(r"^([a-zа-яёіїє]{2,6})(?=[A-ZА-Я])")
|
|
23
|
+
FAMILIES = ("Reference", "Document", "InfoRg", "AccumRg", "Enum", "Chrc", "Acc", "AccRg")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def load(name):
|
|
27
|
+
with codecs.open(os.path.join(OUT, name), "r", "utf-8") as f:
|
|
28
|
+
return json.load(f)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def has_data(row):
|
|
32
|
+
return bool((row["rows"] or 0) or row["childRows"])
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def main():
|
|
36
|
+
rows = load("report.json")
|
|
37
|
+
|
|
38
|
+
prefixes = collections.Counter()
|
|
39
|
+
for row in rows:
|
|
40
|
+
m = LOWER_PREFIX.match(row["name"] or "")
|
|
41
|
+
if m:
|
|
42
|
+
prefixes[m.group(1)] += 1
|
|
43
|
+
print("integrator prefixes found:")
|
|
44
|
+
for tag, n in prefixes.most_common(10):
|
|
45
|
+
print(" %-8s %d objects" % (tag, n))
|
|
46
|
+
|
|
47
|
+
tags = [t for t, n in prefixes.most_common() if n >= 3]
|
|
48
|
+
is_custom = lambda row: bool(LOWER_PREFIX.match(row["name"] or "")
|
|
49
|
+
and LOWER_PREFIX.match(row["name"]).group(1) in tags)
|
|
50
|
+
|
|
51
|
+
print("\n%-14s %7s %7s %11s %11s" % ("family", "total", "custom", "custom+data", "stock+data"))
|
|
52
|
+
print("-" * 56)
|
|
53
|
+
scope = []
|
|
54
|
+
for family in FAMILIES:
|
|
55
|
+
members = [r for r in rows if r["family"] == family]
|
|
56
|
+
if not members:
|
|
57
|
+
continue
|
|
58
|
+
custom = [r for r in members if is_custom(r)]
|
|
59
|
+
custom_used = [r for r in custom if has_data(r)]
|
|
60
|
+
stock_used = [r for r in members if has_data(r) and not is_custom(r)]
|
|
61
|
+
scope.extend(custom_used)
|
|
62
|
+
print("%-14s %7d %7d %11d %11d"
|
|
63
|
+
% (family, len(members), len(custom), len(custom_used), len(stock_used)))
|
|
64
|
+
|
|
65
|
+
scope.sort(key=lambda r: -((r["rows"] or 0) + r["childRows"]))
|
|
66
|
+
with codecs.open(os.path.join(OUT, "scope.md"), "w", "utf-8") as f:
|
|
67
|
+
f.write("# Client-specific objects that hold data\n\n")
|
|
68
|
+
f.write("| family | name | synonym | table | rows | child rows | cols |\n")
|
|
69
|
+
f.write("|---|---|---|---|---:|---:|---:|\n")
|
|
70
|
+
for r in scope:
|
|
71
|
+
f.write("| %s | %s | %s | %s | %s | %s | %s |\n"
|
|
72
|
+
% (r["family"], r["name"], r["synonym"] or "", r["physical"],
|
|
73
|
+
"{:,}".format(r["rows"] or 0), "{:,}".format(r["childRows"]), r["columns"]))
|
|
74
|
+
print("\ncustom objects with data: %d -> out/scope.md" % len(scope))
|
|
75
|
+
|
|
76
|
+
top = int(sys.argv[1]) if len(sys.argv) > 1 else 20
|
|
77
|
+
print()
|
|
78
|
+
for r in scope[:top]:
|
|
79
|
+
print(" %-10s %-42s %s" % (r["family"], r["name"], r["synonym"] or ""))
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
if __name__ == "__main__":
|
|
83
|
+
main()
|