dekshell 0.2.16__tar.gz → 0.2.17__tar.gz
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.
- {dekshell-0.2.16 → dekshell-0.2.17}/PKG-INFO +1 -1
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/contexts/methods.py +38 -4
- {dekshell-0.2.16 → dekshell-0.2.17}/pyproject.toml +1 -1
- {dekshell-0.2.16 → dekshell-0.2.17}/README.md +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/click/__entry__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/click/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/contexts/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/contexts/properties.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/base/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/base/core.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/commands.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/comment.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/define.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/echo.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/empty.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/env.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/exec.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/for_.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/function.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/if_.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/input.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/invoke.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/pip_.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/redirect.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/shell.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/var.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/markers/while_.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/plugin/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/core/redirect.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/utils/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/utils/beep.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/utils/cmd.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/utils/pkg.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/utils/serializer.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.17}/dekshell/utils/shell.py +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import shutil
|
|
3
3
|
import sys
|
|
4
|
+
import time
|
|
4
5
|
import tempfile
|
|
5
6
|
import getpass
|
|
6
7
|
from importlib import import_module
|
|
@@ -23,6 +24,7 @@ from dektools.download import download_from_http
|
|
|
23
24
|
from dektools.ps.process import process_detail, process_kill, process_list_all
|
|
24
25
|
from dektools.time import now
|
|
25
26
|
from dektools.str import shlex_split, shlex_quote
|
|
27
|
+
from dektools.format import format_duration
|
|
26
28
|
from dektools.shell import shell_wrapper, is_user_admin, shell_timeout, shell_retry
|
|
27
29
|
from dektools.match import GeneralMatcher, glob2re, glob_compile, glob_match
|
|
28
30
|
from dektools.cmd.git import git_clean_dir, git_apply, git_parse_modules, git_fetch_min, git_list_remotes, git_head
|
|
@@ -99,15 +101,26 @@ def _remove_path(path):
|
|
|
99
101
|
_remove_path(item)
|
|
100
102
|
|
|
101
103
|
|
|
102
|
-
|
|
104
|
+
_eval_default = object()
|
|
103
105
|
|
|
104
106
|
|
|
105
|
-
def
|
|
107
|
+
def _eval_mixin(expression, default=_eval_default, translate=False):
|
|
106
108
|
context = get_inner_vars('__inner_context__', full=True)
|
|
107
109
|
try:
|
|
108
110
|
return MarkerBase.eval_mixin(context, expression, translate)
|
|
109
111
|
except NameError:
|
|
110
|
-
if default is
|
|
112
|
+
if default is _eval_default:
|
|
113
|
+
raise
|
|
114
|
+
else:
|
|
115
|
+
return default
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def _eval_lines(expression, default=_eval_default):
|
|
119
|
+
context = get_inner_vars('__inner_context__', full=True)
|
|
120
|
+
try:
|
|
121
|
+
return MarkerBase.eval_lines(context, expression)
|
|
122
|
+
except NameError:
|
|
123
|
+
if default is _eval_default:
|
|
111
124
|
raise
|
|
112
125
|
else:
|
|
113
126
|
return default
|
|
@@ -162,6 +175,21 @@ def _pymd(name):
|
|
|
162
175
|
return None
|
|
163
176
|
|
|
164
177
|
|
|
178
|
+
def _time_mark(begin=True, name=None):
|
|
179
|
+
var_prefix = '__time_marker__'
|
|
180
|
+
name = 'default' if name is None else name
|
|
181
|
+
marker_set = get_inner_vars('__inner_marker_set__', full=True)
|
|
182
|
+
_now = time.time_ns()
|
|
183
|
+
if begin:
|
|
184
|
+
marker_set.vars.add_item(var_prefix + name, _now)
|
|
185
|
+
else:
|
|
186
|
+
t = marker_set.vars.get_item(var_prefix + name, None)
|
|
187
|
+
if t is None:
|
|
188
|
+
return ''
|
|
189
|
+
else:
|
|
190
|
+
return format_duration(int((_now - t) / 10 ** 6))
|
|
191
|
+
|
|
192
|
+
|
|
165
193
|
path_common_methods = {
|
|
166
194
|
'cd': _cd,
|
|
167
195
|
'cwd': lambda: os.getcwd(),
|
|
@@ -179,7 +207,6 @@ default_methods = {
|
|
|
179
207
|
'io': _io,
|
|
180
208
|
'reduce': reduce,
|
|
181
209
|
'chain': chain,
|
|
182
|
-
'xeval': _xeval,
|
|
183
210
|
'echo': lambda *x, **y: print(*x, **dict(flush=True) | y),
|
|
184
211
|
'echos': lambda *x, **y: print(*x, **dict(end='', flush=True) | y),
|
|
185
212
|
'echox': lambda *x, **y: print(*x, **dict(file=sys.stderr, flush=True) | y),
|
|
@@ -194,6 +221,8 @@ default_methods = {
|
|
|
194
221
|
'timeout': shell_timeout,
|
|
195
222
|
'retry': shell_retry,
|
|
196
223
|
'run': shell_wrapper,
|
|
224
|
+
'eval': _eval_mixin,
|
|
225
|
+
'exec': _eval_lines,
|
|
197
226
|
},
|
|
198
227
|
'path': {
|
|
199
228
|
**path_common_methods,
|
|
@@ -234,6 +263,11 @@ default_methods = {
|
|
|
234
263
|
'hash': lambda x, name='sha256', args=None: hash_file(name, x, args=args),
|
|
235
264
|
},
|
|
236
265
|
**path_common_methods,
|
|
266
|
+
'time': {
|
|
267
|
+
'now': now,
|
|
268
|
+
'begin': lambda name=None: _time_mark(True, name),
|
|
269
|
+
'end': lambda name=None: _time_mark(False, name),
|
|
270
|
+
},
|
|
237
271
|
'pu': {
|
|
238
272
|
'ps': process_list_all,
|
|
239
273
|
'kill': process_kill,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|