omdev 0.0.0.dev206__py3-none-any.whl → 0.0.0.dev208__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
omdev/cc/cli.py CHANGED
@@ -16,24 +16,50 @@ Freestanding options:
16
16
  ==
17
17
 
18
18
  TODO:
19
- - standard deps - cdeps.toml
20
19
  - cext interop
21
20
  - gen cmake
22
21
  """
22
+ import dataclasses as dc
23
23
  import os
24
24
  import shlex
25
25
  import shutil
26
26
  import subprocess
27
27
  import tempfile
28
+ import tomllib
28
29
  import typing as ta
29
30
 
31
+ from omlish import cached
30
32
  from omlish import check
33
+ from omlish import lang
34
+ from omlish import marshal as msh
31
35
  from omlish.argparse import all as ap
36
+ from omlish.formats import json
32
37
 
33
38
  from .. import magic
34
39
  from ..cache import data as dcache
35
40
 
36
41
 
42
+ @dc.dataclass(frozen=True)
43
+ class Cdep:
44
+ @dc.dataclass(frozen=True)
45
+ class Git:
46
+ url: str
47
+ rev: str
48
+
49
+ subtrees: ta.Sequence[str] | None = None
50
+
51
+ git: Git
52
+
53
+ include: ta.Sequence[str] | None = None
54
+
55
+
56
+ @cached.function
57
+ def load_cdeps() -> ta.Mapping[str, Cdep]:
58
+ src = lang.get_relative_resources(globals=globals())['cdeps.toml'].read_text()
59
+ dct = tomllib.loads(src)
60
+ return msh.unmarshal(dct.get('deps', {}), ta.Mapping[str, Cdep]) # type: ignore
61
+
62
+
37
63
  class Cli(ap.Cli):
38
64
  @ap.cmd(
39
65
  ap.arg('--cwd'),
@@ -60,14 +86,18 @@ class Cli(ap.Cli):
60
86
  for src_magic in src_magics:
61
87
  if src_magic.key == '@omlish-cdeps':
62
88
  for dep in check.isinstance(src_magic.prepared, ta.Sequence):
63
- dep_git = dep['git']
89
+ if isinstance(dep, ta.Mapping):
90
+ dep = msh.unmarshal(dep, Cdep) # type: ignore
91
+ else:
92
+ dep = load_cdeps()[check.isinstance(dep, str)]
93
+
64
94
  dep_spec = dcache.GitSpec(
65
- url=dep_git['url'],
66
- rev=dep_git['rev'],
67
- subtrees=dep_git.get('subtrees'),
95
+ url=dep.git.url,
96
+ rev=dep.git.rev,
97
+ subtrees=dep.git.subtrees,
68
98
  )
69
99
  dep_dir = dcache.default().get(dep_spec)
70
- for dep_inc in dep.get('include', []):
100
+ for dep_inc in dep.include or []:
71
101
  inc_dir = os.path.join(dep_dir, dep_inc)
72
102
  check.state(os.path.isdir(inc_dir))
73
103
  include_dirs.append(inc_dir)
@@ -134,6 +164,13 @@ class Cli(ap.Cli):
134
164
  # # //$(which true); exec om cc run "$0" "$@"
135
165
  # print(self.args.src_file)
136
166
 
167
+ #
168
+
169
+ @ap.cmd()
170
+ def list_deps(self) -> None:
171
+ cdeps = load_cdeps()
172
+ print(json.dumps_pretty(msh.marshal(cdeps)))
173
+
137
174
 
138
175
  def _main() -> None:
139
176
  Cli().cli_run_and_exit()
@@ -55,7 +55,7 @@ class Formats(enum.Enum):
55
55
 
56
56
  PY = Format(['py', 'python', 'repr'], lambda f: ast.literal_eval(f.read()))
57
57
 
58
- XML = Format(['xml'], lambda f: xml.build_simple_element(xml.parse_tree(f.read()).getroot()).as_dict())
58
+ XML = Format(['xml'], lambda f: xml.build_simple_element(xml.parse_tree(f.read()).getroot()).se_dict())
59
59
 
60
60
  CSV = Format(['csv'], lambda f: list(csv.DictReader(f)))
61
61
  TSV = Format(['tsv'], lambda f: list(csv.DictReader(f, delimiter='\t')))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: omdev
3
- Version: 0.0.0.dev206
3
+ Version: 0.0.0.dev208
4
4
  Summary: omdev
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -12,7 +12,7 @@ Classifier: Operating System :: OS Independent
12
12
  Classifier: Operating System :: POSIX
13
13
  Requires-Python: >=3.12
14
14
  License-File: LICENSE
15
- Requires-Dist: omlish==0.0.0.dev206
15
+ Requires-Dist: omlish==0.0.0.dev208
16
16
  Provides-Extra: all
17
17
  Requires-Dist: black~=24.10; extra == "all"
18
18
  Requires-Dist: pycparser~=2.22; extra == "all"
@@ -44,7 +44,7 @@ omdev/cache/data/manifests.py,sha256=4BparztsMZo9DDVVPhv6iv5g4kK7QAi8Vqtj3PbKkco
44
44
  omdev/cache/data/specs.py,sha256=8o0b7goqvnezB_lD46w4ySp2KMZ8In3nqbtmfUT7v6c,2504
45
45
  omdev/cc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
46
  omdev/cc/__main__.py,sha256=n7gxSRYZ1QZOUxQPCT0_n9Xl26zi2UIvCwyGW_m67nA,166
47
- omdev/cc/cli.py,sha256=rrqu-NnSFlofWBw3qKiWMqFwefC5z1o207nH1_6OAu0,3584
47
+ omdev/cc/cli.py,sha256=k8WhcFS2GS5GUR6JkGIG9wN86KOoPN9mGtX01cpuEAA,4498
48
48
  omdev/cexts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  omdev/cexts/_boilerplate.cc,sha256=sbpXEgdFrkdzZXgaNWFFNN27fL9TZu6VrwvMY4-nnFM,1726
50
50
  omdev/cexts/build.py,sha256=F3z1-CjDlEM-Gzi5IunKUBO52qdH_pMsFylobTdGJnI,2654
@@ -178,7 +178,7 @@ omdev/tools/sqlrepl.py,sha256=wAjrfXNrRV63-NJCC2HlGQnFh7lUH0bHMnOjYotQqFs,5753
178
178
  omdev/tools/json/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
179
  omdev/tools/json/__main__.py,sha256=wqpkN_NsQyNwKW4qjVj8ADJ4_C98KhrFBtE-Z1UamfU,168
180
180
  omdev/tools/json/cli.py,sha256=EubIMT-n2XsjWBZjSy2fWXqijlwrIhLsfbkg3SZzi28,9586
181
- omdev/tools/json/formats.py,sha256=XHabWAQnAQ9uNS7fHu3mdgxoptWw00RVLq08uadD6kk,1753
181
+ omdev/tools/json/formats.py,sha256=S8O0-A2_b_kXUevBme4KlSG0V5Nl-WXp8emRub1zMmA,1753
182
182
  omdev/tools/json/io.py,sha256=sfj2hJS9Hy3aUR8a_lLzOrYcmL9fSKyvOHiofdUASsI,1427
183
183
  omdev/tools/json/parsing.py,sha256=YOeTRY6Gd89EfcHvqXO5PRWJ3IgRCpNnI54Lb_N3v2k,2183
184
184
  omdev/tools/json/processing.py,sha256=iFm5VqaxJ97WHaun2ed7NEjMxhFeJqf28bLNfoDJft0,1209
@@ -186,9 +186,9 @@ omdev/tools/json/rendering.py,sha256=tMcjOW5edfozcMSTxxvF7WVTsbYLoe9bCKFh50qyaGw
186
186
  omdev/tools/pawk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
187
187
  omdev/tools/pawk/__main__.py,sha256=VCqeRVnqT1RPEoIrqHFSu4PXVMg4YEgF4qCQm90-eRI,66
188
188
  omdev/tools/pawk/pawk.py,sha256=Eckymn22GfychCQcQi96BFqRo_LmiJ-EPhC8TTUJdB4,11446
189
- omdev-0.0.0.dev206.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
190
- omdev-0.0.0.dev206.dist-info/METADATA,sha256=GCfofnkHpmbLZxobRuLjC3PYfiG0tkzZTjJTm8idSU8,1760
191
- omdev-0.0.0.dev206.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
192
- omdev-0.0.0.dev206.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
193
- omdev-0.0.0.dev206.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
194
- omdev-0.0.0.dev206.dist-info/RECORD,,
189
+ omdev-0.0.0.dev208.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
190
+ omdev-0.0.0.dev208.dist-info/METADATA,sha256=hK5sVtOi7IbLSbSc174QSzrgc9mdIwrymwHF7luLJmw,1760
191
+ omdev-0.0.0.dev208.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
192
+ omdev-0.0.0.dev208.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
193
+ omdev-0.0.0.dev208.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
194
+ omdev-0.0.0.dev208.dist-info/RECORD,,