UNPKG

cobaltians

Version:

Cobaltians CLI is a command line tool to manage your Cobalt project

131 lines (107 loc) 4.23 kB
/** * Created by baptistejamin on 09/05/15. */ var fs = require('fs-extra'); var path = require('path'); function renameFilesRecursively(dir, oldString, newString) { var files = fs.readdirSync(dir), f, fileName, path, newPath, file; for (f = 0; f < files.length; f += 1) { fileName = files[f]; path = dir + '/' + fileName; file = fs.statSync(path); newPath = path.replace(oldString, newString); fs.renameSync(path, newPath); if (file.isDirectory()) { renameFilesRecursively(newPath, oldString, newString); } } } module.exports.iosProject = function (folder, templateName, appName) { var replace = require("replace"); //First, let's replace occurences in files replace({ regex: templateName, replacement: appName, paths: [path.normalize(folder)], recursive: true, silent: true }); replace({ regex: "com." + templateName, replacement: "com." + appName, paths: [path.normalize(folder)], recursive: true, silent: true }); //mv HelloWorld myApp fs.renameSync(path.normalize(folder + '/' + templateName + '/'), path.normalize(folder + '/' + appName + '/')); //mv HelloWorld.xcodeproj myApp.xcodeproj fs.renameSync(path.normalize(folder + '/' + templateName + '.xcodeproj'), path.normalize(folder + '/' + appName + '.xcodeproj')); //mv HelloWorld.xcworkspace myApp.xcworkspace try { fs.renameSync(path.normalize(folder + '/' + templateName + '.xcworkspace'), path.normalize(folder + '/' + appName + '.xcworkspace')); } catch (e) { } //mv appName/HelloWorld/HelloWorldViewController.m appName/appName/appNameViewController.m //mv appName/HelloWorld/HelloWorldViewController.h appName/appName/appNameViewController.h try { fs.renameSync(path.normalize(folder + '/' + appName + '/' + templateName + 'ViewController.m'), path.normalize(folder + '/' + appName + '/' + appName + 'ViewController.m')); } catch (e) { } try { fs.renameSync(path.normalize(folder + '/' + appName + '/' + templateName + 'ViewController.h'), path.normalize(folder + '/' + appName + '/' + appName + 'ViewController.h')); } catch (e) { } //mv appName/HelloWorld/HelloWorld-Prefix.pch appName/appName/appName-Prefix.pch try { fs.renameSync(path.normalize(folder + '/' + appName + '/' + templateName + '-Prefix.pch'), path.normalize(folder + '/' + appName + '/' + appName + '-Prefix.pch')); } catch (e) { } //mv appName/HelloWorldTests appName/myAppTests //fs.renameSync(folder + '/' + templateName + 'Tests', folder + '/' + appName + 'Tests'); try { //Catalog - Info.plist fs.renameSync(path.normalize(folder + '/' + appName + '/' + templateName + "-Info.plist"), path.normalize(folder + '/' + appName + '/' + appName + "-Info.plist")); } catch (e) { } try { fs.renameSync(path.normalize(folder + '/' + templateName + 'Tests'), path.normalize(folder + '/' + appName + 'Tests')); } catch (e) { } try { //mv appName/myAppTests/HelloWorldTests.m appName/myAppTests/myAppTests.m fs.renameSync(path.normalize(folder + '/' + appName + 'Tests' + '/' + templateName + 'Tests.m'), path.normalize(folder + '/' + appName + 'Tests' + '/' + appName + 'Tests.m')); } catch (e) { } }; module.exports.androidProject = function (folder, templateName, appName) { var replace = require("replace"); //first rename all folders and files renameFilesRecursively(folder, templateName, appName); renameFilesRecursively(folder, templateName.toLowerCase(), appName.toLowerCase()); //then replace occurences in files replace({ regex: templateName, replacement: appName, paths: [path.normalize(folder)], recursive: true, silent: true }); replace({ regex: templateName.toLowerCase(), replacement: appName.toLowerCase(), paths: [path.normalize(folder)], recursive: true, silent: true }); };