"""The SConstruct file"""

import os
import sys
import innosetup

sys.path.insert(0, os.path.abspath('../..'))

from defines import Defines


AddOption(
    '--arch',
    dest='arch',
    nargs=1,
    action='store',
    choices=('all', 'x86', 'amd64'),
    default='all',
    help='The architecture to build the packages for.',
)

env = Environment()
innosetup.generate(env)

defines = Defines()
installers = []


def build_for_arch(arch):
    TAP_SETUP_TEMPLATE = '../../install/{}/Release/bin/tap-setup.exe'

    iscc_defines = {
        'NAME': 'freelan',
        'PRODUCT_NAME': "FreeLAN",
        'VERSION': '.'.join(map(str, (
            defines.version.major,
            defines.version.minor,
            defines.version.patch
        ))),
        'ARCH': arch,
        'XARCH': 'x64' if arch == 'amd64' else 'x86',
        'TAP_SETUP': TAP_SETUP_TEMPLATE.format(
            'x64' if arch == 'amd64' else 'x86'
        ),
    }

    return env.INNOSetup(source='freelan.iss', ISCC_DEFINES=iscc_defines)

arch = GetOption('arch')

if arch == 'all':
    for arch in ('x86', 'amd64'):
        installers.append(build_for_arch(arch))
else:
    installers.append(build_for_arch(arch))

env.Default(installers)
