106 lines
2.3 KiB
Python
106 lines
2.3 KiB
Python
import os
|
|
import pathlib
|
|
import shutil
|
|
import subprocess
|
|
import tempfile
|
|
import urllib.request
|
|
|
|
|
|
ODBC_INI_CONTENTS = """
|
|
[snowflake]
|
|
Description=SnowflakeDB
|
|
Driver=SnowflakeDSIIDriver
|
|
Locale=en-US
|
|
PORT=443
|
|
SSL=on
|
|
|
|
[ODBC Data Sources]
|
|
snowflake = SnowflakeDSIIDriver
|
|
"""
|
|
|
|
|
|
def run(*args):
|
|
subprocess.run(args, check=True)
|
|
|
|
|
|
def install_packages():
|
|
packages = [
|
|
"atop",
|
|
"fish",
|
|
"htop",
|
|
"java-common",
|
|
"odbcinst",
|
|
"unixodbc",
|
|
"unixodbc-dev",
|
|
"wget",
|
|
]
|
|
|
|
run("sudo", "apt", "update")
|
|
run("sudo", "apt", "install", "-y", *packages)
|
|
|
|
|
|
def change_shell():
|
|
run("sudo", "chsh", "-s", "/usr/bin/fish", os.environ["USER"])
|
|
run("/usr/bin/fish", "./setup.fish")
|
|
|
|
|
|
def configure_git():
|
|
run("git", "config", "--global", "include.path", ".gitconfig.shared")
|
|
|
|
|
|
def backup_pip():
|
|
pip = pathlib.Path.home() / ".config" / "pip"
|
|
pip_bak = pathlib.Path.home() / ".config" / "pip.bak"
|
|
if pip_bak.exists():
|
|
print("Removing stray backup directory...")
|
|
shutil.rmtree(pip_bak)
|
|
|
|
if pip.exists():
|
|
pip.rename(pip_bak)
|
|
|
|
|
|
def restore_pip():
|
|
pip = pathlib.Path.home() / ".config" / "pip"
|
|
pip_bak = pathlib.Path.home() / ".config" / "pip.bak"
|
|
if pip_bak.exists():
|
|
pip_bak.rename(pip)
|
|
|
|
|
|
def configure_python():
|
|
backup_pip()
|
|
try:
|
|
run("python3", "-m", "pip", "install", "--user", "pipx")
|
|
run("python3", "-m", "pipx", "ensurepath")
|
|
run("/home/coder/.local/bin/pipx", "install", "poetry")
|
|
run("sudo", "npm", "install", "-g", "prettier", "pyright")
|
|
finally:
|
|
restore_pip()
|
|
|
|
|
|
def install_snowflake_odbc():
|
|
with tempfile.NamedTemporaryFile() as deb_file:
|
|
urllib.request.urlretrieve(
|
|
"https://sfc-repo.snowflakecomputing.com/odbc/linux/3.1.0/snowflake-odbc-3.1.0.x86_64.deb",
|
|
deb_file.name,
|
|
)
|
|
run("sudo", "dpkg", "-i", deb_file.name)
|
|
|
|
subprocess.run(
|
|
["sudo", "sh", "-c", "cat > /etc/odbc.ini"],
|
|
input=ODBC_INI_CONTENTS.encode("utf-8"),
|
|
check=True,
|
|
)
|
|
run(
|
|
"sudo",
|
|
"ln",
|
|
"-s",
|
|
"/usr/lib/x86_64-linux-gnu/libodbcinst.so.2",
|
|
"/usr/lib/x86_64-linux-gnu/libodbcinst.so.1",
|
|
)
|
|
|
|
|
|
install_packages()
|
|
change_shell()
|
|
configure_git()
|
|
configure_python()
|
|
install_snowflake_odbc()
|