omdev 0.0.0.dev206__py3-none-any.whl → 0.0.0.dev207__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()
@@ -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.dev207
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.dev207
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
@@ -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.dev207.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
190
+ omdev-0.0.0.dev207.dist-info/METADATA,sha256=1I_J2r3JxvcDNlH3hpUc45jZhdNWUuDG6x00ONFhvEA,1760
191
+ omdev-0.0.0.dev207.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
192
+ omdev-0.0.0.dev207.dist-info/entry_points.txt,sha256=dHLXFmq5D9B8qUyhRtFqTGWGxlbx3t5ejedjrnXNYLU,33
193
+ omdev-0.0.0.dev207.dist-info/top_level.txt,sha256=1nr7j30fEWgLYHW3lGR9pkdHkb7knv1U1ES1XRNVQ6k,6
194
+ omdev-0.0.0.dev207.dist-info/RECORD,,