Skip to content

Instantly share code, notes, and snippets.

@TonyRenHK
Last active December 15, 2019 09:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TonyRenHK/f4d3ed2a3a4ce3a22c256d224ad739bd to your computer and use it in GitHub Desktop.
Save TonyRenHK/f4d3ed2a3a4ce3a22c256d224ad739bd to your computer and use it in GitHub Desktop.
retrieve salesforce Class/Page code.js
var jsforce = require('jsforce');
var mkdirp = require('mkdirp');
var conn = new jsforce.Connection({
loginUrl: 'https://test.salesforce.com', // if the org is sandbox 'https://test.salesforce.com', if it is Production,please input https://login.salesforce.com'
version: '36.0'
});
var currentdate = new Date();
var datetime = 'YourProjectName_' + String(currentdate.getFullYear()) + String(currentdate.getMonth() + 1) + String(currentdate.getDate()) + '-' + String(currentdate.getHours()) + String(currentdate.getMinutes()) + String(currentdate.getSeconds());
console.log('Create File Name: ' + datetime);
//Create Folder for 'Object', 'Class','ApexPage' 'Comp'
mkdirp(datetime + '/Object', function(err) {
if (err) console.error(err)
else console.log('Object created!')
});
mkdirp(datetime + '/Class', function(err) {
if (err) console.error(err)
else console.log('Class created!')
});
mkdirp(datetime + '/ApexPage', function(err) {
if (err) console.error(err)
else console.log('ApexPage created!')
});
mkdirp(datetime + '/Comp', function(err) {
if (err) console.error(err)
else console.log('Comp created!')
});
//This place input username and password
conn.login('username', 'Password', function(err, res) {
if (err) {
return console.error(err);
}
// Get lightning component
FetchLightningResources('select id, AuraDefinitionBundleId,AuraDefinitionBundle.DeveloperName,Format,DefType,Source from AuraDefinition');
//Get Object Metadata
FetchSFDCObject('select id,DeveloperName from CustomObject');
//Get Apex Page
FetchPageComp('ApexPage', " SELECT Id, Name,Markup FROM ApexPage ");
//Get Apex Components
FetchPageComp('Comp', " SELECT Id, Name,Markup FROM apexComponent ");
//Get All Apex Class you can also retreieve ApexTrigger class FetchedClass('ApexTrigger', "SELECT Id,Name,Body from ApexTrigger where Name like 'ASI%' ");
FetchedClass("SELECT Id, Name,Body FROM ApexClass ");
});
//****************************Fetching SFDC Object**********************
function FetchSFDCObject(inputSQL) {
conn.tooling.query(inputSQL, function(err, result) {
if (err) {
return console.error(err);
}
console.log('****Start Getting Object**');
var ObjectNameList = [];
var Count = 0;
for (var i = 0; i < result.records.length; i++) {
ObjectNameList.push(result.records[i].DeveloperName + '__c');
if (Count == 9) {
GetObjectMetaData(ObjectNameList);
ObjectNameList = [];
Count = 0;
}
Count++;
}
});
}
//********************Get Lightning Components************************************************************
function FetchLightningResources(inputSQL) {
conn.query(inputSQL, function(err, result) {
if (err) {
return console.error(err);
}
if (result.totalSize > 0) {
for (var i = 0; i < result.totalSize; i = i + 200) {
FetchLightningComp(inputSQL + ' offset ' + i);
}
}
});
}
function FetchLightningComp(inputSQL) {
conn.query(inputSQL, function(err, result) {
if (err) {
return console.error(err);
}
for (var i = 0; i < result.records.length; i++) {
if (result.records[i].Source != '(hidden)') {
//Create Folder
CraetingLightningComp(result.records[i]);
}
}
});
}
//create lightning folder and file
function CraetingLightningComp(InputObject) {
mkdirp(datetime + '/LightningComponent/' + InputObject.AuraDefinitionBundle.DeveloperName, function(err) {
if (err) {
console.error(err)
}
else {
if (InputObject.Format === 'JS' || InputObject.Format == 'CSS') {
writefile(InputObject.DefType + '.' + InputObject.Format, 'LightningComponent/' + InputObject.AuraDefinitionBundle.DeveloperName, InputObject.Source);
}
else {
writefileVF(InputObject.DefType + '.' + InputObject.Format, 'LightningComponent/' + InputObject.AuraDefinitionBundle.DeveloperName, InputObject.Source);
}
}
});
}
//******************** End of Getting Lightning Component******************************************************//
//******************** Get Apex Page /Components ******************************************************//
function FetchPageComp(InputType, inputSQL) {
conn.query(inputSQL, function(err, result) {
if (err) {
return console.error(err);
}
console.log(InputType + "total : " + result.totalSize);
//console.log("fetched: " + result.records.length);
if (result.totalSize > 0) {
for (var i = 0; i < result.totalSize; i = i + 200) { //console.log(inputSQL+' offset '+i);
queryPageComp(InputType, inputSQL + ' offset ' + i);
}
}
});
}
function queryPageComp(InType, inputSQL) {
var records = [];
conn.query(inputSQL, function(err, result) {
if (err) {
return console.error(err);
} //console.log("total : " + result.totalSize);console.log("fetched: " + result.records.length);
for (var i = 0; i < result.records.length; i++) { //console.log(result.records[i].Name);
var filetype = '';
if (InType == 'ApexPage') {
filetype = '.html';
}
else {
filetype = '.cmp'
}
writefileVF(result.records[i].Name + filetype, InType, result.records[i].Markup);
}
});
}
//******************** End of Geting Apex Page /Components ******************************************************//
//********************Get Class /ApexTrigger ******************************************************//
function FetchedClass(inputSQL) {
conn.query(inputSQL, function(err, result) {
if (err) {
return console.error(err);
} //console.log("total : " + result.totalSize);
if (result.totalSize > 0) {
for (var i = 0; i < result.totalSize; i = i + 200) {
queryRecordClass(inputSQL + ' offset ' + i);
}
}
});
}
function queryRecordClass(inputSQL) {
conn.query(inputSQL, function(err, result) {
if (err) {
return console.error(err);
}
console.log("fetched Class : " + result.records.length);
for (var i = 0; i < result.records.length; i++) {
if (result.records[i].Body != '(hidden)') {
writefileVF(result.records[i].Name + '.java', 'Class', result.records[i].Body);
}
}
});
}
//******************** End******************************************************//
//********************Get Object ******************************************************//
function GetObjectMetaData(inputfullNames) {
conn.metadata.read('CustomObject', inputfullNames, function(err, metadata) {
if (err) {
console.error(err);
}
for (var i = 0; i < metadata.length; i++) {
var meta = metadata[i];
writefile(meta.fullName, 'Object', JSON.stringify(meta));
console.log("Full Name: " + meta.fullName + 'Get!');
}
});
}
//******************** End******************************************************//
//********************writefile*********************************************//
function writefile(InputName, MetaType, InputBody) {
var beautify = require('js-beautify').js_beautify,
fs = require('fs');
var InsertBody = beautify(InputBody, {
indent_size: 2
});
fs.writeFile(datetime + '/' + MetaType + '/' + InputName, InsertBody, function(err) {
if (err) {
return console.log(err);
}
});
}
function writefileVF(InputName, MetaType, InputBody) {
var fs = require('fs');
fs.writeFile(datetime + '/' + MetaType + '/' + InputName, InputBody, function(err) {
if (err) {
return console.log(err);
}
});
}
//******************** End******************************************************//
//******************** Testing******************************************************//
function QuerySFDC(inputSQL) {
conn.query(inputSQL, function(err, result) {
if (err) {
return console.error(err);
} //console.log("total : " + result.totalSize);
if (result.totalSize > 0) {
for (var i = 0; i < result.totalSize; i = i + 200) {
console.log(result[i]);
}
}
});
}
@TonyRenHK
Copy link
Author

var fs = require('fs');
// get file name
fs.readdir("./src/approvalProcesses", function(err, items) {
//console.log(items);

for (var i=0; i<items.length; i++) {
	var fileName = items[i].substring(0, items[i].length-16); //approvalProcess
	console.log(fileName);
    //console.log(items[i]);
}

});

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment