mirror of
https://github.com/GNS3/gns3-web-ui.git
synced 2025-04-25 21:40:03 +00:00
Download PuTTY from external URL, Ref: #368
This commit is contained in:
parent
55ff72e7e2
commit
c5b783c722
@ -40,6 +40,7 @@ SOURCE_DESTINATION = os.path.join(WORKING_DIR, 'source')
|
|||||||
BINARIES_EXTENSION = platform.system() == "Windows" and ".exe" or ""
|
BINARIES_EXTENSION = platform.system() == "Windows" and ".exe" or ""
|
||||||
DEPENDENCIES = {
|
DEPENDENCIES = {
|
||||||
'ubridge': {
|
'ubridge': {
|
||||||
|
'type': 'github',
|
||||||
'releases': 'https://api.github.com/repos/GNS3/ubridge/releases',
|
'releases': 'https://api.github.com/repos/GNS3/ubridge/releases',
|
||||||
'version': 'LATEST',
|
'version': 'LATEST',
|
||||||
'files': {
|
'files': {
|
||||||
@ -50,6 +51,7 @@ DEPENDENCIES = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
'vpcs': {
|
'vpcs': {
|
||||||
|
'type': 'github',
|
||||||
'releases': 'https://api.github.com/repos/GNS3/vpcs/releases',
|
'releases': 'https://api.github.com/repos/GNS3/vpcs/releases',
|
||||||
'version': '0.6.1',
|
'version': '0.6.1',
|
||||||
'files': {
|
'files': {
|
||||||
@ -60,6 +62,7 @@ DEPENDENCIES = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
'dynamips': {
|
'dynamips': {
|
||||||
|
'type': 'github',
|
||||||
'releases': 'https://api.github.com/repos/GNS3/dynamips/releases',
|
'releases': 'https://api.github.com/repos/GNS3/dynamips/releases',
|
||||||
'version': '0.2.17',
|
'version': '0.2.17',
|
||||||
'files': {
|
'files': {
|
||||||
@ -69,6 +72,16 @@ DEPENDENCIES = {
|
|||||||
'nvram_export.exe'
|
'nvram_export.exe'
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
'putty': {
|
||||||
|
'type': 'http',
|
||||||
|
'url': 'https://the.earth.li/~sgtatham/putty/{version}/w64/putty.exe',
|
||||||
|
'version': '0.71',
|
||||||
|
'files': {
|
||||||
|
'windows': [
|
||||||
|
'putty.exe',
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,31 +126,54 @@ def prepare():
|
|||||||
os.makedirs(WORKING_DIR, exist_ok=True)
|
os.makedirs(WORKING_DIR, exist_ok=True)
|
||||||
|
|
||||||
|
|
||||||
|
def download_from_github(name, definition, output_directory):
|
||||||
|
response = requests.get(definition['releases'])
|
||||||
|
response.raise_for_status()
|
||||||
|
releases = response.json()
|
||||||
|
|
||||||
|
if definition['version'] == 'LATEST':
|
||||||
|
release = releases[0]
|
||||||
|
else:
|
||||||
|
release = list(filter(lambda x: x['tag_name'] == "v{}".format(definition['version']), releases))[0]
|
||||||
|
|
||||||
|
dependency_dir = os.path.join(output_directory, name)
|
||||||
|
os.makedirs(dependency_dir, exist_ok=True)
|
||||||
|
|
||||||
|
files = []
|
||||||
|
if platform.system() == "Windows":
|
||||||
|
files = definition['files']['windows']
|
||||||
|
|
||||||
|
for filename in files:
|
||||||
|
dependency_file = os.path.join(dependency_dir, filename)
|
||||||
|
dependency_url = list(filter(lambda x: x['name'] == filename, release['assets']))[0]['browser_download_url']
|
||||||
|
download(dependency_url, dependency_file)
|
||||||
|
print('Downloaded {} to {}'.format(filename, dependency_file))
|
||||||
|
|
||||||
|
|
||||||
|
def download_from_http(name, definition, output_directory):
|
||||||
|
url = definition['url'].format(version=definition['version'])
|
||||||
|
|
||||||
|
dependency_dir = os.path.join(output_directory, name)
|
||||||
|
os.makedirs(dependency_dir, exist_ok=True)
|
||||||
|
|
||||||
|
files = []
|
||||||
|
if platform.system() == "Windows":
|
||||||
|
files = definition['files']['windows']
|
||||||
|
|
||||||
|
for filename in files:
|
||||||
|
dependency_file = os.path.join(dependency_dir, filename)
|
||||||
|
download(url, dependency_file)
|
||||||
|
print('Downloaded {} to {}'.format(filename, dependency_file))
|
||||||
|
|
||||||
|
|
||||||
def download_dependencies_command(arguments):
|
def download_dependencies_command(arguments):
|
||||||
output_directory = os.path.join(os.getcwd(), arguments.b)
|
output_directory = os.path.join(os.getcwd(), arguments.b)
|
||||||
|
|
||||||
for name, definition in DEPENDENCIES.items():
|
for name, definition in DEPENDENCIES.items():
|
||||||
response = requests.get(definition['releases'])
|
if definition['type'] == 'github':
|
||||||
response.raise_for_status()
|
download_from_github(name, definition, output_directory)
|
||||||
releases = response.json()
|
if definition['type'] == 'http':
|
||||||
|
download_from_http(name, definition, output_directory)
|
||||||
if definition['version'] == 'LATEST':
|
|
||||||
release = releases[0]
|
|
||||||
else:
|
|
||||||
release = list(filter(lambda x: x['tag_name'] == "v{}".format(definition['version']), releases))[0]
|
|
||||||
|
|
||||||
dependency_dir = os.path.join(output_directory, name)
|
|
||||||
os.makedirs(dependency_dir, exist_ok=True)
|
|
||||||
|
|
||||||
files = []
|
|
||||||
if platform.system() == "Windows":
|
|
||||||
files = definition['files']['windows']
|
|
||||||
|
|
||||||
for filename in files:
|
|
||||||
dependency_file = os.path.join(dependency_dir, filename)
|
|
||||||
dependency_url = list(filter(lambda x: x['name'] == filename, release['assets']))[0]['browser_download_url']
|
|
||||||
download(dependency_url, dependency_file)
|
|
||||||
print('Downloaded {} to {}'.format(filename, dependency_file))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user