93 lines
2.1 KiB
Python
93 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
import os
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
import time
|
|
import zipfile
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
from shiv.bootstrap import Environment
|
|
|
|
# from distutils.ccompiler import new_compiler
|
|
from shiv.builder import create_archive
|
|
from shiv.cli import __version__ as VERSION
|
|
|
|
def build_cme():
|
|
print("building CME")
|
|
try:
|
|
shutil.rmtree("bin")
|
|
shutil.rmtree("build")
|
|
except Exception as e:
|
|
pass
|
|
|
|
try:
|
|
print("remove useless files")
|
|
os.mkdir("build")
|
|
os.mkdir("bin")
|
|
shutil.copytree("cme", "build/cme")
|
|
|
|
except Exception as e:
|
|
print(e)
|
|
return
|
|
|
|
subprocess.run(
|
|
[sys.executable, "-m", "pip", "install", "-r", "requirements.txt" ,"-t", "build"],
|
|
check=True
|
|
)
|
|
|
|
#[shutil.rmtree(p) for p in Path("build").glob("**/__pycache__")]
|
|
[shutil.rmtree(p) for p in Path("build").glob("**/*.dist-info")]
|
|
|
|
env = Environment(
|
|
built_at=datetime.utcfromtimestamp(int(time.time())).strftime(
|
|
"%Y-%m-%d %H:%M:%S"
|
|
),
|
|
entry_point="cme.crackmapexec:main",
|
|
script=None,
|
|
compile_pyc=False,
|
|
extend_pythonpath=True,
|
|
shiv_version=VERSION,
|
|
)
|
|
create_archive(
|
|
[Path("build").absolute()],
|
|
Path("bin/cme"),
|
|
"/usr/bin/env -S python -sE",
|
|
"_bootstrap:bootstrap",
|
|
env,
|
|
True,
|
|
)
|
|
|
|
def build_cmedb():
|
|
print("building CMEDB")
|
|
env = Environment(
|
|
built_at=datetime.utcfromtimestamp(int(time.time())).strftime(
|
|
"%Y-%m-%d %H:%M:%S"
|
|
),
|
|
entry_point="cme.cmedb:main",
|
|
script=None,
|
|
compile_pyc=False,
|
|
extend_pythonpath=True,
|
|
shiv_version=VERSION,
|
|
)
|
|
create_archive(
|
|
[Path("build").absolute()],
|
|
Path("bin/cmedb"),
|
|
"/usr/bin/env -S python -sE",
|
|
"_bootstrap:bootstrap",
|
|
env,
|
|
True,
|
|
)
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
build_cme()
|
|
build_cmedb()
|
|
except:
|
|
pass
|
|
finally:
|
|
shutil.rmtree("build")
|