mirror of
https://github.com/soxoj/maigret.git
synced 2026-08-17 19:25:41 +02:00
78 lines
1.8 KiB
Python
Executable File
78 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import asyncio
|
|
import platform
|
|
import sys
|
|
|
|
import maigret
|
|
|
|
|
|
DOUBLE_CLICK_INTRO = """\
|
|
Maigret runs from the command line. You can:
|
|
|
|
- call it from cmd/PowerShell: maigret_standalone.exe USERNAME [options]
|
|
- or enter a username below for a default search.
|
|
|
|
Full options: maigret_standalone.exe --help
|
|
Documentation: https://maigret.readthedocs.io/
|
|
"""
|
|
|
|
|
|
def _launched_by_double_click() -> bool:
|
|
# On Windows, Explorer spawns a fresh console just for our process, so
|
|
# GetConsoleProcessList returns 1. When launched from an existing cmd /
|
|
# PowerShell session the count is >= 2 (the shell is attached too).
|
|
if platform.system() != "Windows":
|
|
return False
|
|
if len(sys.argv) > 1:
|
|
return False
|
|
try:
|
|
import ctypes
|
|
|
|
buf = (ctypes.c_uint * 4)()
|
|
count = ctypes.windll.kernel32.GetConsoleProcessList(buf, 4)
|
|
return count <= 1
|
|
except Exception:
|
|
return False
|
|
|
|
|
|
def _pause() -> None:
|
|
try:
|
|
input("\nPress Enter to exit...")
|
|
except EOFError:
|
|
pass
|
|
|
|
|
|
def _prompt_for_username() -> str:
|
|
try:
|
|
return input("Username to search: ").strip()
|
|
except (EOFError, KeyboardInterrupt):
|
|
return ""
|
|
|
|
|
|
def main() -> None:
|
|
if not _launched_by_double_click():
|
|
asyncio.run(maigret.cli())
|
|
return
|
|
|
|
print(DOUBLE_CLICK_INTRO)
|
|
username = _prompt_for_username()
|
|
|
|
if not username:
|
|
print(
|
|
"\nNo username entered. Re-run with one, e.g.\n"
|
|
" maigret_standalone.exe alice"
|
|
)
|
|
_pause()
|
|
return
|
|
|
|
# Inject the username so maigret's argparse sees it like a normal CLI run.
|
|
sys.argv = [sys.argv[0], username]
|
|
try:
|
|
asyncio.run(maigret.cli())
|
|
finally:
|
|
_pause()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|