summaryrefslogtreecommitdiffstats
path: root/sploit/util/cmd.py
diff options
context:
space:
mode:
authorMalfurious <m@lfurio.us>2025-01-01 06:51:10 -0500
committerMalfurious <m@lfurio.us>2025-01-01 06:51:10 -0500
commitf01ec45e773291c3659a1dcaf8cd9a51ece19823 (patch)
tree0db3ef432a6f3b06c07060bdb0dd61c7fd164ad2 /sploit/util/cmd.py
parent3f5532857807d628a5dadaf5c30a384f873878ea (diff)
parent221742f7c5c89dc50ec4374bed5d2ccc0d7534bf (diff)
downloadnsploit-f01ec45e773291c3659a1dcaf8cd9a51ece19823.tar.gz
nsploit-f01ec45e773291c3659a1dcaf8cd9a51ece19823.zip
Merge branch 'pkg-reorg'
This branch is a rework of nsploit's intended package imports. User scripts need only import a given nsploit subpackage to obtain that package's full collection of classes, functions, etc. This is the new intended style for exploit scripts. Along the way, some modules are reorganized into different packages, the "builder" package is renamed to "payload", and some unnecessary files are consolidated. * pkg-reorg: main: Automatically provide top-level sploit modules to user scripts sploit: Expose modules' contents through package Remove extra "main.py" file comm: Promote from module to package log: Move to sploit.util package util: Promote from module to package builder: Rename package to payload and expose contents rev: Expose modules' contents through package Remove outer __init__.py file
Diffstat (limited to 'sploit/util/cmd.py')
-rw-r--r--sploit/util/cmd.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/sploit/util/cmd.py b/sploit/util/cmd.py
new file mode 100644
index 0000000..3a2b842
--- /dev/null
+++ b/sploit/util/cmd.py
@@ -0,0 +1,26 @@
+from os import path
+from subprocess import run
+
+def run_cmd(cmd,cwd=None):
+ return run(cmd,cwd=cwd,capture_output=True,text=True,check=True).stdout.split('\n')[:-1]
+
+__RUN_CACHE__ = {}
+def run_cmd_cached(cmd,cwd=None):
+ key = ''.join(cmd)
+ if key in __RUN_CACHE__:
+ return __RUN_CACHE__[key]
+ else:
+ result = run_cmd(cmd,cwd)
+ __RUN_CACHE__[key] = result
+ return result
+
+#try to get the version through git
+def git_version():
+ try:
+ cwd = path.dirname(path.realpath(__file__))
+ version = run_cmd(["git","describe","--always","--first-parent","--dirty"],cwd=cwd)[0]
+ #PEP440 compliance
+ version = version.replace('-','+',1).replace('-','.')
+ return version
+ except:
+ return "0+unknown.version"