omdev 0.0.0.dev179__tar.gz → 0.0.0.dev180__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {omdev-0.0.0.dev179/omdev.egg-info → omdev-0.0.0.dev180}/PKG-INFO +2 -2
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/.manifests.json +5 -5
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/clicli.py +6 -6
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/imgur.py +1 -1
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/cli.py +3 -3
- omdev-0.0.0.dev180/omdev/magic/__main__.py +11 -0
- omdev-0.0.0.dev180/omdev/magic/cli.py +54 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/magic/find.py +0 -45
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pycharm/cli.py +3 -3
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/cli.py +3 -3
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/interp.py +15 -15
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/pyproject.py +15 -25
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/doc.py +2 -2
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/docker.py +8 -8
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/git.py +7 -7
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/notebook.py +1 -1
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/pip.py +4 -4
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/prof.py +1 -1
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/sqlrepl.py +1 -1
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180/omdev.egg-info}/PKG-INFO +2 -2
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev.egg-info/SOURCES.txt +2 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev.egg-info/requires.txt +1 -1
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/pyproject.toml +2 -2
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/LICENSE +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/MANIFEST.in +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/README.rst +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/__about__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/__main__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/gen.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/imports.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/main.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/manifests.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/resources.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/srcfiles.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/strip.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/types.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/amalg/typing.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/antlr/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/antlr/consts.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/antlr/gen.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/bracepy.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/cache.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/contexts.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/currents.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/fns.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/resolvers.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/storage.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/compute/types.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/actions.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/cache.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/consts.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/defaults.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/manifests.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cache/data/specs.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_boilerplate.cc +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/LICENSE +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/build_ext.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/compilers/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/compilers/ccompiler.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/compilers/options.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/compilers/unixccompiler.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/dir_util.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/errors.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/extension.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/file_util.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/modified.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/spawn.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/sysconfig.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/util.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/_distutils/version.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/build.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/cmake.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/importhook.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/magic.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cexts/scan.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/classdot.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/__main__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/_pathhack.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/install.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/main.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/managers.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cli/types.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/clipboard/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/clipboard/clipboard.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/clipboard/darwin_cf.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/clipboard/linux_x11.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/cmake.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/findimports.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/git/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/git/revisions.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/git/status.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/git/subtrees.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/__main__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/default.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/inject.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/inspect.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/providers/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/providers/base.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/providers/inject.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/providers/running.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/providers/standalone.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/providers/system.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/pyenv/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/pyenv/inject.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/pyenv/pyenv.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/resolvers.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/types.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/uv/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/uv/inject.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/interp/uv/uv.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/magic/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/magic/magic.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/magic/prepare.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/magic/styles.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/manifests/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/manifests/__main__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/manifests/build.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/manifests/main.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/mypy/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/mypy/debug.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/packaging/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/packaging/marshal.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/packaging/names.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/packaging/requires.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/packaging/specifiers.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/packaging/versions.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pip.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/__main__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/base.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/git.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/lite.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/main.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/manifests.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/precheck/scripts.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/ptk/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/ptk/apps/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/ptk/apps/ncdu.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pycharm/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pycharm/__main__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/__main__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/cexts.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/configs.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/pkg.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/reqs.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/pyproject/venvs.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/revisions.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/bumpversion.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/execrss.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/exectime.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/importtrace.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/slowcat.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/scripts/tmpexec.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/secrets.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tokens.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/toml/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/toml/parser.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/toml/writer.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/cloc.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/importscan.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/__main__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/cli.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/formats.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/io.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/parsing.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/processing.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/json/rendering.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/mkrelimp.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/pawk/__init__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/pawk/__main__.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/pawk/pawk.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/tools/qr.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev/wheelfile.py +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev.egg-info/dependency_links.txt +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev.egg-info/entry_points.txt +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/omdev.egg-info/top_level.txt +0 -0
- {omdev-0.0.0.dev179 → omdev-0.0.0.dev180}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: omdev
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev180
|
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.
|
15
|
+
Requires-Dist: omlish==0.0.0.dev180
|
16
16
|
Provides-Extra: all
|
17
17
|
Requires-Dist: black~=24.10; extra == "all"
|
18
18
|
Requires-Dist: pycparser~=2.22; extra == "all"
|
@@ -96,14 +96,14 @@
|
|
96
96
|
}
|
97
97
|
},
|
98
98
|
{
|
99
|
-
"module": ".magic.
|
99
|
+
"module": ".magic.__main__",
|
100
100
|
"attr": "_CLI_MODULE",
|
101
|
-
"file": "omdev/magic/
|
102
|
-
"line":
|
101
|
+
"file": "omdev/magic/__main__.py",
|
102
|
+
"line": 4,
|
103
103
|
"value": {
|
104
104
|
"$.cli.types.CliModule": {
|
105
|
-
"cmd_name": "
|
106
|
-
"mod_name": "omdev.magic.
|
105
|
+
"cmd_name": "magic",
|
106
|
+
"mod_name": "omdev.magic.__main__"
|
107
107
|
}
|
108
108
|
}
|
109
109
|
},
|
@@ -21,15 +21,15 @@ class CliCli(ap.Cli):
|
|
21
21
|
|
22
22
|
#
|
23
23
|
|
24
|
-
@ap.
|
24
|
+
@ap.cmd(name='version', aliases=['ver'])
|
25
25
|
def print_version(self) -> None:
|
26
26
|
print(__about__.__version__)
|
27
27
|
|
28
|
-
@ap.
|
28
|
+
@ap.cmd(name='revision', aliases=['rev'])
|
29
29
|
def print_revision(self) -> None:
|
30
30
|
print(__about__.__revision__)
|
31
31
|
|
32
|
-
@ap.
|
32
|
+
@ap.cmd(name='home')
|
33
33
|
def print_home(self) -> None:
|
34
34
|
print(sys.prefix)
|
35
35
|
|
@@ -52,7 +52,7 @@ class CliCli(ap.Cli):
|
|
52
52
|
],
|
53
53
|
)
|
54
54
|
|
55
|
-
@ap.
|
55
|
+
@ap.cmd(
|
56
56
|
ap.arg('args', nargs=ap.REMAINDER),
|
57
57
|
name='python',
|
58
58
|
accepts_unknown=True,
|
@@ -60,7 +60,7 @@ class CliCli(ap.Cli):
|
|
60
60
|
def python_cmd(self) -> None:
|
61
61
|
self._passthrough_args_cmd(sys.executable)
|
62
62
|
|
63
|
-
@ap.
|
63
|
+
@ap.cmd(
|
64
64
|
ap.arg('args', nargs=ap.REMAINDER),
|
65
65
|
name='pip',
|
66
66
|
accepts_unknown=True,
|
@@ -70,7 +70,7 @@ class CliCli(ap.Cli):
|
|
70
70
|
|
71
71
|
#
|
72
72
|
|
73
|
-
@ap.
|
73
|
+
@ap.cmd(
|
74
74
|
ap.arg('--url', default=DEFAULT_REINSTALL_URL),
|
75
75
|
ap.arg('--local', action='store_true'),
|
76
76
|
ap.arg('extra_deps', nargs='*'),
|
@@ -12,7 +12,7 @@ import typing as ta
|
|
12
12
|
|
13
13
|
from omlish.argparse.cli import ArgparseCli
|
14
14
|
from omlish.argparse.cli import argparse_arg
|
15
|
-
from omlish.argparse.cli import
|
15
|
+
from omlish.argparse.cli import argparse_cmd
|
16
16
|
from omlish.lite.cached import cached_nullary
|
17
17
|
from omlish.lite.check import check
|
18
18
|
from omlish.lite.inject import Injector
|
@@ -37,7 +37,7 @@ class InterpCli(ArgparseCli):
|
|
37
37
|
|
38
38
|
#
|
39
39
|
|
40
|
-
@
|
40
|
+
@argparse_cmd(
|
41
41
|
argparse_arg('version'),
|
42
42
|
argparse_arg('-d', '--debug', action='store_true'),
|
43
43
|
)
|
@@ -46,7 +46,7 @@ class InterpCli(ArgparseCli):
|
|
46
46
|
s = InterpSpecifier.parse(self.args.version)
|
47
47
|
await r.list(s)
|
48
48
|
|
49
|
-
@
|
49
|
+
@argparse_cmd(
|
50
50
|
argparse_arg('version'),
|
51
51
|
argparse_arg('-p', '--provider'),
|
52
52
|
argparse_arg('-d', '--debug', action='store_true'),
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007
|
2
|
+
import typing as ta
|
3
|
+
|
4
|
+
from omlish.argparse.cli import ArgparseCli
|
5
|
+
from omlish.argparse.cli import argparse_arg
|
6
|
+
from omlish.argparse.cli import argparse_cmd
|
7
|
+
|
8
|
+
from .find import find_magic_files
|
9
|
+
from .find import find_magic_py_modules
|
10
|
+
from .styles import C_MAGIC_STYLE
|
11
|
+
from .styles import PY_MAGIC_STYLE
|
12
|
+
|
13
|
+
|
14
|
+
##
|
15
|
+
|
16
|
+
|
17
|
+
class MagicCli(ArgparseCli):
|
18
|
+
@argparse_cmd(
|
19
|
+
argparse_arg('--style', '-s', default='py'),
|
20
|
+
argparse_arg('--key', '-k', dest='keys', action='append'),
|
21
|
+
argparse_arg('--modules', action='store_true'),
|
22
|
+
argparse_arg('roots', nargs='*'),
|
23
|
+
)
|
24
|
+
def find(self) -> None:
|
25
|
+
style = {
|
26
|
+
'py': PY_MAGIC_STYLE,
|
27
|
+
'c': C_MAGIC_STYLE,
|
28
|
+
}[self.args.style]
|
29
|
+
|
30
|
+
kw: dict = dict(
|
31
|
+
roots=self.args.roots,
|
32
|
+
style=style,
|
33
|
+
keys=self.args.keys,
|
34
|
+
)
|
35
|
+
|
36
|
+
fn: ta.Callable
|
37
|
+
if self.args.modules:
|
38
|
+
fn = find_magic_py_modules
|
39
|
+
else:
|
40
|
+
fn = find_magic_files
|
41
|
+
|
42
|
+
for out in fn(**kw):
|
43
|
+
print(out)
|
44
|
+
|
45
|
+
|
46
|
+
##
|
47
|
+
|
48
|
+
|
49
|
+
def _main(argv=None) -> None:
|
50
|
+
MagicCli(argv).cli_run_and_exit()
|
51
|
+
|
52
|
+
|
53
|
+
if __name__ == '__main__':
|
54
|
+
_main()
|
@@ -7,7 +7,6 @@ import typing as ta
|
|
7
7
|
from .magic import Magic
|
8
8
|
from .prepare import MagicPrepareError
|
9
9
|
from .prepare import py_compile_magic_preparer
|
10
|
-
from .styles import C_MAGIC_STYLE
|
11
10
|
from .styles import PY_MAGIC_STYLE
|
12
11
|
from .styles import MagicStyle
|
13
12
|
|
@@ -222,47 +221,3 @@ def find_magic_py_modules(
|
|
222
221
|
yield fp[:-3].replace(os.sep, '.')
|
223
222
|
else:
|
224
223
|
yield fp
|
225
|
-
|
226
|
-
|
227
|
-
##
|
228
|
-
|
229
|
-
|
230
|
-
# @omlish-manifest
|
231
|
-
_CLI_MODULE = {'$omdev.cli.types.CliModule': {
|
232
|
-
'cmd_name': 'py/findmagic',
|
233
|
-
'mod_name': __name__,
|
234
|
-
}}
|
235
|
-
|
236
|
-
|
237
|
-
if __name__ == '__main__':
|
238
|
-
def _main(argv=None) -> None:
|
239
|
-
import argparse
|
240
|
-
|
241
|
-
arg_parser = argparse.ArgumentParser()
|
242
|
-
arg_parser.add_argument('--style', '-s', default='py')
|
243
|
-
arg_parser.add_argument('--key', '-k', dest='keys', action='append')
|
244
|
-
arg_parser.add_argument('--modules', action='store_true')
|
245
|
-
arg_parser.add_argument('roots', nargs='*')
|
246
|
-
args = arg_parser.parse_args(argv)
|
247
|
-
|
248
|
-
style = {
|
249
|
-
'py': PY_MAGIC_STYLE,
|
250
|
-
'c': C_MAGIC_STYLE,
|
251
|
-
}[args.style]
|
252
|
-
|
253
|
-
kw: dict = dict(
|
254
|
-
roots=args.roots,
|
255
|
-
style=style,
|
256
|
-
keys=args.keys,
|
257
|
-
)
|
258
|
-
|
259
|
-
fn: ta.Callable
|
260
|
-
if args.modules:
|
261
|
-
fn = find_magic_py_modules
|
262
|
-
else:
|
263
|
-
fn = find_magic_files
|
264
|
-
|
265
|
-
for out in fn(**kw):
|
266
|
-
print(out)
|
267
|
-
|
268
|
-
_main()
|
@@ -77,11 +77,11 @@ def parse_wmctrl_lxp_line(l: str) -> WmctrlLine:
|
|
77
77
|
|
78
78
|
|
79
79
|
class Cli(ap.Cli):
|
80
|
-
@ap.
|
80
|
+
@ap.cmd()
|
81
81
|
def version(self) -> None:
|
82
82
|
print(get_pycharm_version())
|
83
83
|
|
84
|
-
@ap.
|
84
|
+
@ap.cmd(
|
85
85
|
ap.arg('python-exe'),
|
86
86
|
ap.arg('args', nargs=ap.REMAINDER),
|
87
87
|
)
|
@@ -99,7 +99,7 @@ class Cli(ap.Cli):
|
|
99
99
|
proc = subprocess.run([exe, src_file, *self.args.args], check=False)
|
100
100
|
return proc.returncode
|
101
101
|
|
102
|
-
@ap.
|
102
|
+
@ap.cmd(
|
103
103
|
ap.arg('dir', nargs='?'),
|
104
104
|
ap.arg('--clion', action='store_true'),
|
105
105
|
)
|
@@ -35,7 +35,7 @@ import typing as ta
|
|
35
35
|
|
36
36
|
from omlish.argparse.cli import ArgparseCli
|
37
37
|
from omlish.argparse.cli import argparse_arg
|
38
|
-
from omlish.argparse.cli import
|
38
|
+
from omlish.argparse.cli import argparse_cmd
|
39
39
|
from omlish.asyncs.asyncio.subprocesses import asyncio_subprocesses
|
40
40
|
from omlish.lite.cached import cached_nullary
|
41
41
|
from omlish.lite.check import check
|
@@ -141,7 +141,7 @@ class Run:
|
|
141
141
|
class PyprojectCli(ArgparseCli):
|
142
142
|
_docker_container = argparse_arg('--_docker_container', help=argparse.SUPPRESS)
|
143
143
|
|
144
|
-
@
|
144
|
+
@argparse_cmd(
|
145
145
|
argparse_arg('name'),
|
146
146
|
argparse_arg('-e', '--docker-env', action='append'),
|
147
147
|
argparse_arg('cmd', nargs='?'),
|
@@ -223,7 +223,7 @@ class PyprojectCli(ArgparseCli):
|
|
223
223
|
else:
|
224
224
|
raise Exception(f'unknown subcommand: {cmd}')
|
225
225
|
|
226
|
-
@
|
226
|
+
@argparse_cmd(
|
227
227
|
argparse_arg('-b', '--build', action='store_true'),
|
228
228
|
argparse_arg('-r', '--revision', action='store_true'),
|
229
229
|
argparse_arg('-j', '--jobs', type=int),
|
@@ -78,7 +78,7 @@ UnparsedVersionVar = ta.TypeVar('UnparsedVersionVar', bound=UnparsedVersion)
|
|
78
78
|
CallableVersionOperator = ta.Callable[['Version', str], bool]
|
79
79
|
|
80
80
|
# ../../omlish/argparse/cli.py
|
81
|
-
|
81
|
+
ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
|
82
82
|
|
83
83
|
# ../../omlish/lite/inject.py
|
84
84
|
U = ta.TypeVar('U')
|
@@ -1953,15 +1953,15 @@ def argparse_arg(*args, **kwargs) -> ArgparseArg:
|
|
1953
1953
|
|
1954
1954
|
|
1955
1955
|
@dc.dataclass(eq=False)
|
1956
|
-
class
|
1956
|
+
class ArgparseCmd:
|
1957
1957
|
name: str
|
1958
|
-
fn:
|
1958
|
+
fn: ArgparseCmdFn
|
1959
1959
|
args: ta.Sequence[ArgparseArg] = () # noqa
|
1960
1960
|
|
1961
1961
|
# _: dc.KW_ONLY
|
1962
1962
|
|
1963
1963
|
aliases: ta.Optional[ta.Sequence[str]] = None
|
1964
|
-
parent: ta.Optional['
|
1964
|
+
parent: ta.Optional['ArgparseCmd'] = None
|
1965
1965
|
accepts_unknown: bool = False
|
1966
1966
|
|
1967
1967
|
def __post_init__(self) -> None:
|
@@ -1976,7 +1976,7 @@ class ArgparseCommand:
|
|
1976
1976
|
|
1977
1977
|
check.arg(callable(self.fn))
|
1978
1978
|
check.arg(all(isinstance(a, ArgparseArg) for a in self.args))
|
1979
|
-
check.isinstance(self.parent, (
|
1979
|
+
check.isinstance(self.parent, (ArgparseCmd, type(None)))
|
1980
1980
|
check.isinstance(self.accepts_unknown, bool)
|
1981
1981
|
|
1982
1982
|
functools.update_wrapper(self, self.fn)
|
@@ -1990,21 +1990,21 @@ class ArgparseCommand:
|
|
1990
1990
|
return self.fn(*args, **kwargs)
|
1991
1991
|
|
1992
1992
|
|
1993
|
-
def
|
1993
|
+
def argparse_cmd(
|
1994
1994
|
*args: ArgparseArg,
|
1995
1995
|
name: ta.Optional[str] = None,
|
1996
1996
|
aliases: ta.Optional[ta.Iterable[str]] = None,
|
1997
|
-
parent: ta.Optional[
|
1997
|
+
parent: ta.Optional[ArgparseCmd] = None,
|
1998
1998
|
accepts_unknown: bool = False,
|
1999
|
-
) -> ta.Any: # ta.Callable[[
|
1999
|
+
) -> ta.Any: # ta.Callable[[ArgparseCmdFn], ArgparseCmd]: # FIXME
|
2000
2000
|
for arg in args:
|
2001
2001
|
check.isinstance(arg, ArgparseArg)
|
2002
2002
|
check.isinstance(name, (str, type(None)))
|
2003
|
-
check.isinstance(parent, (
|
2003
|
+
check.isinstance(parent, (ArgparseCmd, type(None)))
|
2004
2004
|
check.not_isinstance(aliases, str)
|
2005
2005
|
|
2006
2006
|
def inner(fn):
|
2007
|
-
return
|
2007
|
+
return ArgparseCmd(
|
2008
2008
|
(name if name is not None else fn.__name__).replace('_', '-'),
|
2009
2009
|
fn,
|
2010
2010
|
args,
|
@@ -2059,7 +2059,7 @@ class ArgparseCli:
|
|
2059
2059
|
for bns in [bcls.__dict__ for bcls in reversed(mro)] + [ns]:
|
2060
2060
|
bseen = set() # type: ignore
|
2061
2061
|
for k, v in bns.items():
|
2062
|
-
if isinstance(v, (
|
2062
|
+
if isinstance(v, (ArgparseCmd, ArgparseArg)):
|
2063
2063
|
check.not_in(v, bseen)
|
2064
2064
|
bseen.add(v)
|
2065
2065
|
objs[k] = v
|
@@ -2086,7 +2086,7 @@ class ArgparseCli:
|
|
2086
2086
|
subparsers = parser.add_subparsers()
|
2087
2087
|
|
2088
2088
|
for att, obj in objs.items():
|
2089
|
-
if isinstance(obj,
|
2089
|
+
if isinstance(obj, ArgparseCmd):
|
2090
2090
|
if obj.parent is not None:
|
2091
2091
|
raise NotImplementedError
|
2092
2092
|
|
@@ -2148,7 +2148,7 @@ class ArgparseCli:
|
|
2148
2148
|
|
2149
2149
|
#
|
2150
2150
|
|
2151
|
-
def _bind_cli_cmd(self, cmd:
|
2151
|
+
def _bind_cli_cmd(self, cmd: ArgparseCmd) -> ta.Callable:
|
2152
2152
|
return cmd.__get__(self, type(self))
|
2153
2153
|
|
2154
2154
|
def prepare_cli_run(self) -> ta.Optional[ta.Callable]:
|
@@ -5034,7 +5034,7 @@ class InterpCli(ArgparseCli):
|
|
5034
5034
|
|
5035
5035
|
#
|
5036
5036
|
|
5037
|
-
@
|
5037
|
+
@argparse_cmd(
|
5038
5038
|
argparse_arg('version'),
|
5039
5039
|
argparse_arg('-d', '--debug', action='store_true'),
|
5040
5040
|
)
|
@@ -5043,7 +5043,7 @@ class InterpCli(ArgparseCli):
|
|
5043
5043
|
s = InterpSpecifier.parse(self.args.version)
|
5044
5044
|
await r.list(s)
|
5045
5045
|
|
5046
|
-
@
|
5046
|
+
@argparse_cmd(
|
5047
5047
|
argparse_arg('version'),
|
5048
5048
|
argparse_arg('-p', '--provider'),
|
5049
5049
|
argparse_arg('-d', '--debug', action='store_true'),
|
@@ -114,7 +114,7 @@ UnparsedVersionVar = ta.TypeVar('UnparsedVersionVar', bound=UnparsedVersion)
|
|
114
114
|
CallableVersionOperator = ta.Callable[['Version', str], bool]
|
115
115
|
|
116
116
|
# ../../omlish/argparse/cli.py
|
117
|
-
|
117
|
+
ArgparseCmdFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
|
118
118
|
|
119
119
|
# ../../omlish/lite/inject.py
|
120
120
|
U = ta.TypeVar('U')
|
@@ -2910,16 +2910,6 @@ def find_magic_py_modules(
|
|
2910
2910
|
yield fp
|
2911
2911
|
|
2912
2912
|
|
2913
|
-
##
|
2914
|
-
|
2915
|
-
|
2916
|
-
# # @omlish-manifest
|
2917
|
-
# _CLI_MODULE = {'$omdev.cli.types.CliModule': {
|
2918
|
-
# 'cmd_name': 'py/findmagic',
|
2919
|
-
# 'mod_name': __name__,
|
2920
|
-
# }}
|
2921
|
-
|
2922
|
-
|
2923
2913
|
########################################
|
2924
2914
|
# ../../packaging/specifiers.py
|
2925
2915
|
# Copyright (c) Donald Stufft and individual contributors.
|
@@ -3553,15 +3543,15 @@ def argparse_arg(*args, **kwargs) -> ArgparseArg:
|
|
3553
3543
|
|
3554
3544
|
|
3555
3545
|
@dc.dataclass(eq=False)
|
3556
|
-
class
|
3546
|
+
class ArgparseCmd:
|
3557
3547
|
name: str
|
3558
|
-
fn:
|
3548
|
+
fn: ArgparseCmdFn
|
3559
3549
|
args: ta.Sequence[ArgparseArg] = () # noqa
|
3560
3550
|
|
3561
3551
|
# _: dc.KW_ONLY
|
3562
3552
|
|
3563
3553
|
aliases: ta.Optional[ta.Sequence[str]] = None
|
3564
|
-
parent: ta.Optional['
|
3554
|
+
parent: ta.Optional['ArgparseCmd'] = None
|
3565
3555
|
accepts_unknown: bool = False
|
3566
3556
|
|
3567
3557
|
def __post_init__(self) -> None:
|
@@ -3576,7 +3566,7 @@ class ArgparseCommand:
|
|
3576
3566
|
|
3577
3567
|
check.arg(callable(self.fn))
|
3578
3568
|
check.arg(all(isinstance(a, ArgparseArg) for a in self.args))
|
3579
|
-
check.isinstance(self.parent, (
|
3569
|
+
check.isinstance(self.parent, (ArgparseCmd, type(None)))
|
3580
3570
|
check.isinstance(self.accepts_unknown, bool)
|
3581
3571
|
|
3582
3572
|
functools.update_wrapper(self, self.fn)
|
@@ -3590,21 +3580,21 @@ class ArgparseCommand:
|
|
3590
3580
|
return self.fn(*args, **kwargs)
|
3591
3581
|
|
3592
3582
|
|
3593
|
-
def
|
3583
|
+
def argparse_cmd(
|
3594
3584
|
*args: ArgparseArg,
|
3595
3585
|
name: ta.Optional[str] = None,
|
3596
3586
|
aliases: ta.Optional[ta.Iterable[str]] = None,
|
3597
|
-
parent: ta.Optional[
|
3587
|
+
parent: ta.Optional[ArgparseCmd] = None,
|
3598
3588
|
accepts_unknown: bool = False,
|
3599
|
-
) -> ta.Any: # ta.Callable[[
|
3589
|
+
) -> ta.Any: # ta.Callable[[ArgparseCmdFn], ArgparseCmd]: # FIXME
|
3600
3590
|
for arg in args:
|
3601
3591
|
check.isinstance(arg, ArgparseArg)
|
3602
3592
|
check.isinstance(name, (str, type(None)))
|
3603
|
-
check.isinstance(parent, (
|
3593
|
+
check.isinstance(parent, (ArgparseCmd, type(None)))
|
3604
3594
|
check.not_isinstance(aliases, str)
|
3605
3595
|
|
3606
3596
|
def inner(fn):
|
3607
|
-
return
|
3597
|
+
return ArgparseCmd(
|
3608
3598
|
(name if name is not None else fn.__name__).replace('_', '-'),
|
3609
3599
|
fn,
|
3610
3600
|
args,
|
@@ -3659,7 +3649,7 @@ class ArgparseCli:
|
|
3659
3649
|
for bns in [bcls.__dict__ for bcls in reversed(mro)] + [ns]:
|
3660
3650
|
bseen = set() # type: ignore
|
3661
3651
|
for k, v in bns.items():
|
3662
|
-
if isinstance(v, (
|
3652
|
+
if isinstance(v, (ArgparseCmd, ArgparseArg)):
|
3663
3653
|
check.not_in(v, bseen)
|
3664
3654
|
bseen.add(v)
|
3665
3655
|
objs[k] = v
|
@@ -3686,7 +3676,7 @@ class ArgparseCli:
|
|
3686
3676
|
subparsers = parser.add_subparsers()
|
3687
3677
|
|
3688
3678
|
for att, obj in objs.items():
|
3689
|
-
if isinstance(obj,
|
3679
|
+
if isinstance(obj, ArgparseCmd):
|
3690
3680
|
if obj.parent is not None:
|
3691
3681
|
raise NotImplementedError
|
3692
3682
|
|
@@ -3748,7 +3738,7 @@ class ArgparseCli:
|
|
3748
3738
|
|
3749
3739
|
#
|
3750
3740
|
|
3751
|
-
def _bind_cli_cmd(self, cmd:
|
3741
|
+
def _bind_cli_cmd(self, cmd: ArgparseCmd) -> ta.Callable:
|
3752
3742
|
return cmd.__get__(self, type(self))
|
3753
3743
|
|
3754
3744
|
def prepare_cli_run(self) -> ta.Optional[ta.Callable]:
|
@@ -8152,7 +8142,7 @@ class Run:
|
|
8152
8142
|
class PyprojectCli(ArgparseCli):
|
8153
8143
|
_docker_container = argparse_arg('--_docker_container', help=argparse.SUPPRESS)
|
8154
8144
|
|
8155
|
-
@
|
8145
|
+
@argparse_cmd(
|
8156
8146
|
argparse_arg('name'),
|
8157
8147
|
argparse_arg('-e', '--docker-env', action='append'),
|
8158
8148
|
argparse_arg('cmd', nargs='?'),
|
@@ -8234,7 +8224,7 @@ class PyprojectCli(ArgparseCli):
|
|
8234
8224
|
else:
|
8235
8225
|
raise Exception(f'unknown subcommand: {cmd}')
|
8236
8226
|
|
8237
|
-
@
|
8227
|
+
@argparse_cmd(
|
8238
8228
|
argparse_arg('-b', '--build', action='store_true'),
|
8239
8229
|
argparse_arg('-r', '--revision', action='store_true'),
|
8240
8230
|
argparse_arg('-j', '--jobs', type=int),
|
@@ -64,7 +64,7 @@ class Cli(ap.Cli):
|
|
64
64
|
|
65
65
|
return src, name
|
66
66
|
|
67
|
-
@ap.
|
67
|
+
@ap.cmd(
|
68
68
|
ap.arg('input-file', nargs='?'),
|
69
69
|
ap.arg('--report-level', type=int),
|
70
70
|
ap.arg('-O', '--open', action='store_true'),
|
@@ -85,7 +85,7 @@ class Cli(ap.Cli):
|
|
85
85
|
else:
|
86
86
|
print(html)
|
87
87
|
|
88
|
-
@ap.
|
88
|
+
@ap.cmd(
|
89
89
|
ap.arg('input-file', nargs='?'),
|
90
90
|
ap.arg('-O', '--open', action='store_true'),
|
91
91
|
)
|
@@ -37,7 +37,7 @@ def get_local_platform() -> str:
|
|
37
37
|
|
38
38
|
|
39
39
|
class Cli(ap.Cli):
|
40
|
-
@ap.
|
40
|
+
@ap.cmd(
|
41
41
|
ap.arg('args', nargs='*'),
|
42
42
|
)
|
43
43
|
def ns1(self) -> None:
|
@@ -69,7 +69,7 @@ class Cli(ap.Cli):
|
|
69
69
|
*self.args.args,
|
70
70
|
)
|
71
71
|
|
72
|
-
@ap.
|
72
|
+
@ap.cmd(
|
73
73
|
ap.arg('--amd64', action='store_true'),
|
74
74
|
)
|
75
75
|
def enable_ptrace(self) -> None:
|
@@ -87,7 +87,7 @@ class Cli(ap.Cli):
|
|
87
87
|
'sh', '-c', 'echo 0 > /proc/sys/kernel/yama/ptrace_scope',
|
88
88
|
)
|
89
89
|
|
90
|
-
@ap.
|
90
|
+
@ap.cmd(
|
91
91
|
ap.arg('-f', '--file'),
|
92
92
|
ap.arg('-w', '--write', action='store_true'),
|
93
93
|
ap.arg('-q', '--quiet', action='store_true'),
|
@@ -182,7 +182,7 @@ class Cli(ap.Cli):
|
|
182
182
|
with open(yml_file, 'w') as f:
|
183
183
|
f.write(new_src)
|
184
184
|
|
185
|
-
@ap.
|
185
|
+
@ap.cmd(
|
186
186
|
ap.arg('repo'),
|
187
187
|
ap.arg('tags', nargs='*'),
|
188
188
|
)
|
@@ -192,7 +192,7 @@ class Cli(ap.Cli):
|
|
192
192
|
print(json.dumps_pretty(msh.marshal(info)))
|
193
193
|
return 0
|
194
194
|
|
195
|
-
@ap.
|
195
|
+
@ap.cmd(
|
196
196
|
ap.arg('image'),
|
197
197
|
)
|
198
198
|
def repo_latest_image(self) -> int:
|
@@ -205,7 +205,7 @@ class Cli(ap.Cli):
|
|
205
205
|
print(dck.select_latest_tag(info.tags, base=base))
|
206
206
|
return 0
|
207
207
|
|
208
|
-
@ap.
|
208
|
+
@ap.cmd(
|
209
209
|
ap.arg('-f', '--file'),
|
210
210
|
)
|
211
211
|
def compose_image_updates(self) -> None:
|
@@ -234,7 +234,7 @@ class Cli(ap.Cli):
|
|
234
234
|
|
235
235
|
#
|
236
236
|
|
237
|
-
@ap.
|
237
|
+
@ap.cmd()
|
238
238
|
def dockly(self) -> None:
|
239
239
|
os.execl(
|
240
240
|
exe := docker_exe(),
|
@@ -244,7 +244,7 @@ class Cli(ap.Cli):
|
|
244
244
|
'lirantal/dockly',
|
245
245
|
)
|
246
246
|
|
247
|
-
@ap.
|
247
|
+
@ap.cmd()
|
248
248
|
def lazy(self) -> None:
|
249
249
|
os.execl(
|
250
250
|
exe := docker_exe(),
|
@@ -43,7 +43,7 @@ def get_first_commit_of_day(rev: str) -> str | None:
|
|
43
43
|
|
44
44
|
|
45
45
|
class Cli(ap.Cli):
|
46
|
-
@ap.
|
46
|
+
@ap.cmd()
|
47
47
|
def blob_sizes(self) -> None:
|
48
48
|
# https://stackoverflow.com/a/42544963
|
49
49
|
subprocess.check_call( # noqa
|
@@ -56,7 +56,7 @@ class Cli(ap.Cli):
|
|
56
56
|
|
57
57
|
#
|
58
58
|
|
59
|
-
@ap.
|
59
|
+
@ap.cmd()
|
60
60
|
def commits_by_date(self) -> None:
|
61
61
|
subprocess.check_call(['git log --date=short --pretty=format:%ad | sort | uniq -c'], shell=True) # noqa
|
62
62
|
|
@@ -64,7 +64,7 @@ class Cli(ap.Cli):
|
|
64
64
|
|
65
65
|
_GITHUB_PAT = re.compile(r'((http(s)?://)?(www\./)?github(\.com)?/)?(?P<user>[^/.]+)/(?P<repo>[^/.]+)(/.*)?')
|
66
66
|
|
67
|
-
@ap.
|
67
|
+
@ap.cmd(
|
68
68
|
ap.arg('repo'),
|
69
69
|
ap.arg('args', nargs=ap.REMAINDER),
|
70
70
|
accepts_unknown=True,
|
@@ -107,7 +107,7 @@ class Cli(ap.Cli):
|
|
107
107
|
finally:
|
108
108
|
print(out_dir)
|
109
109
|
|
110
|
-
@ap.
|
110
|
+
@ap.cmd(
|
111
111
|
ap.arg('rev', nargs='?', default='HEAD'),
|
112
112
|
ap.arg('-d', '--diff', action='store_true'),
|
113
113
|
ap.arg('-s', '--stat', action='store_true'),
|
@@ -147,7 +147,7 @@ class Cli(ap.Cli):
|
|
147
147
|
else:
|
148
148
|
print(base_rev)
|
149
149
|
|
150
|
-
@ap.
|
150
|
+
@ap.cmd(
|
151
151
|
ap.arg('-v', '--verbose', action='store_true'),
|
152
152
|
)
|
153
153
|
def status(self) -> None:
|
@@ -184,7 +184,7 @@ class Cli(ap.Cli):
|
|
184
184
|
|
185
185
|
# Lazy helpers
|
186
186
|
|
187
|
-
@ap.
|
187
|
+
@ap.cmd(
|
188
188
|
ap.arg('-m', '--message', nargs='?'),
|
189
189
|
ap.arg('--time-fmt', default='%Y-%m-%dT%H:%M:%SZ'),
|
190
190
|
aliases=['acp'],
|
@@ -204,7 +204,7 @@ class Cli(ap.Cli):
|
|
204
204
|
|
205
205
|
subprocess.check_call(['git', 'push'])
|
206
206
|
|
207
|
-
@ap.
|
207
|
+
@ap.cmd(
|
208
208
|
aliases=['psu'],
|
209
209
|
)
|
210
210
|
def pull_submodule_update(self) -> None:
|