/**
 * Helper script to copy source files to the `import` directory
 *
 * When building druntime, files in `src` are copied to the `import` directory, excluding modules from
 * the `rt` and `gc` packages and a couple more non-public files.
 * On POSIX this is handled by a Makefile rule, however DigitalMars' `make` on Windows has very limited support for
 * custom rules, originally leading to an unhealthy duplication between mak/COPY and mak/WINDOWS,
 * which this script removes.
 */
module copyimports;

import std.array, std.conv, std.file, std.getopt, std.path, std.stdio;
import core.stdc.stdlib;

void main(string[] args)
{
    // DigitalMars make passes long command line through this environment variable _CMDLINE
    if (auto p = getenv("_CMDLINE"))
        args = split(to!string(p));
    else
        args = args[1..$];

    string importPath = absolutePath("import");
    string srcPath = absolutePath("src");
    foreach(file; args)
    {
        string impfile = absolutePath(file);
        string srcfile = buildPath(srcPath, asRelativePath(impfile, importPath).array);
        if (std.file.exists(impfile))
        {
            if (timeLastModified(impfile) >= timeLastModified(srcfile))
                continue;
            writeln("updating ", file);
        }
        else
            writeln("creating ", file);

        mkdirRecurse(dirName(impfile));
        std.file.copy(srcfile, impfile);
    }
}