diff --git a/source/dub/commandline.d b/source/dub/commandline.d index 0a54fc6..d553d8b 100644 --- a/source/dub/commandline.d +++ b/source/dub/commandline.d @@ -751,7 +751,7 @@ this.argumentsPattern = "[]"; this.description = "Removes intermediate build files and cached build results"; this.helpText = [ - "This command removes any cached build files of the given package(s). The final target file, as well as any copyFiles and copyDirs are currently not removed.", + "This command removes any cached build files of the given package(s). The final target file, as well as any copyFiles are currently not removed.", "Without arguments, the package in the current working directory will be cleaned." ]; } diff --git a/source/dub/compilers/buildsettings.d b/source/dub/compilers/buildsettings.d index 8abb3db..f64362f 100644 --- a/source/dub/compilers/buildsettings.d +++ b/source/dub/compilers/buildsettings.d @@ -27,7 +27,6 @@ string[] libs; string[] sourceFiles; string[] copyFiles; - string[] copyDirs; string[] versions; string[] debugVersions; string[] importPaths; @@ -63,7 +62,6 @@ addLibs(bs.libs); addSourceFiles(bs.sourceFiles); addCopyFiles(bs.copyFiles); - addCopyDirs(bs.copyDirs); addVersions(bs.versions); addDebugVersions(bs.debugVersions); addImportPaths(bs.importPaths); @@ -84,7 +82,6 @@ void prependSourceFiles(in string[] value...) { prepend(sourceFiles, value); } void removeSourceFiles(in string[] value...) { removePaths(sourceFiles, value); } void addCopyFiles(in string[] value...) { add(copyFiles, value); } - void addCopyDirs(in string[] value...) { add(copyDirs, value); } void addVersions(in string[] value...) { add(versions, value); } void addDebugVersions(in string[] value...) { add(debugVersions, value); } void addImportPaths(in string[] value...) { add(importPaths, value); } @@ -174,11 +171,10 @@ importPaths = 1<<7, stringImportPaths = 1<<8, options = 1<<9, - copyDirs = 1<<10, none = 0, - commandLine = dflags|copyFiles|copyDirs, + commandLine = dflags|copyFiles, commandLineSeparate = commandLine|lflags, - all = dflags|lflags|libs|sourceFiles|copyFiles|copyDirs|versions|debugVersions|importPaths|stringImportPaths|options, + all = dflags|lflags|libs|sourceFiles|copyFiles|versions|debugVersions|importPaths|stringImportPaths|options, noOptions = all & ~options } diff --git a/source/dub/compilers/dmd.d b/source/dub/compilers/dmd.d index e7e7f42..9f5e65d 100644 --- a/source/dub/compilers/dmd.d +++ b/source/dub/compilers/dmd.d @@ -136,7 +136,6 @@ assert(fields & BuildSetting.dflags); assert(fields & BuildSetting.copyFiles); - assert(fields & BuildSetting.copyDirs); } void extractBuildOptions(ref BuildSettings settings) const diff --git a/source/dub/compilers/gdc.d b/source/dub/compilers/gdc.d index 46fbd7b..e31053f 100644 --- a/source/dub/compilers/gdc.d +++ b/source/dub/compilers/gdc.d @@ -135,7 +135,6 @@ assert(fields & BuildSetting.dflags); assert(fields & BuildSetting.copyFiles); - assert(fields & BuildSetting.copyDirs); } void extractBuildOptions(ref BuildSettings settings) const diff --git a/source/dub/compilers/ldc.d b/source/dub/compilers/ldc.d index 0963394..f75caa8 100644 --- a/source/dub/compilers/ldc.d +++ b/source/dub/compilers/ldc.d @@ -125,7 +125,6 @@ assert(fields & BuildSetting.dflags); assert(fields & BuildSetting.copyFiles); - assert(fields & BuildSetting.copyDirs); } void extractBuildOptions(ref BuildSettings settings) const diff --git a/source/dub/generators/build.d b/source/dub/generators/build.d index 1b74557..e7b057a 100644 --- a/source/dub/generators/build.d +++ b/source/dub/generators/build.d @@ -216,8 +216,6 @@ m_temporaryFiles ~= exe_file_path; foreach (f; buildsettings.copyFiles) m_temporaryFiles ~= Path(buildsettings.targetPath).parentPath ~ Path(f).head; - foreach (f; buildsettings.copyDirs) - m_temporaryFiles ~= Path(buildsettings.targetPath).parentPath ~ Path(f).head; } } @@ -268,8 +266,6 @@ m_temporaryFiles ~= exe_file_path; foreach (f; buildsettings.copyFiles) m_temporaryFiles ~= Path(buildsettings.targetPath).parentPath ~ Path(f).head; - foreach (f; buildsettings.copyDirs) - m_temporaryFiles ~= Path(buildsettings.targetPath).parentPath ~ Path(f).head; } } diff --git a/source/dub/generators/generator.d b/source/dub/generators/generator.d index 261d777..546c2cd 100644 --- a/source/dub/generators/generator.d +++ b/source/dub/generators/generator.d @@ -332,53 +332,6 @@ mkdirRecurse(buildsettings.targetPath); if (buildsettings.copyFiles.length) { - void tryCopyFile(string file) - { - auto src = Path(file); - if (!src.absolute) src = pack_path ~ src; - auto dst = target_path ~ Path(file).head; - if (src == dst) { - logDiagnostic("Skipping copy of %s (same source and destination)", file); - return; - } - logDiagnostic(" %s to %s", src.toNativeString(), dst.toNativeString()); - try { - copyFile(src, dst, true); - } catch(Exception e) logWarn("Failed to copy %s to %s: %s", src.toNativeString(), dst.toNativeString(), e.msg); - } - logInfo("Copying files for %s...", pack); - string[] globs; - foreach (f; buildsettings.copyFiles) - { - if (f.canFind("*", "?") || - (f.canFind("{") && f.balancedParens('{', '}')) || - (f.canFind("[") && f.balancedParens('[', ']'))) - { - globs ~= f; - } - else - { - tryCopyFile(f); - } - } - if (globs.length) // Search all files for glob matches - { - foreach (f; dirEntries(pack_path.toNativeString(), SpanMode.breadth)) - { - foreach (glob; globs) - { - if (f.globMatch(glob)) - { - tryCopyFile(f); - break; - } - } - } - } - } - - if (buildsettings.copyDirs.length) { - void copyFolderRec(Path folder, Path dstfolder) { mkdirRecurse(dstfolder.toNativeString()); @@ -406,14 +359,27 @@ } logDiagnostic(" %s to %s", src.toNativeString(), dst.toNativeString()); try { - // TODO: copy directory copyFolderRec(src, dst); } catch(Exception e) logWarn("Failed to copy %s to %s: %s", src.toNativeString(), dst.toNativeString(), e.msg); } - logInfo("Copying dirs for %s...", pack); + void tryCopyFile(string file) + { + auto src = Path(file); + if (!src.absolute) src = pack_path ~ src; + auto dst = target_path ~ Path(file).head; + if (src == dst) { + logDiagnostic("Skipping copy of %s (same source and destination)", file); + return; + } + logDiagnostic(" %s to %s", src.toNativeString(), dst.toNativeString()); + try { + copyFile(src, dst, true); + } catch(Exception e) logWarn("Failed to copy %s to %s: %s", src.toNativeString(), dst.toNativeString(), e.msg); + } + logInfo("Copying files for %s...", pack); string[] globs; - foreach (f; buildsettings.copyDirs) + foreach (f; buildsettings.copyFiles) { if (f.canFind("*", "?") || (f.canFind("{") && f.balancedParens('{', '}')) || @@ -423,7 +389,10 @@ } else { - tryCopyDir(f); + if (f.isDir) + tryCopyDir(f); + else + tryCopyFile(f); } } if (globs.length) // Search all files for glob matches @@ -434,15 +403,17 @@ { if (f.globMatch(glob)) { - if (!f.isDir) - continue; - tryCopyDir(f); + if (f.isDir) + tryCopyDir(f); + else + tryCopyFile(f); break; } } } } } + } } diff --git a/source/dub/project.d b/source/dub/project.d index 378b3dd..ee2cc78 100644 --- a/source/dub/project.d +++ b/source/dub/project.d @@ -733,7 +733,6 @@ dst.addImportFiles(processVars(project, pack, settings.importFiles, true)); dst.addStringImportFiles(processVars(project, pack, settings.stringImportFiles, true)); dst.addCopyFiles(processVars(project, pack, settings.copyFiles, true)); - dst.addCopyDirs(processVars(project, pack, settings.copyDirs, true)); dst.addVersions(processVars(project, pack, settings.versions)); dst.addDebugVersions(processVars(project, pack, settings.debugVersions)); dst.addImportPaths(processVars(project, pack, settings.importPaths, true)); diff --git a/source/dub/recipe/json.d b/source/dub/recipe/json.d index d686d7e..1e5e013 100644 --- a/source/dub/recipe/json.d +++ b/source/dub/recipe/json.d @@ -210,7 +210,6 @@ case "sourcePath": bs.sourcePaths[suffix] ~= [value.get!string()]; break; // deprecated case "excludedSourceFiles": bs.excludedSourceFiles[suffix] = deserializeJson!(string[])(value); break; case "copyFiles": bs.copyFiles[suffix] = deserializeJson!(string[])(value); break; - case "copyDirs": bs.copyDirs[suffix] = deserializeJson!(string[])(value); break; case "versions": bs.versions[suffix] = deserializeJson!(string[])(value); break; case "debugVersions": bs.debugVersions[suffix] = deserializeJson!(string[])(value); break; case "importPaths": bs.importPaths[suffix] = deserializeJson!(string[])(value); break; @@ -257,7 +256,6 @@ foreach (suffix, arr; bs.sourcePaths) ret["sourcePaths"~suffix] = serializeToJson(arr); foreach (suffix, arr; bs.excludedSourceFiles) ret["excludedSourceFiles"~suffix] = serializeToJson(arr); foreach (suffix, arr; bs.copyFiles) ret["copyFiles"~suffix] = serializeToJson(arr); - foreach (suffix, arr; bs.copyDirs) ret["copyDirs"~suffix] = serializeToJson(arr); foreach (suffix, arr; bs.versions) ret["versions"~suffix] = serializeToJson(arr); foreach (suffix, arr; bs.debugVersions) ret["debugVersions"~suffix] = serializeToJson(arr); foreach (suffix, arr; bs.importPaths) ret["importPaths"~suffix] = serializeToJson(arr); diff --git a/source/dub/recipe/packagerecipe.d b/source/dub/recipe/packagerecipe.d index ccf82b2..dad1220 100644 --- a/source/dub/recipe/packagerecipe.d +++ b/source/dub/recipe/packagerecipe.d @@ -146,7 +146,6 @@ string[][string] sourcePaths; string[][string] excludedSourceFiles; string[][string] copyFiles; - string[][string] copyDirs; string[][string] versions; string[][string] debugVersions; string[][string] importPaths; @@ -210,7 +209,6 @@ getPlatformSetting!("sourceFiles", "addSourceFiles")(dst, platform); getPlatformSetting!("excludedSourceFiles", "removeSourceFiles")(dst, platform); getPlatformSetting!("copyFiles", "addCopyFiles")(dst, platform); - getPlatformSetting!("copyDirs", "addCopyDirs")(dst, platform); getPlatformSetting!("versions", "addVersions")(dst, platform); getPlatformSetting!("debugVersions", "addDebugVersions")(dst, platform); getPlatformSetting!("importPaths", "addImportPaths")(dst, platform);