#! /usr/bin/env python

import os
import pathlib
import re

import waves

# Add build directory CLI arg
AddOption(
    "--build-dir",
    dest="build_dir",
    default="build",
    nargs=1,
    type="string",
    action="store",
    metavar="DIR",
    help="SCons build (variant) root directory. Relative or absolute path. (default: '%default')"
)

# Inherit user's full environment
env = Environment(
    ENV=os.environ.copy(),
    build_dir=GetOption('build_dir')
)

# Always copy (no sym-links) when duplicating
env.SetOption('duplicate', 'copy')

# Empty defaults list to avoid building all simulation targets by default
env.Default()

# Find required programs for conditional target ignoring and absolute path for use in target actions
env['abaqus'] = waves.scons_extensions.add_program(["/apps/abaqus/Commands/abq2022", "abq2022"], env)

# Add WAVES builders
env.Append(BUILDERS={
    'AbaqusJournal': waves.scons_extensions.abaqus_journal(program=env['abaqus']),
    'AbaqusSolver': waves.scons_extensions.abaqus_solver(program=env['abaqus'])
})

# Abaqus input file implicit dependency scanner
env.Append(SCANNERS=waves.scons_extensions.abaqus_input_scanner())

# Call SConscript file
SConscript('SConscript', variant_dir=env['build_dir'], exports='env', duplicate=True)

# List all aliases in help message.
# This must come *after* all expected Alias definitions and SConscript files.
waves.scons_extensions.project_help_message()
