UNPKG

alloy

Version:

Appcelerator Titanium MVC Framework

62 lines (59 loc) 1.75 kB
var basePath = '../../../'; var path = require('path'), wrench = require('wrench'), xml2tss = require('xml2tss'), _ = require(basePath + 'lib/alloy/underscore')._, GU = require('../generateUtils'), U = require(basePath + 'utils'), CONST = require(basePath + 'common/constants'), logger = require(basePath + 'logger'); // a recursive function to generate styles since xml2tss is async function generateStyles(targets) { if (targets.length > 0) { // generate style var current = targets.pop(); xml2tss.updateFile( current.view_path, current.style_path, function(err,ok) { if (ok) { logger.info('Style generated: ' + current.style); } generateStyles(targets); } ); } } module.exports = function(name, args, program) { var paths = U.getAndValidateProjectPaths(program.outputPath), view_root = path.join(paths.app,CONST.DIR.VIEW), style_root = path.join(paths.app,CONST.DIR.STYLE), targets =[]; if (name) { var info = GU.generate(name, 'STYLE', program); if (info) { logger.info('Generated style named '+name); } } else if (program.all) { wrench.readdirSyncRecursive(view_root).forEach(function(view) { if (view.match(".xml$")) { var style = view.replace(/\.xml/,'.tss'), style_path = path.join(style_root, style), view_path = path.join(view_root, view); // make sure the target folder exists var fullDir = path.dirname(style_path); if (!path.existsSync(fullDir)) { wrench.mkdirSyncRecursive(fullDir); } targets.push({ style:style, style_path: style_path, view_path:view_path }); } }); generateStyles(targets); } else { U.die("'alloy generate style' requires a file name, or the --all flag"); } };