Added version spec ability for dub commands
1 parent a411cb5 commit 02b4263bc1e1d2c58e10a79a0fc08119ac2d4add
@deviator deviator authored on 28 Jul 2020
Mathias LANG committed on 24 Aug 2020
Showing 10 changed files
View
53
source/dub/commandline.d
}
p.description = input("Description", p.description);
p.authors = input("Author name", author).split(",").map!(a => a.strip).array;
p.license = input("License", p.license);
string copyrightString = .format("Copyright © %s, %-(%s, %)", Clock.currTime().year, p.authors);
string copyrightString = format("Copyright © %s, %-(%s, %)", Clock.currTime().year, p.authors);
p.copyright = input("Copyright string", copyrightString);
 
while (true) {
auto depspec = input("Add dependency (leave empty to skip)", null);
"[Experimental] Filter version identifiers and debug version identifiers to improve build cache efficiency."
]);
}
 
protected void setupVersionPackage(Dub dub, string str_package_info, string default_build_type = "debug")
{
PackageAndVersion package_info = splitPackageName(str_package_info);
Version ver = package_info.version_.length ? Version(package_info.version_) : Version.unknown;
setupPackage(dub, package_info.name, default_build_type, ver);
}
 
protected void setupPackage(Dub dub, string package_name, string default_build_type = "debug", Version ver = Version.unknown)
{
if (!m_compilerName.length) m_compilerName = dub.defaultCompiler;
if (!m_arch.length) m_arch = dub.defaultArchitecture;
 
auto pack = ver.isUnknown
? dub.packageManager.getLatestPackage(package_name)
: dub.packageManager.getPackage(package_name, ver);
enforce(pack, "Failed to find a package named '"~package_name~"' locally.");
 
enforce(pack, format!"Failed to find a package named '%s%s' locally."(package_name,
ver.isUnknown ? "" : "@" ~ ver.toString()
));
logInfo("Building package %s in %s", pack.name, pack.path.toNativeString());
dub.loadPackage(pack);
return true;
}
}
 
override int execute(Dub dub, string[] free_args, string[] app_args)
{
PackageAndVersion package_info;
string str_package_info;
if (!m_generator.length) {
enforceUsage(free_args.length >= 1 && free_args.length <= 2, "Expected one or two arguments.");
m_generator = free_args[0];
if (free_args.length >= 2) package_info = splitPackageName(free_args[1]);
if (free_args.length >= 2) str_package_info = free_args[1];
} else {
enforceUsage(free_args.length <= 1, "Expected one or zero arguments.");
if (free_args.length >= 1) package_info = splitPackageName(free_args[0]);
}
 
string package_name = package_info.name;
Version package_version = package_info.version_.length == 0 ? Version.unknown : Version(package_info.version_);
setupPackage(dub, package_name, "debug", package_version);
if (free_args.length >= 1) str_package_info = free_args[0];
}
 
setupVersionPackage(dub, str_package_info, "debug");
 
if (m_printBuilds) { // FIXME: use actual package data
logInfo("Available build types:");
foreach (tp; ["debug", "release", "unittest", "profile"])
}
 
override int execute(Dub dub, string[] free_args, string[] app_args)
{
string package_name;
string str_package_info;
enforceUsage(free_args.length <= 1, "Expected one or zero arguments.");
if (free_args.length >= 1) package_name = free_args[0];
 
setupPackage(dub, package_name, "unittest", Version.unknown);
if (free_args.length >= 1) str_package_info = free_args[0];
 
setupVersionPackage(dub, str_package_info, "unittest");
 
GeneratorSettings settings;
settings.platform = m_buildPlatform;
settings.compiler = getCompiler(m_buildPlatform.compilerBinary);
}
 
override int execute(Dub dub, string[] free_args, string[] app_args)
{
string package_name;
string str_package_info;
enforceUsage(free_args.length <= 1, "Expected one or zero arguments.");
if (free_args.length >= 1) package_name = free_args[0];
if (free_args.length >= 1) str_package_info = free_args[0];
 
string[] args;
if (!m_syntaxCheck && !m_styleCheck && !m_report && app_args.length == 0) { m_styleCheck = true; }
 
if (m_reportFile) args ~= ["--reportFile", m_reportFile];
foreach (import_path; m_importPaths) args ~= ["-I", import_path];
if (m_config) args ~= ["--config", m_config];
 
setupPackage(dub, package_name);
setupVersionPackage(dub, str_package_info);
dub.lintProject(args ~ app_args);
return 0;
}
}
auto ll = getLogLevel();
setLogLevel(max(ll, LogLevel.warn));
scope (exit) setLogLevel(ll);
 
string package_name;
string str_package_info;
enforceUsage(free_args.length <= 1, "Expected one or zero arguments.");
if (free_args.length >= 1) package_name = free_args[0];
setupPackage(dub, package_name);
if (free_args.length >= 1) str_package_info = free_args[0];
setupVersionPackage(dub, str_package_info);
 
m_defaultConfig = dub.project.getDefaultConfiguration(m_buildPlatform);
 
auto config = m_buildConfig.length ? m_buildConfig : m_defaultConfig;
View
4
test/.gitignore
custom-unittest/custom-unittest
path-subpackage-ref/test
subpackage-ref/test
subpackage-common-with-sourcefile-globbing/mypackage*
version-spec/**/CMakeLists.txt
version-spec/**/foo.cmake
version-spec/**/foo
 
/test_registry
View
test/version-spec.sh 0 → 100755
View
test/version-spec/.no_build 0 → 100644
View
test/version-spec/.no_run 0 → 100644
View
test/version-spec/.no_test 0 → 100644
View
test/version-spec/newfoo/dub.sdl 0 → 100644
View
test/version-spec/newfoo/source/app.d 0 → 100644
View
test/version-spec/oldfoo/dub.sdl 0 → 100644
View
test/version-spec/oldfoo/source/app.d 0 → 100644