dekshell 0.2.44__py3-none-any.whl → 0.2.45__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.
@@ -26,9 +26,9 @@ def generate_markers(*args, **kwargs):
26
26
  ErrorEchoMarker, EchoNoWrapMarker, EchoMarker,
27
27
  InputMarker, InputOnceMarker,
28
28
  DelVarMarker,
29
- ExecLinesUpdateMarker, ExecLinesMarker, ExecTranslatorMarker, ExecMarker, ExecCmdcallSimpleLinesMarker,
30
- ExecCmdcallLinesMarker,
31
- ExecCmdcallMarker, ExecCmdcallChainMarker,
29
+ ExecLinesUpdateMarker, ExecLinesTranslatorMarker, ExecLinesMarker, ExecTranslatorMarker, ExecMarker,
30
+ ExecCommandOutputChainMarker,
31
+ ExecCmdcallSimpleLinesMarker, ExecCmdcallLinesMarker, ExecCmdcallMarker, ExecCmdcallChainMarker,
32
32
  EnvShellMarker, EnvMarker,
33
33
  IfMarker, IfElifMarker, IfElseMarker,
34
34
  WhileMarker, WhileElseMarker,
@@ -440,13 +440,28 @@ class TransformerMarker(MarkerBase):
440
440
  class MarkerWithEnd(MarkerBase):
441
441
  tag_tail = EndMarker
442
442
 
443
- def get_inner_content(self, context, marker_node, sep='\n', translate=None):
443
+ def get_inner_content(self, context, marker_node, sep='\n', translate=None, code=False):
444
444
  def walk(node, depth):
445
445
  if depth != 0:
446
446
  commands.append(self.translate_case(context, node.text_content, translate))
447
447
 
448
448
  commands = []
449
449
  marker_node.walk(walk)
450
+ if code:
451
+ if commands:
452
+ c = commands[0]
453
+ cc = c.lstrip()
454
+ tabs = c[:len(c) - len(cc)]
455
+ result = []
456
+ for index, line in enumerate(commands):
457
+ if not line.startswith(tabs) and line.lstrip():
458
+ raise ValueError(
459
+ f'Code indent error:\n'
460
+ f'lineno=>{marker_node.line_number + index + 1}\n'
461
+ f'translated-line=>{line}'
462
+ )
463
+ result.append(line[len(tabs):])
464
+ commands = result
450
465
  return sep.join(commands)
451
466
 
452
467
  def eval_codes(self, context, code):
@@ -223,8 +223,8 @@ class MarkerNode:
223
223
  raise
224
224
  except Exception as e:
225
225
  sys.stderr.write(f"Execute error {node.marker}:\n\
226
- command=> {node.command if node.command_old is None else node.command_old}\n\
227
- line=> {node.line_number}\n\
226
+ command=>{node.command if node.command_old is None else node.command_old}\n\
227
+ lineno=>{node.line_number}\n\
228
228
  context=>\n\
229
229
  {context}")
230
230
  raise e from None
@@ -25,7 +25,16 @@ class ExecLinesMarker(MarkerWithEnd, MarkerNoTranslator):
25
25
  tag_head = cmd_call_eval_prefix * 2
26
26
 
27
27
  def execute(self, context, command, marker_node, marker_set):
28
- code = self.get_inner_content(context, marker_node, translate=False)
28
+ code = self.get_inner_content(context, marker_node, translate=False, code=True)
29
+ self.eval_lines(context, code)
30
+ return []
31
+
32
+
33
+ class ExecLinesTranslatorMarker(MarkerWithEnd):
34
+ tag_head = cmd_call_eval_prefix + cmd_call_eval_trans_prefix
35
+
36
+ def execute(self, context, command, marker_node, marker_set):
37
+ code = self.get_inner_content(context, marker_node, translate=True, code=True)
29
38
  self.eval_lines(context, code)
30
39
  return []
31
40
 
@@ -34,7 +43,7 @@ class ExecLinesUpdateMarker(MarkerWithEnd, MarkerNoTranslator):
34
43
  tag_head = cmd_call_eval_prefix * 3
35
44
 
36
45
  def execute(self, context, command, marker_node, marker_set):
37
- code = self.get_inner_content(context, marker_node, translate=False)
46
+ code = self.get_inner_content(context, marker_node, translate=False, code=True)
38
47
  context.update_variables(self.eval_lines(context, code))
39
48
  return []
40
49
 
@@ -52,6 +61,15 @@ class ExecCmdcallChainMarker(ExecCmdcallMarkerBase):
52
61
  tag_head = cmd_call_prefix_chain + cmd_call_prefix_simple
53
62
 
54
63
 
64
+ class MarkerParseExprBase(MarkerBase):
65
+ def execute(self, context, command, marker_node, marker_set):
66
+ self.parse_expression(context, command.lstrip())
67
+
68
+
69
+ class ExecCommandOutputChainMarker(MarkerParseExprBase):
70
+ tag_head = MarkerBase.trans_marker_command_output
71
+
72
+
55
73
  class ExecCmdcallSimpleLinesMarker(MarkerWithEnd):
56
74
  command_append_prefix = cmd_call_prefix_simple
57
75
  tag_head = cmd_call_prefix_simple * 3
@@ -75,7 +75,7 @@ class AssignExecMarker(MarkerAssignBase, MarkerWithEnd, MarkerNoTranslator):
75
75
  tag_head_re_args = cmd_call_eval_prefix * 2
76
76
 
77
77
  def execute(self, context, command, marker_node, marker_set):
78
- code = self.get_inner_content(context, marker_node, translate=False)
78
+ code = self.get_inner_content(context, marker_node, translate=False, code=True)
79
79
  result = self.eval_codes(context, code)
80
80
  args = self.split_raw(command, 1, self.tag_head_re_args)
81
81
  self.set_var(context, args, 0, result)
@@ -104,7 +104,6 @@ class AssignCommandOutputMarker(MarkerAssignValueParseExprBase):
104
104
  tag_head_re_args = re.escape(MarkerBase.trans_marker_command_output)
105
105
 
106
106
 
107
-
108
107
  class AssignDecodeMarker(MarkerAssignValueParseExprBase):
109
108
  tag_head_re_args_raw = MarkerBase.trans_marker_decode
110
109
  tag_head_re_args = re.escape(MarkerBase.trans_marker_decode)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dekshell
3
- Version: 0.2.44
3
+ Version: 0.2.45
4
4
  Author-Email: sanzenwin <sanzenwin@gmail.com>
5
5
  License: MIT
6
6
  Requires-Python: >=3.8
@@ -1,6 +1,6 @@
1
- dekshell-0.2.44.dist-info/METADATA,sha256=6Xsby8G1U04hzm55dWk8guaay6q8AGdoHvIcXiFKte0,573
2
- dekshell-0.2.44.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
- dekshell-0.2.44.dist-info/entry_points.txt,sha256=d-kbfULiUTZWIBBsrQF3J_-wESncF-4K2rwHT08grlI,75
1
+ dekshell-0.2.45.dist-info/METADATA,sha256=rY4WEtfO49dKer-stqUf8iWB7EDBntXkGVxUfmRIp-s,573
2
+ dekshell-0.2.45.dist-info/WHEEL,sha256=tSfRZzRHthuv7vxpI4aehrdN9scLjk-dCJkPLzkHxGg,90
3
+ dekshell-0.2.45.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
@@ -8,9 +8,9 @@ dekshell/core/__init__.py,sha256=isDEKwk1odLdvTQNCILCtVNBuXp1uFVPz_uTDNihkVU,554
8
8
  dekshell/core/contexts/__init__.py,sha256=ynsfv37azOKfI2UKd0iPl2M6iBW-k5cb1BqSLOWuJpI,482
9
9
  dekshell/core/contexts/methods.py,sha256=3Bzfv_t8At5MqR0xD7qT8zye6KQySeXr0HpwuendrdE,11789
10
10
  dekshell/core/contexts/properties.py,sha256=TQonN3T_K2cB2uakq_DVVB13B-IFwoM6t2ZkL_OMekw,3365
11
- dekshell/core/markers/__init__.py,sha256=ov-mU1Bt-JbifBqJAWIywduWvyGI4WkJUx5LGZNVxhg,2178
12
- dekshell/core/markers/base/__init__.py,sha256=WGxAr7GRDJI4-HRaLFBasTei-aPyApAnlpfbOaKmmvw,17385
13
- dekshell/core/markers/base/core.py,sha256=6GPz8YVWgOPjGXtS04oa85P5LUDSg4H16rvVgiPz_EA,12556
11
+ dekshell/core/markers/__init__.py,sha256=mK6OiZMWmUTrkAL0Bc1XqRTSb-NNhBgpHb7GLivLAlk,2235
12
+ dekshell/core/markers/base/__init__.py,sha256=uG2r2IWQC8L8R1b8SMVJRJUH3Bj_ACU7AjVZIsI7BWw,18039
13
+ dekshell/core/markers/base/core.py,sha256=SwZuCDYGyhm1HUeeBOjO_SDKRZ7IwQI9at1u6X4pmsE,12556
14
14
  dekshell/core/markers/base/shell.py,sha256=fiFsTUDI8pSDDUCk834OI4ajri2qNWFJkLVhmUk2uAs,484
15
15
  dekshell/core/markers/commands.py,sha256=mDRj4dSfKbDaZ_ts4lPXd6wftvGFI4VKkRoIzxV7otA,1696
16
16
  dekshell/core/markers/comment.py,sha256=U1U3Xc4-giTqSEAPa4E_DmilZM9hs9zG-PCJ9nn4y5U,965
@@ -18,7 +18,7 @@ dekshell/core/markers/define.py,sha256=Xlw_YPOWlmbopVIHhIeAKWSZhHhXmqb3gCbXxvuH4
18
18
  dekshell/core/markers/echo.py,sha256=1H61qQbY9tZnrKsdTI_shTmDY5ZaSGipDuBSRptAuZw,660
19
19
  dekshell/core/markers/empty.py,sha256=pWKsHlrp6uXWU6blqOs0IgN_3kYm1OmDQiKGPERabAo,79
20
20
  dekshell/core/markers/env.py,sha256=hU6irauFrvsUgK9j6jifosiMn0b6mt3aOf5t9oKhxS4,1160
21
- dekshell/core/markers/exec.py,sha256=3yWpaCpASrMwzqVslDNzBaUVL7Lbn-zWMs-dOxUePZU,2744
21
+ dekshell/core/markers/exec.py,sha256=tcKZzTuGH17UOi6dycgHGjX3mHrvjKLj8Bnga38tE7U,3369
22
22
  dekshell/core/markers/for_.py,sha256=wQnK3-o0dQl4A2wx8xgs6V2dzgEjEbnt4MML2fh2x8U,2148
23
23
  dekshell/core/markers/function.py,sha256=j8Cz4ouBQi_0dT6Q6pfJie-1rfIZuSIcWzGBlsKCSd8,3850
24
24
  dekshell/core/markers/if_.py,sha256=UqEnR0X9bKO7hEKol3MJNWXvP7fuJAGt8zwk3xlBCuk,1118
@@ -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=ZNhyH6wHz3H6fM7L28dfaI-7_cqJY8m6kGE5hP756i8,6884
30
+ dekshell/core/markers/var.py,sha256=lGKhKP7NcKc5f_kiombR1d_d2TyRYfVDa9mcB3MJxOY,6894
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=6YCJpG0TkQ4WMt7LBtDD_W1T-C-QkLtGRQw0S60qe54,1058
@@ -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.44.dist-info/RECORD,,
40
+ dekshell-0.2.45.dist-info/RECORD,,