sf_cli 0.0.3 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +49 -0
- data/README.rdoc +30 -8
- data/lib/sf_cli/sf/core/base.rb +80 -0
- data/lib/sf_cli/sf/data/bulk_result_v2.rb +77 -0
- data/lib/sf_cli/sf/data/core.rb +39 -0
- data/lib/sf_cli/sf/data/create_record.rb +30 -0
- data/lib/sf_cli/sf/data/delete_bulk.rb +47 -0
- data/lib/sf_cli/sf/data/delete_record.rb +33 -0
- data/lib/sf_cli/sf/data/delete_resume.rb +47 -0
- data/lib/sf_cli/sf/data/get_record.rb +42 -0
- data/lib/sf_cli/sf/data/helper_methods.rb +47 -0
- data/lib/sf_cli/sf/data/query.rb +120 -0
- data/lib/sf_cli/sf/data/query_helper.rb +57 -0
- data/lib/sf_cli/sf/data/resume.rb +87 -0
- data/lib/sf_cli/sf/data/search.rb +50 -0
- data/lib/sf_cli/sf/data/update_record.rb +38 -0
- data/lib/sf_cli/sf/data/upsert_bulk.rb +50 -0
- data/lib/sf_cli/sf/data/upsert_resume.rb +47 -0
- data/lib/sf_cli/sf/main.rb +31 -0
- data/lib/sf_cli/sf/model/class_definition.rb +112 -0
- data/lib/sf_cli/sf/model/generator.rb +27 -0
- data/lib/sf_cli/sf/model/schema.rb +33 -0
- data/lib/sf_cli/sf/model.rb +21 -0
- data/lib/sf_cli/sf/org/core.rb +23 -0
- data/lib/sf_cli/sf/org/display.rb +41 -0
- data/lib/sf_cli/sf/org/list.rb +67 -0
- data/lib/sf_cli/sf/org/login.rb +64 -0
- data/lib/sf_cli/sf/project/core.rb +83 -0
- data/lib/sf_cli/sf/sobject/core.rb +50 -0
- data/lib/sf_cli.rb +19 -1
- metadata +38 -15
- data/lib/sf_cli/sf/base.rb +0 -34
- data/lib/sf_cli/sf/data.rb +0 -148
- data/lib/sf_cli/sf/org.rb +0 -49
- data/lib/sf_cli/sf/project.rb +0 -68
- data/lib/sf_cli/sf/sobject.rb +0 -41
- data/lib/sf_cli/sf.rb +0 -87
data/lib/sf_cli/sf/project.rb
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
require_relative './base'
|
2
|
-
|
3
|
-
module SfCli
|
4
|
-
class Sf
|
5
|
-
# ==== description
|
6
|
-
# The class representing *sf* *project*
|
7
|
-
#
|
8
|
-
# command reference: https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_project_commands_unified.htm
|
9
|
-
#
|
10
|
-
class Project < Base
|
11
|
-
GenerateResult = Struct.new(:output_dir, :files, :raw_output, :warnings)
|
12
|
-
|
13
|
-
#
|
14
|
-
# generate a Salesforce project. (equivalent to *sf* *project* *generate*)
|
15
|
-
#
|
16
|
-
# *name* --- project name<br>
|
17
|
-
# *template* --- project template name<br>
|
18
|
-
# *output_dir* --- output directory<br>
|
19
|
-
# *manifest* --- switch to create manifest file in the project directory (manifest/package.xml). default: false
|
20
|
-
#
|
21
|
-
def generate(name, manifest: false, template: nil, output_dir: nil)
|
22
|
-
flags = {
|
23
|
-
:name => name,
|
24
|
-
:template => template,
|
25
|
-
:"output-dir" => output_dir,
|
26
|
-
}
|
27
|
-
switches = {
|
28
|
-
manifest: manifest,
|
29
|
-
}
|
30
|
-
json = exec(__method__, flags: flags, switches: switches, redirection: :null_stderr)
|
31
|
-
|
32
|
-
GenerateResult.new(
|
33
|
-
output_dir: json['result']['outputDir'],
|
34
|
-
files: json['result']['created'],
|
35
|
-
raw_output: json['result']['rawOutput'],
|
36
|
-
warnings: json['warnings']
|
37
|
-
)
|
38
|
-
end
|
39
|
-
|
40
|
-
# generate the manifest file of a Salesforce project. (equivalent to *sf* *project* *generate* *manifest*)
|
41
|
-
#
|
42
|
-
# *metadata* --- an array that consists of metadata type like CustomObject, Layout and so on. (default: [])<br>
|
43
|
-
# *api_verson* --- api version (default: nil)<br>
|
44
|
-
# *output_dir* --- manifest's output directory in the project directory. You can use relative path from the project root (default: nil)<br>
|
45
|
-
# *from_org* --- username or alias of the org that contains the metadata components from which to build a manifest (default: nil)<br>
|
46
|
-
# *source_dir* --- paths to the local source files to include in the manifest (default: nil)
|
47
|
-
#
|
48
|
-
# ==== examples
|
49
|
-
# sf.project.generate_manifest metadata: %w[CustomObject Layout] # creates a package.xml, which is initialized with CustomObject and Layout
|
50
|
-
# sf.project.generate_manifest from_org: <org_name> # creates a package.xml, which is initialized with all metadata types in the org
|
51
|
-
#
|
52
|
-
def generate_manifest(name: nil, output_dir: nil, api_version: nil, metadata: [], from_org: nil, source_dir: nil)
|
53
|
-
flags = {
|
54
|
-
:name => name,
|
55
|
-
:"metadata" => (metadata.empty? ? nil : metadata.join(' ')),
|
56
|
-
:"from-org" => from_org,
|
57
|
-
:"source-dir" => source_dir,
|
58
|
-
:"output-dir" => output_dir,
|
59
|
-
:"api-version" => api_version,
|
60
|
-
}
|
61
|
-
action = __method__.to_s.tr('_', ' ')
|
62
|
-
json = exec(action, flags: flags, redirection: :null_stderr)
|
63
|
-
|
64
|
-
json['result']['path']
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
data/lib/sf_cli/sf/sobject.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
require_relative './base'
|
2
|
-
|
3
|
-
module SfCli
|
4
|
-
class Sf
|
5
|
-
# ==== description
|
6
|
-
# The class representing *sf* *sobject*
|
7
|
-
#
|
8
|
-
# command reference: https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_sobject_commands_unified.htm
|
9
|
-
#
|
10
|
-
class Sobject < Base
|
11
|
-
|
12
|
-
# returns a hash object containing the Salesforce object schema. (equivalent to *sf* *sobject* *describe*)
|
13
|
-
#
|
14
|
-
# *objectType* --- object type (ex: Account)<br>
|
15
|
-
# *target_org* --- an alias of paticular org, not default one<br>
|
16
|
-
#
|
17
|
-
def describe(object_type, target_org: nil)
|
18
|
-
flags = {
|
19
|
-
:"sobject" => object_type,
|
20
|
-
:"target-org" => target_org,
|
21
|
-
}
|
22
|
-
json = exec(__method__, flags: flags, redirection: :null_stderr)
|
23
|
-
json['result']
|
24
|
-
end
|
25
|
-
|
26
|
-
# returns a list of Salesforce object API name. (equivalent to *sf* *sobject* *list*)
|
27
|
-
#
|
28
|
-
# *object_type* --- all or custom<br>
|
29
|
-
# *target_org* --- an alias of paticular org, not default one<br>
|
30
|
-
#
|
31
|
-
def list(object_type, target_org: nil)
|
32
|
-
flags = {
|
33
|
-
:"sobject" => (object_type.to_sym == :custom ? :custom : :all),
|
34
|
-
:"target-org" => target_org,
|
35
|
-
}
|
36
|
-
json = exec(__method__, flags: flags, redirection: :null_stderr)
|
37
|
-
json['result']
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
data/lib/sf_cli/sf.rb
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
require 'json'
|
2
|
-
|
3
|
-
module SfCli
|
4
|
-
# ==== description
|
5
|
-
# The main class of *sf* command.
|
6
|
-
#
|
7
|
-
# https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_unified.htm
|
8
|
-
#
|
9
|
-
# ==== examples
|
10
|
-
# sf = SfCli::Sf.new # use default org
|
11
|
-
#
|
12
|
-
# # get the org connection infomation, as same as 'sf org display'
|
13
|
-
# sf.org.display
|
14
|
-
#
|
15
|
-
# # get Account records (equivalent to 'sf data query')
|
16
|
-
# sf.data.query 'SELECT Id, Name FROM Account LIMIT 3' # => returns an array containing 3 records
|
17
|
-
#
|
18
|
-
class Sf
|
19
|
-
OPERATION_CATEGORIES = %w[Org Sobject Data Project]
|
20
|
-
|
21
|
-
# load each operation class and define as a attribute
|
22
|
-
OPERATION_CATEGORIES.each do |category|
|
23
|
-
require_relative %(sf/#{category.downcase})
|
24
|
-
attr_reader category.downcase.to_sym
|
25
|
-
end
|
26
|
-
|
27
|
-
attr_reader :varbose
|
28
|
-
|
29
|
-
def initialize
|
30
|
-
OPERATION_CATEGORIES.each do |category|
|
31
|
-
instance_variable_set(:"@#{category.downcase}", Object.const_get(%|::SfCli::Sf::#{category}|).new(self))
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def exec(category, action, flags: {}, switches: {}, redirection: nil)
|
36
|
-
cmd = %|sf #{category} #{action}#{as_flag_options(flags)}#{as_switch_options(switches)}#{redirect redirection}|
|
37
|
-
|
38
|
-
puts cmd if varbose
|
39
|
-
|
40
|
-
json = JSON.parse `#{cmd}`
|
41
|
-
|
42
|
-
puts json if varbose
|
43
|
-
|
44
|
-
raise StandardError.new(json['message']) if json['status'] != 0
|
45
|
-
|
46
|
-
json
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
def as_flag_options(hash)
|
52
|
-
flag_options = hash.map{|k,v| flag k, v}.reject(&:nil?).join(' ')
|
53
|
-
flag_options = ' ' + flag_options unless flag_options.empty?
|
54
|
-
|
55
|
-
flag_options
|
56
|
-
end
|
57
|
-
|
58
|
-
def as_switch_options(hash)
|
59
|
-
' ' + {json: true}.merge(hash).each_with_object([]){|(k,v), arr| arr << %(--#{k}) if v}.join(' ')
|
60
|
-
end
|
61
|
-
|
62
|
-
def flag(name, arg)
|
63
|
-
arg ? %(--#{name} #{arg}) : nil
|
64
|
-
end
|
65
|
-
|
66
|
-
def os
|
67
|
-
@os ||= ENV['OS']
|
68
|
-
end
|
69
|
-
|
70
|
-
def redirect(option)
|
71
|
-
case option
|
72
|
-
when :null_stderr
|
73
|
-
null_stderr_redirection
|
74
|
-
else
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
def null_stderr_redirection
|
79
|
-
@null_stderr_redirection ||=
|
80
|
-
if os.eql?('Windows_NT')
|
81
|
-
' 2>nul'
|
82
|
-
else
|
83
|
-
' 2> /dev/null'
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|