136 lines
6.0 KiB
JavaScript
136 lines
6.0 KiB
JavaScript
/**
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you under the Apache License, Version 2.0 (the
|
|
"License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing,
|
|
software distributed under the License is distributed on an
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations
|
|
under the License.
|
|
*/
|
|
|
|
var path = require('path');
|
|
var fs = require('fs');
|
|
var shell = require('shelljs');
|
|
var events = require('cordova-common').events;
|
|
|
|
module.exports = {
|
|
www_dir: function (project_dir) {
|
|
return path.join(project_dir, 'www');
|
|
},
|
|
package_name: function (project_dir) {
|
|
// this method should the id from root config.xml => <widget id=xxx
|
|
// return common.package_name(project_dir, this.www_dir(project_dir));
|
|
// console.log('package_name called with ' + project_dir);
|
|
var pkgName = 'io.cordova.hellocordova';
|
|
var widget_id_regex = /(?:<widget\s+id=['"])(\S+)(?:['"])/;
|
|
|
|
var configPath = path.join(project_dir, 'config.xml');
|
|
if (fs.existsSync(configPath)) {
|
|
var configStr = fs.readFileSync(configPath, 'utf8');
|
|
var res = configStr.match(widget_id_regex);
|
|
if (res && res.length > 1) {
|
|
pkgName = res[1];
|
|
}
|
|
}
|
|
return pkgName;
|
|
},
|
|
'js-module': {
|
|
install: function (jsModule, plugin_dir, plugin_id, www_dir) {
|
|
// Copy the plugin's files into the www directory.
|
|
var moduleSource = path.resolve(plugin_dir, jsModule.src);
|
|
// Get module name based on existing 'name' attribute or filename
|
|
// Must use path.extname/path.basename instead of path.parse due to CB-9981
|
|
var moduleName = plugin_id + '.' + (jsModule.name || path.basename(jsModule.src, path.extname(jsModule.src)));
|
|
|
|
// Read in the file, prepend the cordova.define, and write it back out.
|
|
var scriptContent = fs.readFileSync(moduleSource, 'utf-8').replace(/^\ufeff/, ''); // Window BOM
|
|
if (moduleSource.match(/.*\.json$/)) {
|
|
scriptContent = 'module.exports = ' + scriptContent;
|
|
}
|
|
scriptContent = 'cordova.define("' + moduleName + '", function(require, exports, module) { ' + scriptContent + '\n});\n';
|
|
|
|
var moduleDestination = path.resolve(www_dir, 'plugins', plugin_id, jsModule.src);
|
|
shell.mkdir('-p', path.dirname(moduleDestination));
|
|
fs.writeFileSync(moduleDestination, scriptContent, 'utf-8');
|
|
},
|
|
uninstall: function (jsModule, www_dir, plugin_id) {
|
|
var pluginRelativePath = path.join('plugins', plugin_id, jsModule.src);
|
|
// common.removeFileAndParents(www_dir, pluginRelativePath);
|
|
console.log('js-module uninstall called : ' + pluginRelativePath);
|
|
}
|
|
},
|
|
'source-file': {
|
|
install: function (obj, plugin_dir, project_dir, plugin_id, options) {
|
|
// var dest = path.join(obj.targetDir, path.basename(obj.src));
|
|
// common.copyFile(plugin_dir, obj.src, project_dir, dest);
|
|
console.log('install called');
|
|
},
|
|
uninstall: function (obj, project_dir, plugin_id, options) {
|
|
// var dest = path.join(obj.targetDir, path.basename(obj.src));
|
|
// common.removeFile(project_dir, dest);
|
|
console.log('uninstall called');
|
|
}
|
|
},
|
|
'header-file': {
|
|
install: function (obj, plugin_dir, project_dir, plugin_id, options) {
|
|
events.emit('verbose', 'header-fileinstall is not supported for browser');
|
|
},
|
|
uninstall: function (obj, project_dir, plugin_id, options) {
|
|
events.emit('verbose', 'header-file.uninstall is not supported for browser');
|
|
}
|
|
},
|
|
'resource-file': {
|
|
install: function (obj, plugin_dir, project_dir, plugin_id, options) {
|
|
events.emit('verbose', 'resource-file.install is not supported for browser');
|
|
},
|
|
uninstall: function (obj, project_dir, plugin_id, options) {
|
|
events.emit('verbose', 'resource-file.uninstall is not supported for browser');
|
|
}
|
|
},
|
|
'framework': {
|
|
install: function (obj, plugin_dir, project_dir, plugin_id, options) {
|
|
events.emit('verbose', 'framework.install is not supported for browser');
|
|
},
|
|
uninstall: function (obj, project_dir, plugin_id, options) {
|
|
events.emit('verbose', 'framework.uninstall is not supported for browser');
|
|
}
|
|
},
|
|
'lib-file': {
|
|
install: function (obj, plugin_dir, project_dir, plugin_id, options) {
|
|
events.emit('verbose', 'lib-file.install is not supported for browser');
|
|
},
|
|
uninstall: function (obj, project_dir, plugin_id, options) {
|
|
events.emit('verbose', 'lib-file.uninstall is not supported for browser');
|
|
}
|
|
},
|
|
asset: {
|
|
install: function (asset, plugin_dir, wwwDest) {
|
|
var src = path.join(plugin_dir, asset.src);
|
|
var dest = path.join(wwwDest, asset.target);
|
|
var destDir = path.parse(dest).dir;
|
|
if (destDir !== '' && !fs.existsSync(destDir)) {
|
|
shell.mkdir('-p', destDir);
|
|
}
|
|
|
|
if (fs.statSync(src).isDirectory()) {
|
|
shell.cp('-Rf', src + '/*', dest);
|
|
} else {
|
|
shell.cp('-f', src, dest);
|
|
}
|
|
},
|
|
uninstall: function (asset, wwwDest, plugin_id) {
|
|
shell.rm('-rf', path.join(wwwDest, asset.target));
|
|
shell.rm('-rf', path.join(wwwDest, 'plugins', plugin_id));
|
|
}
|
|
}
|
|
};
|