forked from qt-creator/qt-creator
		
	The qtc module gathers properties that used to live in the top-level
project file. This is the first step towards making it possible to build
plugins against an installed Qt Creator ("out of source build").
Change-Id: Ia1514cc9c888e80be01b308e908de48980fcbdb8
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
		
	
		
			
				
	
	
		
			82 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			QML
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			QML
		
	
	
	
	
	
import qbs 1.0
 | 
						|
import qbs.TextFile
 | 
						|
import qbs.FileInfo
 | 
						|
 | 
						|
Module {
 | 
						|
    Depends { id: qtcore; name: "Qt.core" }
 | 
						|
    Depends { name: "qtc" }
 | 
						|
 | 
						|
    additionalProductTypes: ["qt_plugin_metadata"]
 | 
						|
 | 
						|
    Rule {
 | 
						|
        inputs: ["pluginJsonIn"]
 | 
						|
 | 
						|
        Artifact {
 | 
						|
            fileTags: ["qt_plugin_metadata"]
 | 
						|
            filePath: {
 | 
						|
                var destdir = FileInfo.joinPaths(product.moduleProperty("Qt.core",
 | 
						|
                                                         "generatedFilesDir"), input.fileName);
 | 
						|
                return destdir.replace(/\.[^\.]*$/,'')
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        prepare: {
 | 
						|
            var cmd = new JavaScriptCommand();
 | 
						|
            cmd.description = "prepare " + FileInfo.fileName(output.filePath);
 | 
						|
            cmd.highlight = "codegen";
 | 
						|
            cmd.pluginJsonReplacements = product.pluginJsonReplacements;
 | 
						|
            cmd.plugin_depends = [];
 | 
						|
            var deps = product.dependencies;
 | 
						|
            for (var d in deps) {
 | 
						|
                var depdeps = deps[d].dependencies;
 | 
						|
                for (var dd in depdeps) {
 | 
						|
                    if (depdeps[dd].name == 'pluginjson') {
 | 
						|
                        cmd.plugin_depends.push(deps[d].name);
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            cmd.plugin_recommends = product.pluginRecommends
 | 
						|
            cmd.plugin_test_depends = product.pluginTestDepends
 | 
						|
 | 
						|
            cmd.sourceCode = function() {
 | 
						|
                var i;
 | 
						|
                var vars = pluginJsonReplacements || {};
 | 
						|
                var inf = new TextFile(input.filePath);
 | 
						|
                var all = inf.readAll();
 | 
						|
                // replace quoted quotes
 | 
						|
                all = all.replace(/\\\"/g, '"');
 | 
						|
                // replace config vars
 | 
						|
                var qtcVersion = product.moduleProperty("qtc", "qtcreator_version");
 | 
						|
                vars['QTCREATOR_VERSION'] = qtcVersion;
 | 
						|
                vars['QTCREATOR_COMPAT_VERSION']
 | 
						|
                        = product.moduleProperty("qtc", "qtcreator_compat_version");
 | 
						|
                vars['IDE_VERSION_MAJOR'] = product.moduleProperty("qtc", "ide_version_major");
 | 
						|
                vars['IDE_VERSION_MINOR'] = product.moduleProperty("qtc", "ide_version_minor");
 | 
						|
                vars['IDE_VERSION_RELEASE'] = product.moduleProperty("qtc", "ide_version_release");
 | 
						|
                var deplist = [];
 | 
						|
                for (i in plugin_depends) {
 | 
						|
                    deplist.push("        { \"Name\" : \"" + plugin_depends[i] + "\", \"Version\" : \"" + qtcVersion + "\" }");
 | 
						|
                }
 | 
						|
                for (i in plugin_recommends) {
 | 
						|
                    deplist.push("        { \"Name\" : \"" + plugin_recommends[i] + "\", \"Version\" : \"" + qtcVersion + "\", \"Type\" : \"optional\" }");
 | 
						|
                }
 | 
						|
                for (i in plugin_test_depends) {
 | 
						|
                    deplist.push("        { \"Name\" : \"" + plugin_test_depends[i] + "\", \"Version\" : \"" + qtcVersion + "\", \"Type\" : \"test\" }");
 | 
						|
                }
 | 
						|
                deplist = deplist.join(",\n")
 | 
						|
                vars['dependencyList'] = "\"Dependencies\" : [\n" + deplist + "\n    ]";
 | 
						|
                for (i in vars) {
 | 
						|
                    all = all.replace(new RegExp('\\\$\\\$' + i + '(?!\w)', 'g'), vars[i]);
 | 
						|
                }
 | 
						|
                var file = new TextFile(output.filePath, TextFile.WriteOnly);
 | 
						|
                file.truncate();
 | 
						|
                file.write(all);
 | 
						|
                file.close();
 | 
						|
            }
 | 
						|
            return cmd;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 |