sf_cli 1.0.0.beta5 → 1.1.0
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/README.rdoc +17 -0
- data/lib/sf_cli/console/commands.rb +22 -8
- data/lib/sf_cli/sf/org/core.rb +6 -0
- data/lib/sf_cli/sf/org/display.rb +2 -2
- data/lib/sf_cli/sf/org/list.rb +10 -10
- data/lib/sf_cli/sf/org/list_limits.rb +56 -0
- data/lib/sf_cli/sf/org/list_metadata.rb +91 -0
- data/lib/sf_cli/sf/org/list_metadata_types.rb +85 -0
- data/lib/sf_cli/sf/org/login.rb +16 -13
- data/lib/sf_cli/sf/project/core.rb +1 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 415eb0ebdf5cd6f1ca904271f4e0f15eef2a99342259d46a9eb7dd32b5e59024
|
4
|
+
data.tar.gz: 754bca7f1db6ecbd376e49e20f659d8dd9c06185cfe1f19d08b783baf028e744
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 296de6697a2e850a5971a7c338c508154e6f640a4573be0240dd66cf6485b5209bfd6844c69362a6c9611e6519839825f38e76eabbcc64ea32d1036dbc523b96
|
7
|
+
data.tar.gz: ea6ce0fce6cbfae46ffcf54a79c22065ffc97f5bd061e6f761337391dbafb16ee04fe4cd110d77505422820c88b8e11a386ac69f22cd1c00862e5b0884cbd53e
|
data/README.rdoc
CHANGED
@@ -63,3 +63,20 @@ With sf command:
|
|
63
63
|
Doing the same thing independently:
|
64
64
|
contact = Contact.select(:Id, :Name).where(Name: 'Akin Kristen').take
|
65
65
|
contact.Name # Akin Kristen
|
66
|
+
== Developer Console
|
67
|
+
Developer console integrates both sf_cli's command methods and object model librry into IRB to make scripting easier in REPL.
|
68
|
+
|
69
|
+
You can directly use sf_cli's command methods:
|
70
|
+
$ sf_cli
|
71
|
+
> sf.query "SELECT Id, Name FROM Case", target_org: :your_org
|
72
|
+
|
73
|
+
Object Model is also available:
|
74
|
+
> use :your_org_name
|
75
|
+
> gen :Account, :Contact, :User #=> generate 3 Object model classes
|
76
|
+
> acc = Account.find_by Name: 'Hoge Fuga'
|
77
|
+
|
78
|
+
There are some other console commands:
|
79
|
+
> query "SELECT Id, Name, ... FROM BazBar__c" # just same as `sf data query` with human readable format
|
80
|
+
> apex "System.debug('abc');" # execute Apex code instantly
|
81
|
+
|
82
|
+
Type *help* to know all console commands
|
@@ -12,8 +12,6 @@ module SfCli
|
|
12
12
|
module Commands
|
13
13
|
def use(target_org)
|
14
14
|
org_info = sf.org.display target_org: target_org
|
15
|
-
#sf.org.login_web target_org: target_org, instance_url: org_info.instance_url unless org_info.connected?
|
16
|
-
|
17
15
|
conn = SfCli::Sf::Model::SfCommandConnection.new target_org: target_org, instance_url: org_info.instance_url
|
18
16
|
conn.open unless org_info.connected?
|
19
17
|
|
@@ -56,32 +54,42 @@ module SfCli
|
|
56
54
|
conf.inspect_mode = true
|
57
55
|
end
|
58
56
|
|
57
|
+
def orgs
|
58
|
+
conf.inspect_mode = false
|
59
|
+
system 'sf org list'
|
60
|
+
conf.inspect_mode = true
|
61
|
+
end
|
62
|
+
|
59
63
|
alias :gen :generate
|
60
64
|
alias :conn :connection
|
61
65
|
|
62
|
-
def help
|
66
|
+
def help
|
63
67
|
conf.inspect_mode = false
|
64
68
|
puts <<~HELP
|
65
69
|
Available commands:
|
66
|
-
use --- set current org.
|
70
|
+
use --- set current org.
|
67
71
|
gen --- generate Object model classes
|
68
72
|
query --- Query by SOQL with human readable format
|
69
73
|
apex --- run Apex code
|
70
74
|
conn --- show current connection setting
|
75
|
+
orgs --- show the list of org
|
71
76
|
|
72
77
|
Syntax:
|
73
78
|
[use]
|
74
79
|
use target-org
|
75
80
|
|
76
81
|
parameters:
|
77
|
-
targat-org --- Username or alias of the org you are going to use.
|
82
|
+
targat-org --- Username or alias of the org you are going to use. If you are not sure about them, check by `sf org list`.
|
83
|
+
|
84
|
+
example:
|
85
|
+
use :your_org_alias
|
78
86
|
|
79
87
|
[gen]
|
80
88
|
gen object-name, object-name, ...
|
81
89
|
generate object-name, object-name, ...
|
82
90
|
|
83
91
|
parameters:
|
84
|
-
object-name --- Comma separated Names. Symbol or String can be OK. At least 1 object name is required.
|
92
|
+
object-name --- Comma separated Names. Symbol or String can be OK. At least 1 object name is required.
|
85
93
|
|
86
94
|
example:
|
87
95
|
gen :Account, :Contact, :User
|
@@ -90,13 +98,16 @@ module SfCli
|
|
90
98
|
query SOQL
|
91
99
|
|
92
100
|
parameters:
|
93
|
-
SOQL --- soql
|
101
|
+
SOQL --- soql.You must quote it like "SELECT ...."
|
102
|
+
|
103
|
+
example:
|
104
|
+
query "SELECT Id, Name FROM Account LIMIT 3"
|
94
105
|
|
95
106
|
[apex]
|
96
107
|
apex apex_code
|
97
108
|
|
98
109
|
parameters:
|
99
|
-
apex code --- Apex code you want to execute
|
110
|
+
apex code --- Apex code you want to execute.You must quote the code.
|
100
111
|
|
101
112
|
example:
|
102
113
|
apex "System.debug('abc');"
|
@@ -104,6 +115,9 @@ module SfCli
|
|
104
115
|
[conn]
|
105
116
|
conn
|
106
117
|
connection
|
118
|
+
|
119
|
+
[orgs]
|
120
|
+
orgs
|
107
121
|
HELP
|
108
122
|
conf.inspect_mode = true
|
109
123
|
end
|
data/lib/sf_cli/sf/org/core.rb
CHANGED
@@ -2,6 +2,9 @@ require_relative '../core/base'
|
|
2
2
|
require_relative './login'
|
3
3
|
require_relative './display'
|
4
4
|
require_relative './list'
|
5
|
+
require_relative './list_metadata_types'
|
6
|
+
require_relative './list_metadata'
|
7
|
+
require_relative './list_limits'
|
5
8
|
|
6
9
|
module SfCli
|
7
10
|
module Sf
|
@@ -17,6 +20,9 @@ module SfCli
|
|
17
20
|
include Login
|
18
21
|
include Display
|
19
22
|
include List
|
23
|
+
include ListMetadataTypes
|
24
|
+
include ListMetadata
|
25
|
+
include ListLimits
|
20
26
|
end
|
21
27
|
end
|
22
28
|
end
|
@@ -8,8 +8,8 @@ module SfCli::Sf::Org
|
|
8
8
|
|
9
9
|
#
|
10
10
|
# Returns the org's connection information
|
11
|
-
# @param target_org
|
12
|
-
# @param api_version [Numeric]
|
11
|
+
# @param target_org [Symbol,String] an alias of paticular org, or username can be used
|
12
|
+
# @param api_version [Numeric] override the api version used for api requests made by this command
|
13
13
|
#
|
14
14
|
# @note this function returns the org information including security sensitive things such as access token, username and so on.
|
15
15
|
# @return [ConnectionInfo] the org's connection information
|
data/lib/sf_cli/sf/org/list.rb
CHANGED
@@ -32,21 +32,21 @@ module SfCli::Sf::Org
|
|
32
32
|
# List orgs you’ve created or authenticated to
|
33
33
|
#
|
34
34
|
# @note this function returns org information including security sensitive things such as access token, username and so on.
|
35
|
-
# @return [
|
35
|
+
# @return [Array] the org configulations
|
36
36
|
#
|
37
37
|
# @example
|
38
|
-
#
|
38
|
+
# org_configs = sf.org.list # returns a list of OrgConfig
|
39
39
|
#
|
40
|
-
#
|
41
|
-
#
|
40
|
+
# org_configs.first.accesstoken # returns the access token
|
41
|
+
# org_configs.first.instance_url # returns the org's url
|
42
42
|
#
|
43
|
-
#
|
44
|
-
#
|
45
|
-
#
|
46
|
-
#
|
47
|
-
#
|
43
|
+
# org_configs.first.conncected? # check the connection status
|
44
|
+
# org_configs.first.devhub? # check if the org is devhub or not
|
45
|
+
# org_configs.first.scratch? # check if the org is scratch or not
|
46
|
+
# org_configs.first.default? # check if the org is default or not
|
47
|
+
# org_configs.first.default_devhub? # check if the org is devhub default or not
|
48
48
|
#
|
49
|
-
#
|
49
|
+
# @see https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_org_commands_unified.htm#cli_reference_org_list_unified command reference
|
50
50
|
#
|
51
51
|
def list
|
52
52
|
flags = {
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module SfCli::Sf::Org
|
2
|
+
module ListLimits
|
3
|
+
#
|
4
|
+
# Returns the metadata types that are enabled for your org.
|
5
|
+
# @param target_org [Symbol,String] an alias of paticular org, or username can be used
|
6
|
+
# @param api_version [Numeric] override the api version used for api requests made by this command
|
7
|
+
#
|
8
|
+
# @return [Limits] the list of limit information
|
9
|
+
#
|
10
|
+
# @example
|
11
|
+
# limits = sf.org.list_limits
|
12
|
+
# limits.names #=> ["ActiveScratchOrgs","AnalyticsExternalDataSizeMB", ...]
|
13
|
+
# limits.find :ActiveScratchOrgs #=> <Limit: name="ActiveScratchOrgs", remaining=3, max=3>
|
14
|
+
#
|
15
|
+
# @see https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_org_commands_unified.htm#cli_reference_org_list_limits_unified command reference
|
16
|
+
#
|
17
|
+
def list_limits(target_org: nil, api_version: nil)
|
18
|
+
flags = {
|
19
|
+
:"target-org" => target_org,
|
20
|
+
:"api-version" => api_version,
|
21
|
+
}
|
22
|
+
action = __method__.to_s.tr('_', ' ')
|
23
|
+
json = exec(action, flags: flags, redirection: :null_stderr)
|
24
|
+
|
25
|
+
Limits.new(json['result'])
|
26
|
+
end
|
27
|
+
|
28
|
+
Limit = Data.define(:name, :remaining, :max)
|
29
|
+
|
30
|
+
class Limits
|
31
|
+
include Enumerable
|
32
|
+
|
33
|
+
def initialize(list)
|
34
|
+
@list = list.map {|limit| Limit.new(**limit)}
|
35
|
+
end
|
36
|
+
|
37
|
+
def each(&block)
|
38
|
+
list.each(&block)
|
39
|
+
end
|
40
|
+
|
41
|
+
def names
|
42
|
+
list.map(&:name)
|
43
|
+
end
|
44
|
+
|
45
|
+
def find(name)
|
46
|
+
list.find{|m| m.name == name.to_s}
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def list
|
52
|
+
@list
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
module SfCli::Sf::Org
|
2
|
+
module ListMetadata
|
3
|
+
#
|
4
|
+
# Returns the metadata types that are enabled for your org.
|
5
|
+
# @param metadata [Symbol,String] name of metadata type
|
6
|
+
# @param folder [Symbol,String] folder associated with the component such as Report, EmailTemplate, Dashboard and Document
|
7
|
+
# @param target_org [Symbol,String] an alias of paticular org, or username can be used
|
8
|
+
# @param api_version [Numeric] override the api version used for api requests made by this command
|
9
|
+
# @param output_file [String] pathname of the file in which to write the results
|
10
|
+
#
|
11
|
+
# @return [MetadataList] the list of metadata, which contains its name, its source file path and so on
|
12
|
+
#
|
13
|
+
# @example
|
14
|
+
# list = sf.org.list_metadata :ApexClass
|
15
|
+
# list.names #=> ["CommunitiesLandingController","SiteLoginControllerTest", ...]
|
16
|
+
# list.find :MyProfilePageController #=> <Metadata: full_name="MyProfilePageController" ...>
|
17
|
+
#
|
18
|
+
# @see https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_org_commands_unified.htm#cli_reference_org_list_metadata_unified command reference
|
19
|
+
#
|
20
|
+
def list_metadata(metadata, folder: nil, target_org: nil, api_version: nil, output_file: nil)
|
21
|
+
flags = {
|
22
|
+
:"metadata-type" => metadata,
|
23
|
+
:"folder" => folder,
|
24
|
+
:"target-org" => target_org,
|
25
|
+
:"api-version" => api_version,
|
26
|
+
:"output-file" => output_file,
|
27
|
+
}
|
28
|
+
action = __method__.to_s.tr('_', ' ')
|
29
|
+
json = exec(action, flags: flags, redirection: :null_stderr)
|
30
|
+
|
31
|
+
MetadataList.new(json['result'])
|
32
|
+
end
|
33
|
+
|
34
|
+
Metadata = Data.define(
|
35
|
+
:created_by_id,
|
36
|
+
:created_by_name,
|
37
|
+
:created_date,
|
38
|
+
:file_name,
|
39
|
+
:full_name,
|
40
|
+
:id,
|
41
|
+
:last_modified_by_id,
|
42
|
+
:last_modified_by_name,
|
43
|
+
:last_modified_date,
|
44
|
+
:manageable_state,
|
45
|
+
:type) do
|
46
|
+
def name
|
47
|
+
full_name
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class MetadataList
|
52
|
+
include Enumerable
|
53
|
+
|
54
|
+
def initialize(metadata_list)
|
55
|
+
@list = metadata_list.map do |m|
|
56
|
+
Metadata.new(
|
57
|
+
created_by_id: m['createdById'],
|
58
|
+
created_by_name: m['createdByName'],
|
59
|
+
created_date: m['createdDate'],
|
60
|
+
file_name: m['fileName'],
|
61
|
+
full_name: m['fullName'],
|
62
|
+
id: m['id'],
|
63
|
+
last_modified_by_id: m['lastModifiedById'],
|
64
|
+
last_modified_by_name: m['lastModifiedByName'],
|
65
|
+
last_modified_date: m['lastModifiedDate'],
|
66
|
+
manageable_state: m['manageableState'],
|
67
|
+
type: m['type']
|
68
|
+
)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def each(&block)
|
73
|
+
list.each(&block)
|
74
|
+
end
|
75
|
+
|
76
|
+
def names
|
77
|
+
list.map(&:name)
|
78
|
+
end
|
79
|
+
|
80
|
+
def find(name)
|
81
|
+
list.find{|m| m.name == name.to_s}
|
82
|
+
end
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
def list
|
87
|
+
@list
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
module SfCli::Sf::Org
|
2
|
+
module ListMetadataTypes
|
3
|
+
#
|
4
|
+
# Returns the metadata types that are enabled for your org.
|
5
|
+
# @param target_org [Symbol,String] an alias of paticular org, or username can be used
|
6
|
+
# @param api_version [Numeric] override the api version used for api requests made by this command
|
7
|
+
# @param output_file [String] pathname of the file in which to write the results
|
8
|
+
#
|
9
|
+
# @return [Result] the command's output
|
10
|
+
#
|
11
|
+
# @example
|
12
|
+
# result = sf.org.list_metadata_types target_org: :dev
|
13
|
+
# result.metadata_objects.names #=> ["InstalledPackage","CustomLabels", ...]
|
14
|
+
#
|
15
|
+
# @see https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_org_commands_unified.htm#cli_reference_org_list_metadata-types_unified command reference
|
16
|
+
#
|
17
|
+
def list_metadata_types(target_org: nil, api_version: nil, output_file: nil)
|
18
|
+
flags = {
|
19
|
+
:"target-org" => target_org,
|
20
|
+
:"api-version" => api_version,
|
21
|
+
:"output-file" => output_file,
|
22
|
+
}
|
23
|
+
action = __method__.to_s.tr('_', '-').sub('-', ' ')
|
24
|
+
json = exec(action, flags: flags, redirection: :null_stderr)
|
25
|
+
|
26
|
+
Result.new(
|
27
|
+
metadata_objects: MetadataObjects.new(json['result']['metadataObjects']),
|
28
|
+
organization_namespace: json['result']['organizationNamespace'],
|
29
|
+
partial_save_allowed: json['result']['partialSaveAllowed'],
|
30
|
+
test_required: json['result']['testRequired']
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
MetadataObject = Data.define(:directory_name, :in_folder, :meta_file, :suffix, :xml_name, :child_xml_names) do
|
35
|
+
def name
|
36
|
+
xml_name
|
37
|
+
end
|
38
|
+
|
39
|
+
def in_folder?
|
40
|
+
in_folder
|
41
|
+
end
|
42
|
+
|
43
|
+
def meta_file?
|
44
|
+
meta_file
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
Result = Data.define(:metadata_objects, :organization_namespace, :partial_save_allowed, :test_required)
|
49
|
+
|
50
|
+
class MetadataObjects
|
51
|
+
include Enumerable
|
52
|
+
|
53
|
+
def initialize(metadata_objects)
|
54
|
+
@metadata_objects = metadata_objects.map do |mo|
|
55
|
+
MetadataObject.new(
|
56
|
+
directory_name: mo['directoryName'],
|
57
|
+
in_folder: mo['inFolder'],
|
58
|
+
meta_file: mo['metaFile'],
|
59
|
+
suffix: mo['suffix'],
|
60
|
+
xml_name: mo['xmlName'],
|
61
|
+
child_xml_names: mo['childXmlNames']
|
62
|
+
)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def each(&block)
|
67
|
+
metadata_objects.each(&block)
|
68
|
+
end
|
69
|
+
|
70
|
+
def names
|
71
|
+
metadata_objects.map(&:name)
|
72
|
+
end
|
73
|
+
|
74
|
+
def find(name)
|
75
|
+
metadata_objects.find{|mo| mo.name == name.to_s}
|
76
|
+
end
|
77
|
+
|
78
|
+
private
|
79
|
+
|
80
|
+
def metadata_objects
|
81
|
+
@metadata_objects
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
data/lib/sf_cli/sf/org/login.rb
CHANGED
@@ -21,28 +21,31 @@ module SfCli::Sf::Org
|
|
21
21
|
exec(action, flags: flags)
|
22
22
|
end
|
23
23
|
|
24
|
+
# @note This method doesn't support user interactive mode, so *SF_ACCESS_TOKEN* environment variable must be set before calling this method.
|
24
25
|
# Login to the org by access token.
|
25
|
-
#
|
26
|
+
#
|
27
|
+
# If you don't set *SF_ACCESS_TOKEN* in the code, you have to set it outside of the script:
|
28
|
+
#
|
29
|
+
# In Unix/mac
|
30
|
+
# $ SF_ACCESS_TOKEN='xxxxxxxxxx'
|
31
|
+
# $ ruby app_using_sfcli.rb
|
32
|
+
# OR
|
33
|
+
# $ SF_ACCESS_TOKEN='xxxxxxxxxx' ruby app_using_sfcli.rb
|
34
|
+
#
|
35
|
+
# In Windows
|
36
|
+
# > set SF_ACCESS_TOKEN=xxxxxxxxxx
|
37
|
+
# > ruby app_using_sfcli.rb
|
26
38
|
#
|
27
39
|
# @param target_org [Symbol,String] an alias of paticular org, or username can be used
|
28
40
|
# @param instance_url [String] URL of the instance that the org lives on.
|
29
41
|
#
|
30
42
|
# @example
|
31
|
-
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
# How to set env variable outside of Ruby::
|
35
|
-
# In Unix/mac::
|
36
|
-
# $ SF_ACCESS_TOKEN='xxxxxxxxxx'
|
37
|
-
# $ ruby app_using_sfcli.rb
|
38
|
-
# OR
|
39
|
-
# $ SF_ACCESS_TOKEN='xxxxxxxxxx' ruby app_using_sfcli.rb
|
40
|
-
# In Windows::
|
41
|
-
# $ set SF_ACCESS_TOKEN=xxxxxxxxxx
|
42
|
-
# $ ruby app_using_sfcli.rb
|
43
|
+
# ENV['SF_ACCESS_TOKEN'] = 'xxxxxxxxxx'
|
44
|
+
# sf.org.login_access_token instance_url: 'https://hoge.bar.baz.salesforce.com'
|
43
45
|
#
|
44
46
|
# @see https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_org_commands_unified.htm#cli_reference_org_login_access-token_unified command reference
|
45
47
|
#
|
48
|
+
#
|
46
49
|
def login_access_token(instance_url:, target_org: nil)
|
47
50
|
flags = {
|
48
51
|
:"instance-url" => instance_url,
|
@@ -9,6 +9,7 @@ module SfCli
|
|
9
9
|
#
|
10
10
|
# @see https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_project_commands_unified.htm command reference
|
11
11
|
#
|
12
|
+
# @private :nodoc: just for developers
|
12
13
|
module Project
|
13
14
|
# @private :nodoc: just for developers
|
14
15
|
class Core
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sf_cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Takanobu Maekawa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-09-
|
11
|
+
date: 2024-09-29 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: A class library for introducing Salesforce CLI to Ruby scripting. Currenty
|
14
14
|
only sf command is the target of development.
|
@@ -54,6 +54,9 @@ files:
|
|
54
54
|
- lib/sf_cli/sf/org/core.rb
|
55
55
|
- lib/sf_cli/sf/org/display.rb
|
56
56
|
- lib/sf_cli/sf/org/list.rb
|
57
|
+
- lib/sf_cli/sf/org/list_limits.rb
|
58
|
+
- lib/sf_cli/sf/org/list_metadata.rb
|
59
|
+
- lib/sf_cli/sf/org/list_metadata_types.rb
|
57
60
|
- lib/sf_cli/sf/org/login.rb
|
58
61
|
- lib/sf_cli/sf/project/core.rb
|
59
62
|
- lib/sf_cli/sf/project/generate.rb
|