[DOC]: Feature: cmdrun scripts (#4514)
* initialise cmdrun script dir * initialise api_targets_config * initialise api_targets * first version of argparser cli * create a token api stats table * add format function * initiate nym_vpn command * add github to get api url * add github api to config * create nym_vpn releases dataframe * menu headers tweak
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
#
|
||||
# Summary
|
||||
|
||||
- [Introduction](introduction.md)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#
|
||||
# Summary
|
||||
[Introduction](introduction.md)
|
||||
|
||||
@@ -14,7 +15,7 @@
|
||||
<!-- - [Version Compatibility Table](binaries/version-compatiblity.md) -->
|
||||
|
||||
# Nodes
|
||||
- [Node Types (Previously Setup Guides)](nodes/overview.md)
|
||||
- [Node Types (Previously Setup Guides)](nodes/overview.md)
|
||||
- [Mix Node](nodes/mixnode.md)
|
||||
- [Gateway](nodes/gateway.md)
|
||||
- [Network Requester](nodes/network-requester.md)
|
||||
@@ -56,7 +57,7 @@
|
||||
- [Mixnet Explorer](explorers/mixnet-explorer.md)
|
||||
|
||||
# Nyx Blockchain
|
||||
- [Interacting with Nyx Chain and Smart Contracts](nyx/interacting-with-chain.md)
|
||||
- [Interacting with Nyx Chain and Smart Contracts](nyx/interacting-with-chain.md)
|
||||
- [Smart Contracts](nyx/smart-contracts.md)
|
||||
- [Mixnet Contract](nyx/mixnet-contract.md)
|
||||
- [Vesting Contract](nyx/vesting-contract.md)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#
|
||||
# Summary
|
||||
|
||||
- [Introduction](introduction.md)
|
||||
@@ -28,6 +29,11 @@
|
||||
- [ExploreNYM scripts](testing/explorenym-scripts.md)
|
||||
<!-- - [Run in a Docker](testing/docker-monitor.md) -->
|
||||
- [Troubleshooting](nodes/troubleshooting.md)
|
||||
<!--
|
||||
- [Nym Nodes]()
|
||||
- [Validators]
|
||||
- [Binary]
|
||||
-->
|
||||
|
||||
# Token Economics
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# cmdrun scripts
|
||||
|
||||
A place for all scripts used for `mdbook-cmdrun` to auto-fill the pages with up todate info, syntax and command outputs.
|
||||
@@ -0,0 +1,182 @@
|
||||
import argparse
|
||||
import os
|
||||
import requests
|
||||
import json
|
||||
import sys
|
||||
import pandas as pd
|
||||
from collections import namedtuple
|
||||
|
||||
############################################
|
||||
############## GENERAL FNs #################
|
||||
############################################
|
||||
|
||||
def get_url(args):
|
||||
config_file = "./api_targets_config.json"
|
||||
with open(config_file, "r") as f:
|
||||
config = json.load(f)
|
||||
env = args.api
|
||||
endpoint = args.endpoint
|
||||
if env == "github":
|
||||
url = f"{config[env]}/{endpoint}"
|
||||
else:
|
||||
url = f"{config[env]}/api/v1/{endpoint}"
|
||||
return url
|
||||
|
||||
def subparser_read(args):
|
||||
url = get_url(args)
|
||||
r = requests.get(url)
|
||||
response = r.json()
|
||||
return response
|
||||
|
||||
############################################
|
||||
########### NYX RELATED FNs ################
|
||||
############################################
|
||||
|
||||
def convert_u_nym(unym):
|
||||
unym = int(unym)
|
||||
nym = unym / 1000000
|
||||
nym = int(nym)
|
||||
return nym
|
||||
|
||||
def thousand_separator(n):
|
||||
n = f'{n:_}'
|
||||
return n
|
||||
|
||||
def remove_underscore(arg):
|
||||
string = arg.replace("_", " ")
|
||||
string = string.title()
|
||||
return string
|
||||
|
||||
def display_supply_table(response, args):
|
||||
df = pd.DataFrame(response)
|
||||
df = df.T
|
||||
del df['denom']
|
||||
# df.set_axis(['**Item**', '**Amount in NYM**'], axis=1, inplace=True)
|
||||
df = df.rename_axis('index1').reset_index()
|
||||
df = df.rename(columns={'index1': '**Item**', 'amount': '**Amount in NYM**'})
|
||||
df['**Item**'] = df['**Item**'].apply(remove_underscore)
|
||||
df['**Amount in NYM**'] = df['**Amount in NYM**'].apply(convert_u_nym)
|
||||
df['**Amount in NYM**'] = df['**Amount in NYM**'].apply(thousand_separator)
|
||||
table = df.to_markdown(index=False)
|
||||
print(table)
|
||||
|
||||
def read_supply(args):
|
||||
response = subparser_read(args)
|
||||
if args.endpoint == "circulating-supply":
|
||||
if args.format:
|
||||
display_supply_table(response, args)
|
||||
else:
|
||||
print(response)
|
||||
elif args.endpoint == "foo":
|
||||
# placeholder for other endpoint args
|
||||
pass
|
||||
else:
|
||||
# placeholder for other endpoint args
|
||||
pass
|
||||
|
||||
###########################################
|
||||
############ GH RELATED FNs ###############
|
||||
###########################################
|
||||
|
||||
def get_nym_vpn_version(args):
|
||||
response = subparser_read(args)
|
||||
if args.client == "desktop":
|
||||
version = current_desktop_version(args, response)
|
||||
elif args.client == "cli":
|
||||
version = current_cli_version(args, response)
|
||||
else:
|
||||
print("Incorrect argument for -c, --client")
|
||||
sys.exit(-1)
|
||||
|
||||
def current_cli_version(args, response):
|
||||
df = pd.DataFrame(response)
|
||||
print(df)
|
||||
|
||||
# NEEDS THIS IN PYTHON:
|
||||
# current_cli_version=$(curl -s $release_url | jq -r '.[].tag_name' | grep '^nym-vpn-cli-v' | sort -Vr | head -n 1 | awk -F'-v' '{print $NF}')
|
||||
|
||||
|
||||
def current_desktop_version(args, response):
|
||||
# NEEDS THIS IN PYTHON:
|
||||
df = pd.DataFrame(response)
|
||||
print(df)
|
||||
# version=$(curl -s $release_url | jq -r '.[].tag_name' | grep '^nym-vpn-desktop-v' | sort -Vr | head -n 1 | awk -F'-v' '{print $NF}')
|
||||
|
||||
|
||||
###########################################
|
||||
############### MAIN PARSER ###############
|
||||
###########################################
|
||||
|
||||
def parser_main():
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="Nym API scraper",
|
||||
description='''Get any live data from Nyx validator''',
|
||||
epilog=''
|
||||
)
|
||||
subparsers = parser.add_subparsers(help="")
|
||||
parser_supply = subparsers.add_parser('supply',
|
||||
help='reads API on supply',
|
||||
aliases=['s','S']
|
||||
)
|
||||
|
||||
parser_supply.add_argument(
|
||||
"-a","--api",
|
||||
type=str,
|
||||
default="mainnet",
|
||||
help="choose: mainnet, perf, sandbox"
|
||||
)
|
||||
parser_supply.add_argument(
|
||||
"-e","--endpoint",
|
||||
type=str,
|
||||
help="choose from: https://validator.nymtech.net/api/swagger/index.html"
|
||||
)
|
||||
parser_supply.add_argument(
|
||||
"-f","--format",
|
||||
action="store_true",
|
||||
help="format the output for documentation purpose (.md) - default: False (raw output)",
|
||||
)
|
||||
|
||||
parser_supply.set_defaults(func=read_supply)
|
||||
|
||||
|
||||
parser_nym_vpn = subparsers.add_parser('nym_vpn',
|
||||
help='reads NymVPN latest version',
|
||||
aliases=['n','N']
|
||||
)
|
||||
|
||||
parser_nym_vpn.add_argument(
|
||||
"-c","--client",
|
||||
type=str,
|
||||
default="desktop",
|
||||
help="choose: desktop, cli - default: desktop"
|
||||
)
|
||||
|
||||
parser_nym_vpn.add_argument(
|
||||
"-a","--api",
|
||||
type=str,
|
||||
default="github",
|
||||
help="choose: mainnet, perf, sandbox"
|
||||
)
|
||||
|
||||
parser_nym_vpn.add_argument(
|
||||
"-e","--endpoint",
|
||||
type=str,
|
||||
help="add the url suffix",
|
||||
default="repos/nymtech/nym-vpn-client/releases"
|
||||
)
|
||||
|
||||
|
||||
parser_nym_vpn.set_defaults(func=get_nym_vpn_version)
|
||||
|
||||
args = parser.parse_args()
|
||||
try:
|
||||
args.func(args)
|
||||
except AttributeError as e:
|
||||
print("Error on argparser")
|
||||
sys.exit(-1)
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser_main()
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"sandbox": "https://sandbox-nym-api1.nymtech.net",
|
||||
"perf": "https://api.performance.nymte.ch",
|
||||
"mainnet": "https://validator.nymtech.net",
|
||||
"github": "https://api.github.com"
|
||||
}
|
||||
Reference in New Issue
Block a user