#!/usr/bin/env python2

import sys
import os
import argparse

HERE=os.path.join(os.path.dirname(__file__)
sys.path.insert(0, HERE, ".."))
import paella

os.environ["PYTHONWARNINGS"] = 'ignore:DEPRECATION::pip._internal.cli.base_command'

#----------------------------------------------------------------------------------------------

class RedisSetup(paella.Setup):
    def __init__(self, nop=False):
        paella.Setup.__init__(self, nop)

    def common_first(self):
        pass

    def debian_compat(self):
        # https://chilts.org/installing-redis-from-chris-leas-ppa/
        self.add_repo("ppa:chris-lea/redis-server")
        self.install("redis-server")
        # if not removed, might break apt-get update
        self.run("add-apt-repository -r -y ppa:chris-lea/redis-server")

    def redhat_compat(self):
        # https://linuxize.com/post/how-to-install-and-configure-redis-on-centos-7/
        self.install("epel-release yum-utils")

        self.install("http://rpms.remirepo.net/enterprise/remi-release-7.rpm")
        self.run("yum-config-manager -y --enable remi")
        self.install("redis")

    def fedora(self):
        self.install("dnf-plugins-core")
        
        self.install("https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm")
        self.install("--allowerasing https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm")
        # self.install("epel-release")
        self.install("http://rpms.remirepo.net/enterprise/remi-release-7.rpm")
        self.run("dnf config-manager -y --set-enabled remi")
        self.install("redis")

    def macosx(self):
        self.install("redis")

    def common_last(self):
        pass

#----------------------------------------------------------------------------------------------

class RedisSourceSetup(paella.Setup):
    def __init__(self, nop=False):
        paella.Setup.__init__(self, nop)

    def common_first(self):
        pass

    def debian_compat(self):
        self.install("build-essential")

    def redhat_compat(self):
        self.group_install("'Development Tools'")

    def fedora(self):
        self.group_install("'Development Tools'")

    def macosx(self):
        if sh('xcode-select -p') == '':
            fatal("Xcode tools are not installed. Please run xcode-select --install.")

    def common_last(self):
        self.run("cd /tmp; git clone https://github.com/antirez/redis.git --branch 5.0")
        self.run("cd /tmp/redis && make -j $({}/nproc) && make install".format(HERE))

#----------------------------------------------------------------------------------------------

parser = argparse.ArgumentParser(description='Set up system for build.')
parser.add_argument('-n', '--nop', action="store_true", help='no operation')
parser.add_argument('-s', '--source', action="store_true", help="Build from source")
args = parser.parse_args()

if args.source:
    RedisSourceSetup(nop = args.nop).setup()
else:
    RedisSetup(nop = args.nop).setup()
