Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Start back from jayree oclif version #1

Merged
merged 39 commits into from
Jan 23, 2020
Merged
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
090846b
Move configs to separate folder
Dhanielk Mar 13, 2017
2b68c76
Move cores to separate folders
Dhanielk Mar 13, 2017
4644ee6
Generic merge driver
Dhanielk Mar 13, 2017
5ab1570
Add support for permission sets
Dhanielk Mar 13, 2017
7d26139
Updated readme.md
Dhanielk Mar 13, 2017
3547539
Added based on…
Dhanielk Mar 13, 2017
08bceb0
Test
Dhanielk Mar 13, 2017
547d630
Set theme jekyll-theme-cayman
Dhanielk Mar 13, 2017
01a94a8
Set theme jekyll-theme-cayman
Dhanielk Mar 13, 2017
86d5542
Let’s do it directly on master >3<
Dhanielk Mar 13, 2017
4839e17
Fix path and variable
Dhanielk Mar 13, 2017
701fa17
Custom labels support
Dhanielk Mar 13, 2017
2020c85
Update README.md
Dhanielk Mar 13, 2017
1c1134f
Update _config.yml
Dhanielk Mar 14, 2017
a51bf28
Update README.md
Dhanielk Mar 14, 2017
4759f26
Wrong order fix
Dhanielk Mar 14, 2017
43d8f4c
Fixed path issues
Dhanielk Mar 14, 2017
b73012b
Added one new checkpoint
Dhanielk Mar 14, 2017
aea636c
Update sfdc_merge.groovy
buggyb12 Apr 25, 2017
c601f54
Merge pull request #1 from buggyb12/patch-1
Dhanielk Apr 25, 2017
5acdda1
Clean on value from XML parser
Dhanielk Apr 25, 2017
2755981
Merge KevinGossentCap-master
jayree Sep 27, 2019
ec76f79
feat!: Enhancements for VSCode
jayree Sep 27, 2019
b3e20ba
feat: add node.js package and installer framework
jayree Oct 15, 2019
f6219de
chore: update readme
jayree Oct 16, 2019
b525c45
feat: migrate from groovy to node.js script
jayree Oct 26, 2019
ad1ce85
chore: add test and update readme
jayree Oct 27, 2019
4ee37f8
Set theme jekyll-theme-cayman
jayree Oct 27, 2019
a037632
fix: fix undefined xml tag
jayree Nov 1, 2019
b75257e
fix: update dependencies
jayree Nov 15, 2019
5cbde3b
chore: rename class
jayree Nov 19, 2019
8c4dc8e
chore: rename command
jayree Nov 19, 2019
1429e2f
chore(release): 0.1.0
jayree Nov 19, 2019
c673f7b
chore: update readme
jayree Nov 19, 2019
a3813fc
feat: auto install if yarn or npm is used
jayree Nov 22, 2019
c75d43e
chore: update gitignore
jayree Nov 22, 2019
62805aa
chore(release): 0.1.1
jayree Nov 22, 2019
b03b4b6
feat: convert to typescript and oclif
jayree Jan 22, 2020
a03593f
chore(release): 0.1.2
jayree Jan 22, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merge KevinGossentCap-master
jayree committed Sep 27, 2019
commit 275598125ec2d58badc1ca69084ec2458a91b48f
52 changes: 52 additions & 0 deletions config/merge-permissionset-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
"applicationVisibilities" : {
"uniqueKeys" : [ "application" ],
"equalKeys" : [ "application", "visible" ]
},
"classAccesses" : {
"uniqueKeys" : [ "apexClass" ],
"equalKeys" : [ "apexClass", "enabled" ]
},
"customPermissions" : {
"uniqueKeys" : [ "name" ],
"equalKeys" : [ "name", "enabled" ]
},
"externalDataSourceAccesses" : {
"uniqueKeys" : [ "externalDataSource" ],
"equalKeys" : [ "externalDataSource", "enabled" ]
},
"fieldPermissions" : {
"uniqueKeys" : [ "field" ],
"equalKeys" : [ "field", "editable", "readable" ]
},
"license" : {
"uniqueKeys" : [],
"equalKeys" : []
},
"objectPermissions" : {
"uniqueKeys" : [ "object" ],
"equalKeys" : [ "object", "allowCreate", "allowDelete",
"allowEdit", "allowRead",
"modifyAllRecords", "viewAllRecords" ]
},
"pageAccesses" : {
"uniqueKeys" : [ "apexPage" ],
"equalKeys" : [ "apexPage", "enabled" ]
},
"recordTypeVisibilities" : {
"uniqueKeys" : [ "recordType" ],
"equalKeys" : [ "recordType", "visible" ]
},
"tabSettings" : {
"uniqueKeys" : [ "tab" ],
"equalKeys" : [ "tab", "visibility" ]
},
"userLicense" : {
"uniqueKeys" : [],
"equalKeys" : []
},
"userPermissions" : {
"uniqueKeys" : [ "name" ],
"equalKeys" : [ "name", "enabled" ]
}
}
20 changes: 18 additions & 2 deletions config/profile.json
Original file line number Diff line number Diff line change
@@ -3,22 +3,38 @@
"uniqueKeys" : [ "application" ],
"equalKeys" : [ "application", "default", "visible" ]
},
"categoryGroupVisibilities" : {
"uniqueKeys" : [ "dataCategoryGroup" ],
"equalKeys" : [ "dataCategoryGroup", "dataCategories", "visibility" ]
},
"classAccesses" : {
"uniqueKeys" : [ "apexClass" ],
"equalKeys" : [ "apexClass", "enabled" ]
},
"customPermissions" : {
"uniqueKeys" : [ "name" ],
"equalKeys" : [ "name", "enabled" ]
},
"externalDataSourceAccesses" : {
"uniqueKeys" : [ "externalDataSource" ],
"equalKeys" : [ "externalDataSource", "enabled" ]
},
"fieldPermissions" : {
"uniqueKeys" : [ "field" ],
"equalKeys" : [ "field", "editable", "readable" ]
"equalKeys" : [ "field", "editable", "hidden", "readable" ]
},
"layoutAssignments" : {
"exclusiveUniqueKeys" : [ ["recordType"], ["layout"] ],
"equalKeys" : [ "layout", "recordType" ]
},
"loginHours" : {
"uniqueKeys" : [ "weekdayStart", "weekdayEnd" ],
"equalKeys" : [ "weekdayStart", "weekdayEnd" ]
},
"loginIpRanges" : {
"uniqueKeys" : [ "startAddress", "endAddress" ],
"equalKeys" : [ "description", "endAddress", "startAddress" ]
},
"objectPermissions" : {
"uniqueKeys" : [ "object" ],
"equalKeys" : [ "object", "allowCreate", "allowDelete",
@@ -31,7 +47,7 @@
},
"recordTypeVisibilities" : {
"uniqueKeys" : [ "recordType" ],
"equalKeys" : [ "recordType", "default", "visible" ]
"equalKeys" : [ "recordType", "default", "visible", "personAccountDefault" ]
},
"tabVisibilities" : {
"uniqueKeys" : [ "tab" ],
3 changes: 3 additions & 0 deletions nodes/Base.permissionset
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<PermissionSet xmlns="http://soap.sforce.com/2006/04/metadata">
</PermissionSet>
3 changes: 3 additions & 0 deletions nodes/Base.profile
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<Profile xmlns="http://soap.sforce.com/2006/04/metadata">
</Profile>
75 changes: 50 additions & 25 deletions sfdc_merge.groovy
Original file line number Diff line number Diff line change
@@ -9,36 +9,17 @@ Logger logger = Logger.getLogger("")
def mergeType = args[3]
def scriptBase = args[4]
def xmlParser = new XmlParser(false, true, true)
def ancientNodes = xmlParser.parse(args[0])
def metadataType = getMetadataType(args[0], args[1], args[2])
def basePath = getNodeBase(metadataType, scriptBase)
def profile = xmlParser.parse(basePath)
def ancientNodes = xmlParser.parse(treatNoBase(args[0], basePath))
def oursNodes = xmlParser.parse(args[1])
def theirsNodes = xmlParser.parse(args[2])
def conflictOurs = xmlParser.parse(scriptBase + '/nodes/ConflictOurs.xml')
def conflictTheirs = xmlParser.parse(scriptBase + '/nodes/ConflictTheirs.xml')
def conflictNoOther = xmlParser.parse(scriptBase + '/nodes/ConflictNoOther.xml')

def patchCore = scriptBase
def patchConfig = scriptBase

switch(mergeType) {
case 'profile':
patchCore += '/core/core.profile'
patchConfig += '/config/profile.json'
break
case 'permissionset':
patchCore += '/core/core.permissionset'
patchConfig += '/config/permissionset.json'
break
case 'labels':
patchCore += '/core/core.labels'
patchConfig += '/config/labels.json'
break
default:
System.exit(1)
break
}

def base = xmlParser.parse(patchCore)
def config = new JsonSlurperClassic().parse(new File(patchConfig))
def config = new JsonSlurperClassic().parse(new File(getConfigPath(metadataType, scriptBase)))

// #### MAIN ####
ancient = [:]
@@ -76,7 +57,7 @@ theirsNodes."*".each { node ->
isEqualsToAncient = areNodesEqual(node, ancient[uniqueNodeKey], config."${getLocalPart(node)}")
existsInOurs = oursIds.remove(uniqueNodeKey)
isEqualsToOurs = areNodesEqual(node, ours[uniqueNodeKey], config."${getLocalPart(node)}")

if ((!existsInAncient && existsInOurs && isEqualsToOurs) ||
(existsInAncient && (
(existsInOurs && (isEqualsToOurs || isEqualsToAncient)) ||
@@ -201,3 +182,47 @@ def getLocalPart(def node) {
return node.name().split(':')[0]
}
}
def treatNoBase(def path1, def path2) {
def tmpFile = new File(path1)
if (tmpFile.length()>0)
{
return path1
} else {
return path2
}
}

def getMetadataType(def path1, def path2, def path3) {
def tmpFile = new File(path1)
if (tmpFile.length()==0)
{
tmpFile = new File(path2)
if (tmpFile.length()==0)
{
tmpFile = new File(path3)
}
}
def lineToRead = 0
while (!tmpFile.readLines().get(lineToRead).contains('xmlns')) {
lineToRead = lineToRead + 1
}
switch (tmpFile.readLines().get(lineToRead).toLowerCase()) {
case ~/.*profile.*/:
return 'Profile'
break;
case ~/.*permissionset.*/:
return 'PermissionSet'
break;
default:
println "Bad input, this metadata type not handled"
System.exit(1)
}
}

def getNodeBase(def metadataType, def scriptBase) {
return scriptBase + '/nodes/Base.' + metadataType.toLowerCase()
}

def getConfigPath(def metadataType, def scriptBase) {
return scriptBase + '/conf/merge-' + metadataType.toLowerCase() + '-config.json'
}
You are viewing a condensed version of this merge commit. You can view the full changes here.