diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2018-09-05 23:45:55 -0400 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2018-09-06 10:22:15 -0400 |
commit | 7784b0e17e2d54fd130e274bdb3aba4a2d1b2e9a (patch) | |
tree | 5a593878d2a4820e45e518c46e8cf4179a2c0a97 /tools/install.py | |
parent | 59f3fca166e7d3bd3095f9df0f7040defe3239e1 (diff) |
Move installer to its own repo.
https://github.com/denoland/deno_install
1. This allows the installer to use a more aggressive CI build matrix
with different version of python.
2. Running the installer during tools/test.py artificially inflates our
download stats.
3. Running the installer during tools/test.py makes the test script
dependent on having an internet connection.
4. Running the installer during tools/test.py introduces a race
condition during release - where it tries and fails to download the
latest release in build process that should be uploading that release.
Diffstat (limited to 'tools/install.py')
-rwxr-xr-x | tools/install.py | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/tools/install.py b/tools/install.py deleted file mode 100755 index 81036d199..000000000 --- a/tools/install.py +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env python -# Copyright 2018 the Deno authors. All rights reserved. MIT license. -from __future__ import print_function - -import io -import json -import os -import re -import shutil -import sys -import tempfile -import zipfile -import zlib - -try: - from urllib.request import urlopen -except ImportError: - from urllib2 import urlopen - -RELEASES_URL = "https://github.com/denoland/deno/releases/latest" -FILENAME_LOOKUP = { - "darwin": "deno_osx_x64.gz", - "linux": "deno_linux_x64.gz", # python3 - "linux2": "deno_linux_x64.gz", # python2 - "win32": "deno_win_x64.zip", - "cygwin": "deno_win_x64.zip" -} - - -def release_url(platform): - try: - filename = FILENAME_LOOKUP[platform] - except KeyError: - print("Unable to locate appropriate filename for", platform) - sys.exit(1) - - html = urlopen(RELEASES_URL).read().decode('utf-8') - urls = re.findall(r'href=[\'"]?([^\'" >]+)', html) - matching = [u for u in urls if filename in u] - - if len(matching) != 1: - print("Unable to find download url for", filename) - sys.exit(1) - - return "https://github.com" + matching[0] - - -def main(): - bin_dir = deno_bin_dir() - exe_fn = os.path.join(bin_dir, "deno") - - url = release_url(sys.platform) - print("Downloading", url) - compressed = urlopen(url).read() - - if url.endswith(".zip"): - with zipfile.ZipFile(io.BytesIO(compressed), 'r') as z: - with open(exe_fn, 'wb+') as exe: - exe.write(z.read('deno.exe')) - else: - # Note: gzip.decompress is not available in python2. - content = zlib.decompress(compressed, 15 + 32) - with open(exe_fn, 'wb+') as exe: - exe.write(content) - os.chmod(exe_fn, 0o744) - - print("DENO_EXE: " + exe_fn) - print("Now manually add %s to your $PATH" % bin_dir) - print("Example:") - print() - print(" echo export PATH=\"%s\":\\$PATH >> $HOME/.bash_profile" % bin_dir) - print() - - -def mkdir(d): - if not os.path.exists(d): - print("mkdir", d) - os.mkdir(d) - - -def deno_bin_dir(): - home = os.path.expanduser("~") - deno = os.path.join(home, ".deno") - mkdir(deno) - deno_bin = os.path.join(deno, "bin") - mkdir(deno_bin) - return deno_bin - - -if __name__ == '__main__': - main() |