sf_cli 1.2.0 → 1.2.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/sf_cli +8 -3
- data/lib/sf_cli/sf/org/list_limits.rb +1 -1
- data/lib/sf_cli/sf/org/list_metadata.rb +1 -1
- data/lib/sf_cli/sf/org/login.rb +1 -1
- data/lib/sf_cli/sf/project/generate.rb +1 -1
- data/lib/sf_cli/sf/project/generate_manifest.rb +1 -1
- data/lib/sf_cli/sf/sobject/describe.rb +1 -1
- data/lib/sf_cli/sf/sobject/list.rb +1 -1
- data/lib/sf_cli/sf/sobject/schema.rb +16 -0
- data/lib/sf_cli/version.rb +1 -1
- metadata +3 -5
- data/README.rdoc +0 -94
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6cc1ab1222fe6f4c19b78853eed5a06c7e7f9047146b5f59a08a888fb369a54
|
4
|
+
data.tar.gz: f73f3784ed62def6460450fc6780f13fae73ae5d64ee7652b60379d50fcbc3e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80a77af9028ef5fed8b195d79356c0df6fc3b304a5eab26b8d094333d9148097cabb51b21592091815dc1ae0b768a3f1dbd35b88d01921d02986e5ee9b43add4
|
7
|
+
data.tar.gz: 1dbc012a4c8b0895f00ac1f741c1262d6b7319de72c08ef5d92f61204acdbb4f052755dd596883a989addaae35589039623d3d82ca9eace7a3ca97ae38a8e291
|
data/bin/sf_cli
CHANGED
@@ -8,13 +8,15 @@ def generate_project(project_name, params)
|
|
8
8
|
base_dir = Dir.pwd
|
9
9
|
target_org = params[:"target-org"]
|
10
10
|
retrieve_source = params[:retrieve]
|
11
|
+
editor = params[:editor]
|
11
12
|
|
12
13
|
sf.project.generate project_name, manifest: true
|
13
14
|
|
14
15
|
Dir.chdir project_name
|
15
16
|
|
16
|
-
sf.project.generate_manifest from_org: target_org, output_dir: 'manifest'
|
17
|
+
sf.project.generate_manifest from_org: target_org, output_dir: 'manifest' if target_org
|
17
18
|
sf.project.retrieve_start manifest: 'manifest/package.xml', target_org: target_org if retrieve_source
|
19
|
+
system 'code .' if editor
|
18
20
|
ensure
|
19
21
|
Dir.chdir base_dir
|
20
22
|
end
|
@@ -25,11 +27,14 @@ Version = SfCli::VERSION
|
|
25
27
|
|
26
28
|
opt.on('-i', '--irb', 'Start irb session that integrates sf_cli and object model library.') { system 'irb -r sf_cli/console' }
|
27
29
|
opt.on('-g OBJECT', '--generate', 'Generate OBJECT. As of now, only project is available as OBJECT.')
|
28
|
-
opt.on('-o TARGET_ORG', '--target-org', 'Username or alias of the target org. When specified with "-g
|
29
|
-
opt.on('-r', '--retrieve', 'Retrieve source files.When specified with "-g
|
30
|
+
opt.on('-o TARGET_ORG', '--target-org', 'Username or alias of the target org. When specified with "-g project", the manifest file is created based on the org')
|
31
|
+
opt.on('-r', '--retrieve', 'Retrieve source files.When specified with "-g project", source files is loaded according to the manifest file.')
|
32
|
+
opt.on('-e', '--editor', 'Open VS Code for current directory. When specified with "-g project", it opens the project directory')
|
30
33
|
|
31
34
|
opt.parse!(ARGV, into: params)
|
32
35
|
|
33
36
|
if params[:generate] == 'project'
|
34
37
|
generate_project(ARGV[0], params)
|
38
|
+
elsif params[:editor]
|
39
|
+
system 'code .'
|
35
40
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module SfCli::Sf::Org
|
2
2
|
module ListLimits
|
3
3
|
#
|
4
|
-
#
|
4
|
+
# List the limits in your org
|
5
5
|
# @param target_org [Symbol,String] an alias of paticular org, or username can be used
|
6
6
|
# @param api_version [Numeric] override the api version used for api requests made by this command
|
7
7
|
#
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module SfCli::Sf::Org
|
2
2
|
module ListMetadata
|
3
3
|
#
|
4
|
-
#
|
4
|
+
# List the metadata components and properties of a specified type
|
5
5
|
# @param metadata [Symbol,String] name of metadata type
|
6
6
|
# @param folder [Symbol,String] folder associated with the component such as Report, EmailTemplate, Dashboard and Document
|
7
7
|
# @param target_org [Symbol,String] an alias of paticular org, or username can be used
|
data/lib/sf_cli/sf/org/login.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module SfCli::Sf::Org
|
2
2
|
module Login
|
3
|
-
#
|
3
|
+
# Log in to a Salesforce org using the web server flow
|
4
4
|
# @param target_org [Symbol,String] an alias of paticular org, or username can be used
|
5
5
|
# @param instance_url [String] URL of the instance that the org lives on.
|
6
6
|
# @param browser [Symbol,String] browser in which to open the org.
|
@@ -3,7 +3,7 @@ module SfCli::Sf::Project
|
|
3
3
|
Result = Struct.new(:output_dir, :files, :raw_output, :warnings)
|
4
4
|
|
5
5
|
#
|
6
|
-
# Generate a Salesforce project
|
6
|
+
# Generate a Salesforce DX project
|
7
7
|
# @param name [Symbol,String] project name
|
8
8
|
# @param template [Symbol,String] project template name
|
9
9
|
# @param output_dir [String] output directory
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module SfCli::Sf::Project
|
2
2
|
module GenerateManifest
|
3
|
-
#
|
3
|
+
# Create a project manifest that lists the metadata components you want to deploy or retrieve
|
4
4
|
# @param metadata [Array] an array that consists of metadata type like CustomObject, Layout and so on. (default: [])
|
5
5
|
# @param api_version [Integer] API version (default: nil)
|
6
6
|
# @param output_dir [String] manifest's output directory in the project directory. You can use relative path from the project root (default: nil)
|
@@ -2,7 +2,7 @@ require_relative './schema'
|
|
2
2
|
|
3
3
|
module SfCli::Sf::Sobject
|
4
4
|
module Describe
|
5
|
-
#
|
5
|
+
# Get a Salesforce object schema
|
6
6
|
# @param object_type [Symbol,String] object type(ex: Account)
|
7
7
|
# @param target_org [Symbol,String] an alias of paticular org, or username can be used
|
8
8
|
# @param api_version [Numeric] override the api version used for api requests made by this command
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module SfCli::Sf::Sobject
|
2
2
|
module List
|
3
|
-
#
|
3
|
+
# List all Salesforce objects of a specified category.
|
4
4
|
# @param object_type [Symbol,String] 'all' or 'custom'
|
5
5
|
# @param target_org [Symbol,String] an alias of paticular org, or username can be used
|
6
6
|
# @param api_version [Numeric] override the api version used for api requests made by this command
|
@@ -42,6 +42,22 @@ module SfCli
|
|
42
42
|
schema
|
43
43
|
end
|
44
44
|
|
45
|
+
def action_overrides
|
46
|
+
schema["actionOverrides"]
|
47
|
+
end
|
48
|
+
|
49
|
+
def activateable?
|
50
|
+
schema["activateable"]
|
51
|
+
end
|
52
|
+
|
53
|
+
def associateEntityType
|
54
|
+
schema["associateEntityType"]
|
55
|
+
end
|
56
|
+
|
57
|
+
def associateParentEntity
|
58
|
+
schema["associateParentEntity"]
|
59
|
+
end
|
60
|
+
|
45
61
|
def compact_layoutable?
|
46
62
|
schema["compactLayoutable"]
|
47
63
|
end
|
data/lib/sf_cli/version.rb
CHANGED
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.2.
|
4
|
+
version: 1.2.1
|
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-10-
|
11
|
+
date: 2024-10-04 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.
|
@@ -16,10 +16,8 @@ email:
|
|
16
16
|
executables:
|
17
17
|
- sf_cli
|
18
18
|
extensions: []
|
19
|
-
extra_rdoc_files:
|
20
|
-
- README.rdoc
|
19
|
+
extra_rdoc_files: []
|
21
20
|
files:
|
22
|
-
- README.rdoc
|
23
21
|
- bin/sf_cli
|
24
22
|
- lib/sf_cli.rb
|
25
23
|
- lib/sf_cli/console.rb
|
data/README.rdoc
DELETED
@@ -1,94 +0,0 @@
|
|
1
|
-
= Salesforce CLI library for Ruby
|
2
|
-
https://badge.fury.io/rb/sf_cli.png
|
3
|
-
|
4
|
-
This is a class library for introducing {Salesforce CLI}[https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_top.htm] to Ruby scripting.<br>
|
5
|
-
It is designed to be similar usability to the original command.<br>
|
6
|
-
Currently only *sf* command is the target of development.
|
7
|
-
|
8
|
-
[rubygems] https://rubygems.org/gems/sf_cli
|
9
|
-
[official document] https://tmkw.github.io/sf_cli/
|
10
|
-
|
11
|
-
== prerequisite
|
12
|
-
{Salesforce CLI}[https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_top.htm] must be installed.<br>
|
13
|
-
As of as of September in 2024, ver.2.56.7 is the development target.
|
14
|
-
|
15
|
-
== install
|
16
|
-
Rubygem::
|
17
|
-
the simplest way:
|
18
|
-
$ gem install sf_cli
|
19
|
-
Bundler::
|
20
|
-
in Gemfile:
|
21
|
-
gem 'sf_cli'
|
22
|
-
then,
|
23
|
-
$ bundle install
|
24
|
-
== Usage
|
25
|
-
Load module
|
26
|
-
require 'sf_cli'
|
27
|
-
|
28
|
-
Login to org
|
29
|
-
sf.org.login_web
|
30
|
-
|
31
|
-
Get Salesforce Object schema
|
32
|
-
sf.sobject.describe :Account
|
33
|
-
|
34
|
-
Get a record
|
35
|
-
sf.data.get_record :Account, record_id: 'xxxxxxx'
|
36
|
-
sf.data.get_record :Account, where: {Name: 'Jonny B.Good', Country: 'USA'}
|
37
|
-
|
38
|
-
Execute SOQL
|
39
|
-
sf.data.query "SELECT Id, Name FROM Account LIMIT 1" # => [{Id: "abc", Name: "account name"}]
|
40
|
-
|
41
|
-
Create a record
|
42
|
-
sf.data.create_record :TheCustomObject__c, values: {Name: "John Smith", Age: 33}
|
43
|
-
|
44
|
-
Update a record
|
45
|
-
sf.data.update_record :Account, record_id: 'xxxxxxx', values: {Name: 'New Account Name'}
|
46
|
-
sf.data.update_record :Hoge__c, where: {Name: 'Jonny B.Good', Country: 'USA'}, values: {Phone: 'xxxxx', bar: 2000}
|
47
|
-
|
48
|
-
Delete a record
|
49
|
-
sf.data.delete_record :Hoge__c, record_id: 'xxxxxxx'
|
50
|
-
sf.data.delete_record :Hoge__c, where: {Name: 'Jonny B.Good', Country: 'USA'}
|
51
|
-
|
52
|
-
Using Bulk API 2.0
|
53
|
-
sf.data.upsert_bulk sobject: :TestCustomObject__c, file: 'upsert.csv', wait: 5 # waiting for 5 minutes at maximum
|
54
|
-
|
55
|
-
Run Apex
|
56
|
-
sf.apex.run file: 'path/to/file'
|
57
|
-
sf.apex.run file: StringIO.new("System.debug('Hello World')")
|
58
|
-
== Object Model Support
|
59
|
-
With sf command:
|
60
|
-
rows = sf.data.query "SELECT Id, Name FROM Contact WHERE Name = 'Akin Kristen'", model_class: Contact
|
61
|
-
rows.first # <Contact: @Id="0035j00001RW3xbAAD", @Name="Akin Kristen">
|
62
|
-
rows.first.Name # Akin Kristen
|
63
|
-
Doing the same thing independently:
|
64
|
-
contact = Contact.select(:Id, :Name).where(Name: 'Akin Kristen').take
|
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 -i
|
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
|
83
|
-
|
84
|
-
== Utility
|
85
|
-
sf_cli command also have other functions. As of 1.2.0, it can generate Salesforce DX project.
|
86
|
-
|
87
|
-
Create a project directory and files including manifest file
|
88
|
-
$ sf_cli -g project YOUR_PROJECT_NAME
|
89
|
-
|
90
|
-
Same as above, but the manifest file is built based on the org
|
91
|
-
$ sf_cli -g project YOUR_PROJECT_NAME -o YOUR_TARGET_ORG
|
92
|
-
|
93
|
-
Build project and manifest then retreave metadata such as Apex code at once
|
94
|
-
$ sf_cli -g project YOUR_PROJECT_NAME -o YOUR_TARGET_ORG -r
|