-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmain.py
More file actions
executable file
·41 lines (35 loc) · 1.34 KB
/
main.py
File metadata and controls
executable file
·41 lines (35 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env python3
"""
Example tool for ${REPO_NAME} — realistic sample code (non-destructive).
"""
import argparse, base64, hashlib, sys, json
def encode_b64(s: str) -> str:
return base64.b64encode(s.encode()).decode()
def decode_b64(s: str) -> str:
return base64.b64decode(s.encode()).decode(errors='ignore')
def md5(s: str) -> str:
return hashlib.md5(s.encode()).hexdigest()
def sha256(s: str) -> str:
return hashlib.sha256(s.encode()).hexdigest()
def main():
p = argparse.ArgumentParser(prog="main.py")
p.add_argument("action", choices=["encode","decode","md5","sha256"])
p.add_argument("data", help="string to process")
p.add_argument("--json", action="store_true")
args = p.parse_args()
out = {}
if args.action=="encode":
out={"action":"encode","input":args.data,"output":encode_b64(args.data)}
elif args.action=="decode":
out={"action":"decode","input":args.data,"output":decode_b64(args.data)}
elif args.action=="md5":
out={"action":"md5","input":args.data,"output":md5(args.data)}
elif args.action=="sha256":
out={"action":"sha256","input":args.data,"output":sha256(args.data)}
if args.json:
print(json.dumps(out, ensure_ascii=False, indent=2))
else:
print("Result:", out["output"])
return 0
if __name__=="__main__":
sys.exit(main())