dekshell 0.2.49__py3-none-any.whl → 0.2.51__py3-none-any.whl

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.
@@ -30,12 +30,11 @@ from dektools.ps.process import process_print_all, process_print_detail, process
30
30
  from dektools.time import now
31
31
  from dektools.str import shlex_split, shlex_quote, str_split, split_table_line
32
32
  from dektools.format import format_duration
33
- from dektools.shell import shell_wrapper, is_user_admin, shell_timeout, shell_retry
33
+ from dektools.shell import shell_wrapper, is_user_admin, shell_timeout, shell_retry, shell_command
34
34
  from dektools.match import GeneralMatcher, glob2re, glob_compile, glob_match
35
35
  from dektools.cmd.git import git_parse_modules, git_clean_dir, git_fetch_min, git_remove_tag, git_latest_tag, \
36
36
  git_list_remotes, git_apply, git_head
37
37
  from ...utils.beep import sound_notify
38
- from ...utils.cmd import pack_context_full
39
38
  from ..markers.base.core import MarkerBase, get_inner_vars
40
39
  from ..markers.invoke import InvokeMarker, GotoMarker, ImportMarker
41
40
  from ..redirect import search_bin_by_path_tree
@@ -268,6 +267,7 @@ default_methods = {
268
267
  'timeout': shell_timeout,
269
268
  'retry': shell_retry,
270
269
  'run': shell_wrapper,
270
+ 'cmd': shell_command,
271
271
  'env': {
272
272
  None: lambda k, v: _env_update({k: v}),
273
273
  'update': _env_update,
@@ -52,6 +52,6 @@ def generate_markers(*args, **kwargs):
52
52
  AssignCommandRcSilenceMarker, AssignCommandRcMarker, AssignCommandOutputMarker,
53
53
  AssignDecodeMarker, AssignEncodeMarker,
54
54
  AssignEnvMarker, AssignEnvFullMarker, AssignCmdcallMarker, AssignCmdcallChainMarker,
55
- AssignMultiLineRawStrMarker, AssignMultiLineStrMarker, AssignRawStrMarker, AssignStrMarker,
55
+ AssignMultiLineRawStrMarker, AssignMultiLineStrMarker, AssignRawStrMarker, AssignStrMarker, AssignUnpackMarker,
56
56
  EmptyMarker, # must be at the tail
57
57
  ]
@@ -1,5 +1,5 @@
1
1
  import re
2
- from .base import MarkerNoTranslator, MarkerWithEnd
2
+ from .base import MarkerBase, MarkerNoTranslator, MarkerWithEnd
3
3
 
4
4
 
5
5
  class MarkerCommentBase(MarkerNoTranslator):
@@ -40,3 +40,7 @@ class TextContentMarker(MarkerCommentBase):
40
40
 
41
41
  def text_content(self, command):
42
42
  return command[len(self.tag_head):]
43
+
44
+
45
+ class IgnoreMarker(MarkerBase):
46
+ tag_head = ':'
@@ -9,15 +9,19 @@ from .invoke import MarkerInvokerBase, InvokeMarker, GotoMarker, ImportMarker
9
9
  class MarkerAssignBase(MarkerBase):
10
10
  tag_head_re = r"[^\W\d]\w*[ \t\f\r]*%s"
11
11
 
12
-
13
- class MarkerAssignValueBase(MarkerAssignBase):
14
- def execute(self, context, command, marker_node, marker_set):
12
+ def get_vr(self, command):
15
13
  command = command.lstrip()
16
14
  index = re.match(self.tag_head_re % '', command).span()[1]
17
15
  var_name = command[:index].rstrip()
18
16
  rest = command[index:]
19
17
  index = re.match(self.tag_head_re_args, rest).span()[1]
20
- return self.assign_value(context, marker_node, marker_set, var_name, rest[index:].strip())
18
+ return var_name, rest[index:].strip()
19
+
20
+
21
+ class MarkerAssignValueBase(MarkerAssignBase):
22
+ def execute(self, context, command, marker_node, marker_set):
23
+ var_name, rest = self.get_vr(command)
24
+ return self.assign_value(context, marker_node, marker_set, var_name, rest)
21
25
 
22
26
  def assign_value(self, context, marker_node, marker_set, var_name, expression):
23
27
  self.set_var_raw(context, var_name, self.get_value(context, marker_node, marker_set, expression))
@@ -26,8 +30,31 @@ class MarkerAssignValueBase(MarkerAssignBase):
26
30
  pass
27
31
 
28
32
 
29
- class IgnoreMarker(MarkerBase):
30
- tag_head = ':'
33
+ class AssignUnpackMarker(MarkerAssignBase):
34
+ tag_head_re_args = ','
35
+
36
+ def execute(self, context, command, marker_node, marker_set):
37
+ var_names = []
38
+ cursor = command
39
+ while True:
40
+ var_name, rest = self.get_vr(cursor)
41
+ var_names.append(var_name)
42
+ marker = marker_set.find_marker_by_command(rest)
43
+ if isinstance(marker, MarkerAssignBase):
44
+ if not isinstance(marker, AssignUnpackMarker):
45
+ var_name_final = marker.get_vr(rest)[0]
46
+ var_names.append(var_name_final)
47
+ node = marker_set.node_cls(marker, rest, marker_node.index)
48
+ marker.execute(context, rest, node, marker_set)
49
+ value = self.eval(context, var_name_final)
50
+ if len(var_names) != len(value):
51
+ raise ValueError(f'Wrong values to unpack (expected {len(var_names)}, got {len(value)})')
52
+ for i, name in enumerate(var_names):
53
+ self.set_var_raw(context, name, value[i])
54
+ break
55
+ cursor = rest
56
+ else:
57
+ raise ValueError('Need a assignable expression')
31
58
 
32
59
 
33
60
  class AssignStrMarker(MarkerAssignValueBase):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dekshell
3
- Version: 0.2.49
3
+ Version: 0.2.51
4
4
  Author-Email: sanzenwin <sanzenwin@gmail.com>
5
5
  License: MIT
6
6
  Requires-Python: >=3.8
@@ -1,19 +1,19 @@
1
- dekshell-0.2.49.dist-info/METADATA,sha256=B57a2ZJyDlUu9H5Bd3LO7oy-NnrPQawYhl7uNBznU8A,573
2
- dekshell-0.2.49.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
- dekshell-0.2.49.dist-info/entry_points.txt,sha256=d-kbfULiUTZWIBBsrQF3J_-wESncF-4K2rwHT08grlI,75
1
+ dekshell-0.2.51.dist-info/METADATA,sha256=lt0cL9hdu0uQfg3bUBJk1kMvx9P4Adp2W6Jty2Qw1dY,573
2
+ dekshell-0.2.51.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
+ dekshell-0.2.51.dist-info/entry_points.txt,sha256=d-kbfULiUTZWIBBsrQF3J_-wESncF-4K2rwHT08grlI,75
4
4
  dekshell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  dekshell/click/__entry__.py,sha256=CMuxUzXoEe4TcHFZwv-MNFwHnu1HSZCDpXFpqQ814uM,42
6
6
  dekshell/click/__init__.py,sha256=r-AHdO9CEEVvTN20-8Jozr6Zh8XSv_BnktYRwrlhtrE,2046
7
7
  dekshell/core/__init__.py,sha256=isDEKwk1odLdvTQNCILCtVNBuXp1uFVPz_uTDNihkVU,5547
8
8
  dekshell/core/contexts/__init__.py,sha256=ynsfv37azOKfI2UKd0iPl2M6iBW-k5cb1BqSLOWuJpI,482
9
- dekshell/core/contexts/methods.py,sha256=t95CU8pjivYq5DtyjH__V7SH3HVj9iSJVI0Oy-esoUQ,11897
9
+ dekshell/core/contexts/methods.py,sha256=tv8wKK114zQlXiJrU9eS0NHyvh6qDbY_Bx0GCVklexM,11899
10
10
  dekshell/core/contexts/properties.py,sha256=TQonN3T_K2cB2uakq_DVVB13B-IFwoM6t2ZkL_OMekw,3365
11
- dekshell/core/markers/__init__.py,sha256=mK6OiZMWmUTrkAL0Bc1XqRTSb-NNhBgpHb7GLivLAlk,2235
11
+ dekshell/core/markers/__init__.py,sha256=1oq4wlBOJV56hsshPe0ZZZMvoItCV2Xs2RN08HTrbiY,2255
12
12
  dekshell/core/markers/base/__init__.py,sha256=0LYnOVNXPBHfRQII00ZGkESTFX82TgHdSaTcHJoebXc,18051
13
13
  dekshell/core/markers/base/core.py,sha256=5TYAg7JWX58669RBUOMgJxCUMuOARPDL7GENNtNAYls,12558
14
14
  dekshell/core/markers/base/shell.py,sha256=fiFsTUDI8pSDDUCk834OI4ajri2qNWFJkLVhmUk2uAs,484
15
15
  dekshell/core/markers/commands.py,sha256=mDRj4dSfKbDaZ_ts4lPXd6wftvGFI4VKkRoIzxV7otA,1696
16
- dekshell/core/markers/comment.py,sha256=U1U3Xc4-giTqSEAPa4E_DmilZM9hs9zG-PCJ9nn4y5U,965
16
+ dekshell/core/markers/comment.py,sha256=rBzxcyvTv7qgy5jc0NWT4pi5M7xEf9Wwa2mv96kJ0gc,1030
17
17
  dekshell/core/markers/define.py,sha256=Xlw_YPOWlmbopVIHhIeAKWSZhHhXmqb3gCbXxvuH4BQ,522
18
18
  dekshell/core/markers/echo.py,sha256=1H61qQbY9tZnrKsdTI_shTmDY5ZaSGipDuBSRptAuZw,660
19
19
  dekshell/core/markers/empty.py,sha256=pWKsHlrp6uXWU6blqOs0IgN_3kYm1OmDQiKGPERabAo,79
@@ -27,7 +27,7 @@ dekshell/core/markers/invoke.py,sha256=ESL2DE9DTaq33AnrXpvEudp1qtoeZFKOhLL12OQpc
27
27
  dekshell/core/markers/pip_.py,sha256=mxXa_oqcrk4Qz-HvhlkMoirsl-SbM9Fz610leNqP1o0,832
28
28
  dekshell/core/markers/redirect.py,sha256=cpTQaXFAuSwprsrhUNP0xTGDmu06HGNQVcwKsETEjas,1981
29
29
  dekshell/core/markers/shell.py,sha256=43BDAAzMdmgZmemkW5buh_w4LL1GDGw-s9fNZo6vhag,1929
30
- dekshell/core/markers/var.py,sha256=I1GQqDRDmWKV38Exfn_5MtRDz58FKo_6x8NIVHqPAPU,6901
30
+ dekshell/core/markers/var.py,sha256=yA2T8dq4vbfyeaV1KOUt3YZp51WTC623NviMAJTOdOQ,8182
31
31
  dekshell/core/markers/while_.py,sha256=Q0SaElyXSrxg-wS_rfCcxMsmw9jf-0SgN1ICn860T4A,1201
32
32
  dekshell/core/plugin/__init__.py,sha256=jAB_KnnHJsyJR_zIfBU_HNLngyhcyyqVv05PdlNZtF8,428
33
33
  dekshell/core/redirect.py,sha256=jgLdcPtc4RKs63Lf2I0LXJRr9jRfNu03aDB_tIWvcrU,1117
@@ -37,4 +37,4 @@ dekshell/utils/cmd.py,sha256=K9FbXgHcGFchHA58xI0_t4YK4yb8XkWbxsNoztYRx3Y,518
37
37
  dekshell/utils/pkg.py,sha256=TgYqRqawoJfjkxt6UAHnp9ttmpjuHiWRFbqxADOS1VE,1337
38
38
  dekshell/utils/serializer.py,sha256=aIdF2Wzo-qHmIshv46jn1XD0X66vQ1JFdU-g3ZFbH2w,386
39
39
  dekshell/utils/shell.py,sha256=0NoA2-SOOMinbmZZipwzL-npBbzPOdWEfdPVYqq5G5g,92
40
- dekshell-0.2.49.dist-info/RECORD,,
40
+ dekshell-0.2.51.dist-info/RECORD,,