tarifa
Version:
Your friendly toolchain for mobile app development on top of Apache Cordova
84 lines (73 loc) • 2.7 kB
JavaScript
var path = require('path'),
fs = require('fs'),
untildify = require('untildify'),
settings = require('../settings');
var root = module.exports.root = function () {
var find = function (dirname) {
var tarifaFileExists = fs.existsSync(path.join(dirname, settings.publicTarifaFileName));
if (tarifaFileExists) {
return dirname;
} else {
var isRoot = /^[^\/]*\/$|^[^\\]*\\$/.test(dirname);
if (isRoot)
return dirname;
else
return find(path.join(dirname, '..'));
}
};
return find(process.cwd());
};
var app = module.exports.app = function () {
return path.join(root(), settings.cordovaAppPath);
};
module.exports.cordova_www = function () {
return path.join(app(), 'www');
};
module.exports.platforms = function () {
return path.join(app(), 'platforms');
};
module.exports.resolve = function (/* args */) {
var args = Array.prototype.slice.call(arguments, 0).map(function (s) {
return s.toString();
});
return path.resolve(untildify(path.join.apply(this, args)));
};
module.exports.wwwFinalLocation = function (projectRoot, platform) {
var p = path.join(projectRoot, settings.cordovaAppPath),
mod = path.resolve(__dirname, '../platforms', platform, 'lib/helper/path');
return require(mod).wwwFinalLocation(p);
};
module.exports.productFile = function (platform, productFileName, arch, type) {
var p = path.join(root(), settings.cordovaAppPath, 'platforms'),
mod = path.resolve(__dirname, '../platforms', platform, 'lib/helper/path');
return require(mod).productFile(p, productFileName, arch, type);
};
module.exports.productFolder = function (platform, productName) {
var p = path.join(root(), settings.cordovaAppPath, 'platforms'),
mod = path.resolve(__dirname, '../platforms', platform, 'lib/helper/path');
return require(mod).productFolder(p, productName);
};
module.exports.isFile = function (/* args */) {
try {
var args = Array.prototype.slice.call(arguments, 0);
return fs.statSync(path.resolve(untildify(path.join.apply(this, args)))).isFile();
} catch(err) {
if(err.code === 'ENOENT') {
return false;
} else {
throw err;
}
}
};
module.exports.isDirectory = function (/* args */) {
try {
var args = Array.prototype.slice.call(arguments, 0);
return fs.statSync(path.resolve(untildify(path.join.apply(this, args)))).isDirectory();
} catch(err) {
if(err.code === 'ENOENT') {
return false;
} else {
throw err;
}
}
};