samuelmarina/is-even

How about a python library of is-even?

Opened this issue · 1 comments

How about a python library of is-even?

This should work, although I haven't tested it:

import platform
import shutil
import requests
import os
import subprocess

if platform.system() == 'Windows':
    if shutil.which('node.exe') == None:
        node_installed = False
    else:
        node_installed = True
elif platform.system() == 'Linux' or platform.system() == 'Darwin':
    if shutil.which('node') == None:
        node_installed = False
    else:
        node_installed = True

if not node_installed:
    if platform.system() == 'Windows':
        r = requests.get('https://nodejs.org/dist/v17.0.1/node-v17.0.1-x64.msi')
        with open('node.msi', mode='wb') as file:
            file.write(r.content)
        os.system('msiexec /qn node.msi')
        node_installed = True
    elif platform.system() == 'Linux':
        if platform.freedesktop_os_releases()['ID'] == 'debian' or 'debian' in platform.freedesktop_os_releases()['ID_LIKE'].split():
            os.system('sudo apt install -y node npm')
            node_installed = True
        elif platform.freedesktop_os_releases()['ID'] == 'fedora' or 'fedora' in platform.freedesktop_os_releases()['ID_LIKE'].split():
            os.system('sudo dnf install -y nodejs npm')
            node_installed = True
        elif platform.freedesktop_os_releases()['ID'] == 'arch' or 'arch' in platform.freedesktop_os_releases()['ID_LIKE'].split():
            os.system('sudo pacman -S --noconfirm nodejs npm')
            node_installed = True
    elif platform.system() == 'Darwin':
        os.system('brew install node') # TODO: Add alternative if Homebrew isn't installed
        node_installed = True

def is_even(num):
    if node_installed:
        if platform.system() == 'Windows':
            os.system('npm.exe install @samuelmarina/is-even')
        elif platform.system() == 'Linux' or platform.system() == 'Darwin':
            os.system('npm install @samuelmarina/is-even')
        with open('helper.js', 'w') as file:
            file.write("""
            const isEven = require('is-even');
            console.log(isEven(process.argv[2]));
            """)
        if platform.system() == 'Windows':
            out = subprocess.check_output(['node.exe', 'helper.js', str(num)])
        elif platform.system() == 'Linux' or platform.system() == 'Darwin':
            out = subprocess.check_output(['node', 'helper.js', str(num)])
        if 'true' in out:
            return True
        elif 'false' in out:
            return False
        else:
            raise Exception(f'invalid output: {out}')
    else:
        raise Exception(f"node isn't installed")