dekshell 0.2.16__tar.gz → 0.2.18__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.18}/PKG-INFO +1 -1
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/contexts/methods.py +40 -4
- {dekshell-0.2.16 → dekshell-0.2.18}/pyproject.toml +1 -1
- {dekshell-0.2.16 → dekshell-0.2.18}/README.md +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/click/__entry__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/click/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/contexts/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/contexts/properties.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/base/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/base/core.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/commands.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/comment.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/define.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/echo.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/empty.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/env.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/exec.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/for_.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/function.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/if_.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/input.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/invoke.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/pip_.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/redirect.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/shell.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/var.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/markers/while_.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/plugin/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/core/redirect.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/utils/__init__.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/utils/beep.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/utils/cmd.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/utils/pkg.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/dekshell/utils/serializer.py +0 -0
- {dekshell-0.2.16 → dekshell-0.2.18}/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,23 @@ 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
|
+
if name is None:
|
|
181
|
+
name = ''
|
|
182
|
+
name = str(name).strip()
|
|
183
|
+
marker_set = get_inner_vars('__inner_marker_set__', full=True)
|
|
184
|
+
_now = time.time_ns()
|
|
185
|
+
if begin:
|
|
186
|
+
marker_set.vars.add_item(var_prefix + name, _now)
|
|
187
|
+
else:
|
|
188
|
+
t = marker_set.vars.get_item(var_prefix + name, None)
|
|
189
|
+
if t is None:
|
|
190
|
+
return ''
|
|
191
|
+
else:
|
|
192
|
+
return format_duration(int((_now - t) / 10 ** 6))
|
|
193
|
+
|
|
194
|
+
|
|
165
195
|
path_common_methods = {
|
|
166
196
|
'cd': _cd,
|
|
167
197
|
'cwd': lambda: os.getcwd(),
|
|
@@ -179,7 +209,6 @@ default_methods = {
|
|
|
179
209
|
'io': _io,
|
|
180
210
|
'reduce': reduce,
|
|
181
211
|
'chain': chain,
|
|
182
|
-
'xeval': _xeval,
|
|
183
212
|
'echo': lambda *x, **y: print(*x, **dict(flush=True) | y),
|
|
184
213
|
'echos': lambda *x, **y: print(*x, **dict(end='', flush=True) | y),
|
|
185
214
|
'echox': lambda *x, **y: print(*x, **dict(file=sys.stderr, flush=True) | y),
|
|
@@ -194,6 +223,8 @@ default_methods = {
|
|
|
194
223
|
'timeout': shell_timeout,
|
|
195
224
|
'retry': shell_retry,
|
|
196
225
|
'run': shell_wrapper,
|
|
226
|
+
'eval': _eval_mixin,
|
|
227
|
+
'exec': _eval_lines,
|
|
197
228
|
},
|
|
198
229
|
'path': {
|
|
199
230
|
**path_common_methods,
|
|
@@ -234,6 +265,11 @@ default_methods = {
|
|
|
234
265
|
'hash': lambda x, name='sha256', args=None: hash_file(name, x, args=args),
|
|
235
266
|
},
|
|
236
267
|
**path_common_methods,
|
|
268
|
+
'time': {
|
|
269
|
+
'now': now,
|
|
270
|
+
'begin': lambda name=None: _time_mark(True, name),
|
|
271
|
+
'end': lambda name=None: _time_mark(False, name),
|
|
272
|
+
},
|
|
237
273
|
'pu': {
|
|
238
274
|
'ps': process_list_all,
|
|
239
275
|
'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
|