mdata 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/mdata +1 -1
- data/lib/mdata/metadata/Profile.rb +22 -0
- data/lib/mdata/metadata.rb +9 -0
- data/lib/mdata/types/ApexClassAccess.rb +5 -0
- data/lib/mdata/types/ApexPageAccess.rb +5 -0
- data/lib/mdata/types/ApplicationVisibility.rb +5 -0
- data/lib/mdata/types/CustomPermissions.rb +5 -0
- data/lib/mdata/types/ExternalDataSourceAccess.rb +5 -0
- data/lib/mdata/types/FieldLevelSecurity.rb +24 -0
- data/lib/mdata/types/LayoutAssignments.rb +5 -0
- data/lib/mdata/types/LoginHours.rb +5 -0
- data/lib/mdata/types/LoginIpRange.rb +5 -0
- data/lib/mdata/types/ObjectPermissions.rb +5 -0
- data/lib/mdata/types/RecordTypeVisibility.rb +5 -0
- data/lib/mdata/types/TabVisibility.rb +5 -0
- data/lib/mdata/types/UserPermission.rb +5 -0
- data/lib/mdata/types.rb +9 -0
- data/lib/mdata.rb +4 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e3bbd437f56887d62ef25076a5b592e38adc217
|
4
|
+
data.tar.gz: fcd07349f0490723c12d3c50f383644d07d40914
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47797064e35bad49dd8b155eeb473c3be459c74cf8ba1f7b2104677c986889f6d0ca8029f7d775f32d68e8beb55f3b982c947114d8be7e3d2023208cfea86326
|
7
|
+
data.tar.gz: d2c9fc0697e1b24ae895493f5116a9a67c9fd9e7ad4430de9c969667caf2698784193e36b7766056c3fcdc542a19562e2fdd0165d879428e7d920c04918dd94a
|
data/bin/mdata
CHANGED
@@ -5,7 +5,7 @@ require 'commander/import'
|
|
5
5
|
require 'mdata/metadata'
|
6
6
|
require 'terminal-table'
|
7
7
|
|
8
|
-
program :version, '1.0.
|
8
|
+
program :version, '1.0.1'
|
9
9
|
program :description, 'Your Salesforce metadata navigator and manipulator'
|
10
10
|
program :help, 'Author', 'Ben Burwell <ben.burwell@trifecta.com>'
|
11
11
|
|
@@ -4,6 +4,11 @@ require 'mdata/types'
|
|
4
4
|
|
5
5
|
module Salesforce
|
6
6
|
module Metadata
|
7
|
+
# A Salesforce Profile metadata object.
|
8
|
+
#
|
9
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm
|
10
|
+
#
|
11
|
+
# @author Ben Burwell
|
7
12
|
class Profile
|
8
13
|
include ROXML
|
9
14
|
|
@@ -58,6 +63,15 @@ module Salesforce
|
|
58
63
|
as: [Salesforce::Types::ProfileUserPermission],
|
59
64
|
from: 'userPermissions'
|
60
65
|
|
66
|
+
# Read a profile file from its name and directory
|
67
|
+
#
|
68
|
+
# The default file path is `./src/profiles/NAME.profile`, but the
|
69
|
+
# directory can be overridden by passing a non-nil String.
|
70
|
+
#
|
71
|
+
# @param name [String] the name of the profile to read, like 'Admin'
|
72
|
+
# @param dir [String] the directory to search for the profile in. If
|
73
|
+
# nil, defaults to `./src/profiles`.
|
74
|
+
# @return [Profile] the profile object that has been instantiated
|
61
75
|
def self.read name, dir
|
62
76
|
dir = './src/profiles' if dir.nil?
|
63
77
|
filename = "#{dir}/#{name}.profile"
|
@@ -66,6 +80,9 @@ module Salesforce
|
|
66
80
|
profile
|
67
81
|
end
|
68
82
|
|
83
|
+
# Save the profile to disk, writing it to the file from whence it came
|
84
|
+
#
|
85
|
+
# Relies on the profile object having a `@filename` to save to.
|
69
86
|
def save
|
70
87
|
doc = ::Nokogiri::XML::Document.new
|
71
88
|
doc.root = to_xml()
|
@@ -75,6 +92,11 @@ module Salesforce
|
|
75
92
|
end
|
76
93
|
end
|
77
94
|
|
95
|
+
# Create an empty profile by name in directory
|
96
|
+
#
|
97
|
+
# @param name [String] the name of the profile to create
|
98
|
+
# @param dir [String] the directory to create it in, defaulting to
|
99
|
+
# `./src/profiles`.
|
78
100
|
def self.touch name, dir
|
79
101
|
dir = './src/profiles' if dir.nil?
|
80
102
|
filename = "#{dir}/#{name}.profile"
|
data/lib/mdata/metadata.rb
CHANGED
@@ -1 +1,10 @@
|
|
1
1
|
require 'mdata/metadata/Profile'
|
2
|
+
|
3
|
+
module Salesforce
|
4
|
+
# The Metadata module encapsulates the first-class metadata object types in
|
5
|
+
# Salesforce. These are things like Profiles, PermissionSets, Flows, and so
|
6
|
+
# on.
|
7
|
+
#
|
8
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_types_list.htm
|
9
|
+
module Metadata; end
|
10
|
+
end
|
@@ -2,6 +2,10 @@ require 'roxml'
|
|
2
2
|
|
3
3
|
module Salesforce
|
4
4
|
module Types
|
5
|
+
# A generic ApexClassAccess class that can be extended for specific
|
6
|
+
# metadata objects, e.g. ProfileApexClassAccess.
|
7
|
+
#
|
8
|
+
# @author Ben Burwell
|
5
9
|
class ApexClassAccess
|
6
10
|
include ROXML
|
7
11
|
|
@@ -9,6 +13,7 @@ module Salesforce
|
|
9
13
|
xml_accessor :enabled
|
10
14
|
end
|
11
15
|
|
16
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm#profileApexClassAccess_title
|
12
17
|
class ProfileApexClassAccess < ApexClassAccess; end
|
13
18
|
end
|
14
19
|
end
|
@@ -2,6 +2,10 @@ require 'roxml'
|
|
2
2
|
|
3
3
|
module Salesforce
|
4
4
|
module Types
|
5
|
+
# A generic ApexPageAccess class that can be extended for specific
|
6
|
+
# metadata objects, e.g. ProfileApexPageAccess.
|
7
|
+
#
|
8
|
+
# @author Ben Burwell
|
5
9
|
class ApexPageAccess
|
6
10
|
include ROXML
|
7
11
|
|
@@ -9,6 +13,7 @@ module Salesforce
|
|
9
13
|
xml_accessor :enabled
|
10
14
|
end
|
11
15
|
|
16
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm#profileApexPageAccess_title
|
12
17
|
class ProfileApexPageAccess < ApexPageAccess; end
|
13
18
|
end
|
14
19
|
end
|
@@ -2,6 +2,10 @@ require 'roxml'
|
|
2
2
|
|
3
3
|
module Salesforce
|
4
4
|
module Types
|
5
|
+
# A generic ApplicationVisibility class that can be extended for specific
|
6
|
+
# metadata objects, e.g. ProfileApplicationVisibility.
|
7
|
+
#
|
8
|
+
# @author Ben Burwell
|
5
9
|
class ApplicationVisibility
|
6
10
|
include ROXML
|
7
11
|
|
@@ -10,6 +14,7 @@ module Salesforce
|
|
10
14
|
xml_accessor :visible
|
11
15
|
end
|
12
16
|
|
17
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm#profileapplicationvisibility_title
|
13
18
|
class ProfileApplicationVisibility < ApplicationVisibility; end
|
14
19
|
end
|
15
20
|
end
|
@@ -2,6 +2,10 @@ require 'roxml'
|
|
2
2
|
|
3
3
|
module Salesforce
|
4
4
|
module Types
|
5
|
+
# A generic CustomPermissions class that can be extended for specific
|
6
|
+
# metadata objects, e.g. ProfileCustomPermissions.
|
7
|
+
#
|
8
|
+
# @author Ben Burwell
|
5
9
|
class CustomPermissions
|
6
10
|
include ROXML
|
7
11
|
|
@@ -9,6 +13,7 @@ module Salesforce
|
|
9
13
|
xml_accessor :name
|
10
14
|
end
|
11
15
|
|
16
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm#ProfileCustomPermissions_title
|
12
17
|
class ProfileCustomPermissions < CustomPermissions; end
|
13
18
|
end
|
14
19
|
end
|
@@ -2,6 +2,10 @@ require 'roxml'
|
|
2
2
|
|
3
3
|
module Salesforce
|
4
4
|
module Types
|
5
|
+
# A generic ExternalDataSource class that can be extended for specific
|
6
|
+
# metadata objects, e.g. ProfileExternalDataSource.
|
7
|
+
#
|
8
|
+
# @author Ben Burwell
|
5
9
|
class ExternalDataSourceAccess
|
6
10
|
include ROXML
|
7
11
|
|
@@ -9,6 +13,7 @@ module Salesforce
|
|
9
13
|
xml_accessor :externalDataSource
|
10
14
|
end
|
11
15
|
|
16
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm#profileExternalDataSourceAccess_title
|
12
17
|
class ProfileExternalDataSourceAccess < ExternalDataSourceAccess; end
|
13
18
|
end
|
14
19
|
end
|
@@ -2,6 +2,10 @@ require 'roxml'
|
|
2
2
|
|
3
3
|
module Salesforce
|
4
4
|
module Types
|
5
|
+
# A generic FieldLevelSecurity class that can be extended for specific
|
6
|
+
# metadata objects, e.g. ProfileFieldLevelSecurity.
|
7
|
+
#
|
8
|
+
# @author Ben Burwell
|
5
9
|
class FieldLevelSecurity
|
6
10
|
include ROXML
|
7
11
|
|
@@ -10,6 +14,11 @@ module Salesforce
|
|
10
14
|
xml_accessor :hidden
|
11
15
|
xml_accessor :readable
|
12
16
|
|
17
|
+
# Get all the permissions granted as an easy-to-use Array
|
18
|
+
#
|
19
|
+
# @author Ben Burwell
|
20
|
+
# @return [Array] an array of strings representing the permissions that
|
21
|
+
# are granted.
|
13
22
|
def get_permissions
|
14
23
|
permissions = Array.new
|
15
24
|
permissions.push 'Editable' if @editable == 'true'
|
@@ -18,10 +27,24 @@ module Salesforce
|
|
18
27
|
permissions
|
19
28
|
end
|
20
29
|
|
30
|
+
# Get a string representation of the permissions
|
31
|
+
#
|
32
|
+
# @author Ben Burwell
|
33
|
+
# @return [String] the permissions granted on the field, comma separated
|
21
34
|
def to_s
|
22
35
|
get_permissions.join(', ')
|
23
36
|
end
|
24
37
|
|
38
|
+
# Produces a string representation of the permissions suitable for
|
39
|
+
# displaying in a list, à la `ls -la`. The resulting list might look
|
40
|
+
# something like this:
|
41
|
+
#
|
42
|
+
# Readable Editable
|
43
|
+
# Hidden
|
44
|
+
# Readable
|
45
|
+
#
|
46
|
+
# @author Ben Burwell
|
47
|
+
# @return [String] the permissions granted on the field, flag-style
|
25
48
|
def to_flag_style
|
26
49
|
flags = ''
|
27
50
|
if @readable == 'true'
|
@@ -47,6 +70,7 @@ module Salesforce
|
|
47
70
|
|
48
71
|
end
|
49
72
|
|
73
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm#profilefieldlevelsecurity_title
|
50
74
|
class ProfileFieldLevelSecurity < FieldLevelSecurity; end
|
51
75
|
end
|
52
76
|
end
|
@@ -2,6 +2,10 @@ require 'roxml'
|
|
2
2
|
|
3
3
|
module Salesforce
|
4
4
|
module Types
|
5
|
+
# A generic LayoutAssignments class that can be extended for specific
|
6
|
+
# metadata objects, e.g. ProfileLayoutAssignments.
|
7
|
+
#
|
8
|
+
# @author Ben Burwell
|
5
9
|
class LayoutAssignments
|
6
10
|
include ROXML
|
7
11
|
|
@@ -9,6 +13,7 @@ module Salesforce
|
|
9
13
|
xml_accessor :recordType
|
10
14
|
end
|
11
15
|
|
16
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm#profilelayoutassignments
|
12
17
|
class ProfileLayoutAssignments < LayoutAssignments; end
|
13
18
|
end
|
14
19
|
end
|
@@ -2,6 +2,10 @@ require 'roxml'
|
|
2
2
|
|
3
3
|
module Salesforce
|
4
4
|
module Types
|
5
|
+
# A generic LoginHours class that can be extended for specific
|
6
|
+
# metadata objects, e.g. ProfileLoginHours.
|
7
|
+
#
|
8
|
+
# @author Ben Burwell
|
5
9
|
class LoginHours
|
6
10
|
include ROXML
|
7
11
|
|
@@ -21,6 +25,7 @@ module Salesforce
|
|
21
25
|
xml_accessor :sundayEnd
|
22
26
|
end
|
23
27
|
|
28
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm#ProfileLoginHours_title
|
24
29
|
class ProfileLoginHours < LoginHours; end
|
25
30
|
end
|
26
31
|
end
|
@@ -2,6 +2,10 @@ require 'roxml'
|
|
2
2
|
|
3
3
|
module Salesforce
|
4
4
|
module Types
|
5
|
+
# A generic LoginIpRange class that can be extended for specific
|
6
|
+
# metadata objects, e.g. ProfileLoginIpRange.
|
7
|
+
#
|
8
|
+
# @author Ben Burwell
|
5
9
|
class LoginIpRange
|
6
10
|
include ROXML
|
7
11
|
|
@@ -10,6 +14,7 @@ module Salesforce
|
|
10
14
|
xml_accessor :startAddress
|
11
15
|
end
|
12
16
|
|
17
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm#ProfileLoginIpRange_title
|
13
18
|
class ProfileLoginIpRange < LoginIpRange; end
|
14
19
|
end
|
15
20
|
end
|
@@ -2,6 +2,10 @@ require 'roxml'
|
|
2
2
|
|
3
3
|
module Salesforce
|
4
4
|
module Types
|
5
|
+
# A generic ObjectPermissions class that can be extended for specific
|
6
|
+
# metadata objects, e.g. ProfileObjectPermissions.
|
7
|
+
#
|
8
|
+
# @author Ben Burwell
|
5
9
|
class ObjectPermissions
|
6
10
|
include ROXML
|
7
11
|
|
@@ -14,6 +18,7 @@ module Salesforce
|
|
14
18
|
xml_accessor :viewAllRecords
|
15
19
|
end
|
16
20
|
|
21
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm#profileobjectpermissions_title
|
17
22
|
class ProfileObjectPermissions < ObjectPermissions; end
|
18
23
|
end
|
19
24
|
end
|
@@ -2,6 +2,10 @@ require 'roxml'
|
|
2
2
|
|
3
3
|
module Salesforce
|
4
4
|
module Types
|
5
|
+
# A generic RecordTypeVisibility class that can be extended for specific
|
6
|
+
# metadata objects, e.g. ProfileRecordTypeVisibility.
|
7
|
+
#
|
8
|
+
# @author Ben Burwell
|
5
9
|
class RecordTypeVisibility
|
6
10
|
include ROXML
|
7
11
|
|
@@ -11,6 +15,7 @@ module Salesforce
|
|
11
15
|
xml_accessor :visible
|
12
16
|
end
|
13
17
|
|
18
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm#profilerecordtypevisibility_title
|
14
19
|
class ProfileRecordTypeVisibility < RecordTypeVisibility; end
|
15
20
|
end
|
16
21
|
end
|
@@ -2,6 +2,10 @@ require 'roxml'
|
|
2
2
|
|
3
3
|
module Salesforce
|
4
4
|
module Types
|
5
|
+
# A generic TabVisibility class that can be extended for specific
|
6
|
+
# metadata objects, e.g. ProfileTabVisibility.
|
7
|
+
#
|
8
|
+
# @author Ben Burwell
|
5
9
|
class TabVisibility
|
6
10
|
include ROXML
|
7
11
|
|
@@ -9,6 +13,7 @@ module Salesforce
|
|
9
13
|
xml_accessor :visibility # enum: DefaultOff, DefaultOn, Hidden
|
10
14
|
end
|
11
15
|
|
16
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm#profiletabvisibility_title
|
12
17
|
class ProfileTabVisibility < TabVisibility; end
|
13
18
|
end
|
14
19
|
end
|
@@ -2,6 +2,10 @@ require 'roxml'
|
|
2
2
|
|
3
3
|
module Salesforce
|
4
4
|
module Types
|
5
|
+
# A generic UserPermission class that can be extended for specific
|
6
|
+
# metadata objects, e.g. ProfileUserPermission.
|
7
|
+
#
|
8
|
+
# @author Ben Burwell
|
5
9
|
class UserPermission
|
6
10
|
include ROXML
|
7
11
|
|
@@ -9,6 +13,7 @@ module Salesforce
|
|
9
13
|
xml_accessor :name
|
10
14
|
end
|
11
15
|
|
16
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_profile.htm#profileUserPerm_title
|
12
17
|
class ProfileUserPermission < UserPermission; end
|
13
18
|
end
|
14
19
|
end
|
data/lib/mdata/types.rb
CHANGED
@@ -11,3 +11,12 @@ require 'mdata/types/ApexPageAccess'
|
|
11
11
|
require 'mdata/types/RecordTypeVisibility'
|
12
12
|
require 'mdata/types/TabVisibility'
|
13
13
|
require 'mdata/types/UserPermission'
|
14
|
+
|
15
|
+
module Salesforce
|
16
|
+
# The `Salesforce::Types` module encapsulates XML node type classes, like
|
17
|
+
# `ApexClassAccess`. These base types are extended for each metadata object
|
18
|
+
# type that needs them, because for some reason ProfileObjectPermissions is
|
19
|
+
# different than PermissionSetObjectPermissions to Salesforce, despite them
|
20
|
+
# having identical structures.
|
21
|
+
module Types; end
|
22
|
+
end
|
data/lib/mdata.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mdata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Burwell
|
@@ -103,3 +103,4 @@ signing_key:
|
|
103
103
|
specification_version: 4
|
104
104
|
summary: Your Salesforce metadata navigator and manipulator
|
105
105
|
test_files: []
|
106
|
+
has_rdoc:
|