sf_cli 0.0.7 → 0.0.8

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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/{rdoc/README.rdoc → README.rdoc} +24 -38
  3. data/lib/sf_cli/console/commands.rb +36 -0
  4. data/lib/sf_cli/console.rb +5 -0
  5. data/lib/sf_cli/sf/apex/core.rb +5 -6
  6. data/lib/sf_cli/sf/apex/run.rb +13 -10
  7. data/lib/sf_cli/sf/core/base.rb +1 -0
  8. data/lib/sf_cli/sf/data/bulk_result_v2.rb +2 -3
  9. data/lib/sf_cli/sf/data/core.rb +5 -6
  10. data/lib/sf_cli/sf/data/create_record.rb +6 -8
  11. data/lib/sf_cli/sf/data/delete_bulk.rb +9 -10
  12. data/lib/sf_cli/sf/data/delete_record.rb +8 -9
  13. data/lib/sf_cli/sf/data/delete_resume.rb +7 -9
  14. data/lib/sf_cli/sf/data/get_record.rb +11 -13
  15. data/lib/sf_cli/sf/data/helper_methods.rb +1 -0
  16. data/lib/sf_cli/sf/data/query.rb +20 -27
  17. data/lib/sf_cli/sf/data/query_helper.rb +3 -0
  18. data/lib/sf_cli/sf/data/resume.rb +6 -6
  19. data/lib/sf_cli/sf/data/search.rb +9 -10
  20. data/lib/sf_cli/sf/data/update_record.rb +11 -14
  21. data/lib/sf_cli/sf/data/upsert_bulk.rb +9 -12
  22. data/lib/sf_cli/sf/data/upsert_resume.rb +7 -10
  23. data/lib/sf_cli/sf/main.rb +7 -3
  24. data/lib/sf_cli/sf/model/base_methods.rb +1 -0
  25. data/lib/sf_cli/sf/model/class_definition.rb +1 -0
  26. data/lib/sf_cli/sf/model/dml_methods.rb +1 -0
  27. data/lib/sf_cli/sf/model/generator.rb +2 -1
  28. data/lib/sf_cli/sf/model/query_condition.rb +1 -0
  29. data/lib/sf_cli/sf/model/query_methods.rb +1 -0
  30. data/lib/sf_cli/sf/model/sf_command_connection.rb +24 -5
  31. data/lib/sf_cli/sf/model.rb +6 -4
  32. data/lib/sf_cli/sf/org/core.rb +6 -6
  33. data/lib/sf_cli/sf/org/display.rb +7 -6
  34. data/lib/sf_cli/sf/org/list.rb +12 -13
  35. data/lib/sf_cli/sf/org/login.rb +22 -28
  36. data/lib/sf_cli/sf/project/core.rb +10 -72
  37. data/lib/sf_cli/sf/project/generate.rb +35 -0
  38. data/lib/sf_cli/sf/project/generate_manifest.rb +31 -0
  39. data/lib/sf_cli/sf/sobject/core.rb +10 -47
  40. data/lib/sf_cli/sf/sobject/describe.rb +29 -0
  41. data/lib/sf_cli/sf/sobject/list.rb +18 -0
  42. data/lib/sf_cli.rb +5 -12
  43. metadata +10 -9
  44. data/CHANGELOG.md +0 -57
  45. data/lib/sf_cli/sf/console.rb +0 -33
  46. data/rdoc/ObjectModel.rdoc +0 -83
@@ -1,23 +1,20 @@
1
1
  module SfCli::Sf::Data
2
2
  module UpdateRecord
3
3
 
4
- # update a object record.
5
- #
6
- # *object_type* --- \Object Type (ex. Account)<br>
7
- #
8
- # *record_id* --- id of the object<br>
9
- #
10
- # *where* --- field values that is used to identify a record<br>
11
- #
12
- # *values* --- field values for update<br>
13
- #
14
- # *target_org* --- an alias of paticular org, or username can be used<br>
15
- #
16
- # ==== examples
4
+ # Update a object record.
5
+ # @param object_type [Symbol,String] object type(ex. Account)
6
+ # @param record_id [String] ID of the object
7
+ # @param where [Hash] field values to identify a record
8
+ # @param values [Hash] field values for update
9
+ # @param target_org [Symbol,String] an alias of paticular org, or username can be used
10
+ #
11
+ # @return [String] ID of the record updated
12
+ #
13
+ # @example
17
14
  # sf.data.update_record :Account, record_id: 'xxxxxxx', values: {Name: 'New Account Name'}
18
15
  # sf.data.update_record :Hoge__c, where: {Name: 'Jonny B.Good', Country: 'USA'}, values: {Phone: 'xxxxx', bar: 2000}
19
16
  #
20
- # For more command details, see {the command reference}[https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_data_commands_unified.htm#cli_reference_data_update_record_unified]
17
+ # @see https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_data_commands_unified.htm#cli_reference_data_update_record_unified command reference
21
18
  #
22
19
  def update_record(object_type, record_id: nil, where: nil, values: nil, target_org: nil)
23
20
  where_conditions = field_value_pairs(where)
@@ -2,19 +2,16 @@ require_relative './bulk_result_v2'
2
2
 
3
3
  module SfCli::Sf::Data
4
4
  module UpsertBulk
5
- # update records using Bulk API 2.0
5
+ # Update records using Bulk API 2.0
6
+ # @param file [String] path of a CSV file to update records
7
+ # @param sobject [Symbol,String] object type(ex. Account)
8
+ # @param external_id [String] name of the external ID field.Otherwise it must be Id
9
+ # @param timeout [Integer] max minutes to wait for the job complete the task
10
+ # @param target_org [Symbol,String] an alias of paticular org, or username can be used
6
11
  #
7
- # *file* --- a \CSV file for update records<br>
12
+ # @return [JobInfo, BulkResultV2] the job result, whose type is changed by situation
8
13
  #
9
- # *sobject* --- \Object Type (ex. Account)<br>
10
- #
11
- # *external_id* --- Name of the external ID field, or the Id field<br>
12
- #
13
- # *timeout* --- max minutes to wait for the job complete the task.<br>
14
- #
15
- # *target_org* --- an alias of paticular org, or username can be used<br>
16
- #
17
- # ======
14
+ # @example
18
15
  # # start a upsert job
19
16
  # jobinfo = sf.data.upsert_bulk sobject: :TestCustomObject__c, file: 'upsert.csv' # this returns immediately
20
17
  # jobinfo.id # => "750J4000003g1OaIAI" it's job ID
@@ -25,7 +22,7 @@ module SfCli::Sf::Data
25
22
  # # Or, you can wait for the job completion with one try.
26
23
  # result = sf.data.upsert_bulk sobject: :TestCustomObject__c, file: 'upsert.csv', timeout: 5 # wait within 5 minutes
27
24
  #
28
- # For more command details, see {the command reference}[https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_data_commands_unified.htm#cli_reference_data_upsert_bulk_unified]
25
+ # @see https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_data_commands_unified.htm#cli_reference_data_upsert_bulk_unified command reference
29
26
  #
30
27
  def upsert_bulk(file:, sobject:, external_id:, timeout: nil, target_org: nil)
31
28
  flags = {
@@ -2,15 +2,14 @@ require_relative './bulk_result_v2'
2
2
 
3
3
  module SfCli::Sf::Data
4
4
  module UpsertResume
5
- # resume a bulk upsert job you previously started with Bulk API 2.0 and return a bulk result object.
5
+ # Resume a bulk upsert job you previously started with Bulk API 2.0 and return a bulk result object.
6
+ # @param job_id [String] job ID you want to resume
7
+ # @param timeout [Integer] max minutes to wait for the job complete the task
8
+ # @param target_org [Symbol,String] an alias of paticular org, or username can be used
6
9
  #
7
- # *job_id* --- job ID you want to resume<br>
10
+ # @return [JobInfo, BulkResultV2] the job result, whose type is changed by situation
8
11
  #
9
- # *timeout* --- max minutes to wait for the job complete the task.<br>
10
- #
11
- # *target_org* --- an alias of paticular org, or username can be used<br>
12
- #
13
- # ======
12
+ # @example
14
13
  # # start a upsert job
15
14
  # jobinfo = sf.data.upsert_bulk sobject: :TestCustomObject__c, file: 'upsert.csv' # this returns immediately
16
15
  # jobinfo.id # => "750J4000003g1OaIAI" it's job ID
@@ -22,9 +21,7 @@ module SfCli::Sf::Data
22
21
  #
23
22
  # puts 'yey!' if result.job_info.completed? # the job has completed
24
23
  #
25
- # To know more about a job result, take a look at SfCli::Sf::Data module
26
- #
27
- # For more command details, see {the command reference}[https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_data_commands_unified.htm#cli_reference_data_upsert_resume_unified]
24
+ # @see https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_data_commands_unified.htm#cli_reference_data_upsert_resume_unified command reference
28
25
  #
29
26
  def upsert_resume(job_id:, timeout: nil, target_org: nil)
30
27
  flags = {
@@ -3,14 +3,15 @@ require 'json'
3
3
 
4
4
  module SfCli
5
5
  module Sf
6
- # ==== description
7
- # The entry class of sf command. It is returned by sf method.
6
+
7
+ # The entry class of sf command. It is returned by the sf method.
8
8
  # With including Singleton module, the instance of this class is guaranteed as singleton.
9
9
  #
10
- # ==== examples
10
+ # @example
11
11
  # sf # returns a instance of SfCli::Sf
12
12
  # sf.org.display # you can follow the similar syntax to the original command by using method chain.
13
13
  #
14
+ # @private :nodoc: just for developers
14
15
  class Main
15
16
  include Singleton
16
17
 
@@ -21,6 +22,9 @@ module SfCli
21
22
  attr_reader category.downcase.to_sym
22
23
  end
23
24
 
25
+ # Generate each sub command object such as org, data and sobject
26
+ # so that it can chain like `sf.org.display`.
27
+ #
24
28
  def initialize
25
29
  OPERATION_CATEGORIES.each do |category|
26
30
  instance_variable_set(:"@#{category.downcase}", Object.const_get(%|::SfCli::Sf::#{category}::Core|).new)
@@ -1,6 +1,7 @@
1
1
  module SfCli
2
2
  module Sf
3
3
  module Model
4
+ # @private :nodoc: just for developers
4
5
  module BaseMethods
5
6
  def self.included(c)
6
7
  c.extend ClassMethods
@@ -5,6 +5,7 @@ require_relative './query_methods'
5
5
  module SfCli
6
6
  module Sf
7
7
  module Model
8
+ # @private :nodoc: just for developers
8
9
  class ClassDefinition
9
10
  attr_reader :schema
10
11
 
@@ -1,6 +1,7 @@
1
1
  module SfCli
2
2
  module Sf
3
3
  module Model
4
+ # @private :nodoc: just for developers
4
5
  module DmlMethods
5
6
  def self.included(c)
6
7
  c.extend ClassMethods
@@ -3,8 +3,9 @@ require_relative './class_definition'
3
3
  module SfCli
4
4
  module Sf
5
5
  module Model
6
+ # @private :nodoc: just for developers
6
7
  class Generator
7
- attr_reader :sf_sobject, :connection
8
+ attr_reader :connection
8
9
 
9
10
  def initialize(connection)
10
11
  @connection = connection
@@ -4,6 +4,7 @@ module SfCli
4
4
  module Sf
5
5
  module Model
6
6
  module QueryMethods
7
+ # @private :nodoc: just for developers
7
8
  class QueryCondition
8
9
  attr_reader :connection, :object_name, :all_field_names, :fields, :conditions, :limit_num, :row_order
9
10
 
@@ -3,6 +3,7 @@ require_relative './query_condition'
3
3
  module SfCli
4
4
  module Sf
5
5
  module Model
6
+ # @private :nodoc: just for developers
6
7
  module QueryMethods
7
8
  def self.included(c)
8
9
  c.extend ClassMethods
@@ -5,9 +5,18 @@ require_relative '../org/core'
5
5
  module SfCli
6
6
  module Sf
7
7
  module Model
8
+ #
9
+ # Connection object to access Salesforce based on Sf command
10
+ #
8
11
  class SfCommandConnection
9
- attr_reader :sf_data, :sf_org, :sf_sobject, :target_org, :instance_url
12
+ attr_reader :target_org, :instance_url
10
13
 
14
+ # @private :nodoc: just for developers
15
+ attr_reader :sf_data, :sf_org, :sf_sobject
16
+
17
+ # @param target_org [Symbol,String] an alias of paticular org, or username can be used
18
+ # @param instance_url [String] URL of the instance that the org lives on.
19
+ #
11
20
  def initialize(target_org: nil, instance_url: nil)
12
21
  @sf_org = ::SfCli::Sf::Org::Core.new
13
22
  @sf_data = ::SfCli::Sf::Data::Core.new
@@ -24,10 +33,20 @@ module SfCli
24
33
  end
25
34
  end
26
35
 
36
+ # Sf command style query interface for Model module
37
+ #
38
+ # For query details, see {SfCli::Sf::Data::Query sf data query}
39
+ #
40
+ def exec_query(soql, format: nil, bulk: false, timeout: nil, model_class: nil)
41
+ sf_data.query(soql, target_org: target_org, format: format, bulk: bulk, timeout: timeout, model_class: model_class)
42
+ end
43
+
44
+ # @private :nodoc: just for developers
27
45
  def find(object_type, id, klass)
28
46
  sf_data.get_record object_type, record_id: id, target_org: target_org, model_class: klass
29
47
  end
30
48
 
49
+ # @private :nodoc: just for developers
31
50
  def create(object_type, values, klass = nil)
32
51
  id = sf_data.create_record object_type, values: values, target_org: target_org
33
52
  return id if klass.nil?
@@ -35,22 +54,22 @@ module SfCli
35
54
  find(object_type, id, klass)
36
55
  end
37
56
 
57
+ # @private :nodoc: just for developers
38
58
  def update(object_type, id, values)
39
59
  sf_data.update_record object_type, record_id: id, where: nil, values: values, target_org: target_org
40
60
  end
41
61
 
62
+ # @private :nodoc: just for developers
42
63
  def delete(object_type, id)
43
64
  sf_data.delete_record object_type, record_id: id, where: nil, target_org: target_org
44
65
  end
45
66
 
67
+ # @private :nodoc: just for developers
46
68
  def query(soql, klass)
47
69
  sf_data.query soql, target_org: target_org, model_class: klass
48
70
  end
49
71
 
50
- def exec_query(soql, format: nil, bulk: false, timeout: nil, model_class: nil)
51
- sf_data.query(soql, target_org: target_org, format: format, bulk: bulk, timeout: timeout, model_class: model_class)
52
- end
53
-
72
+ # @private :nodoc: just for developers
54
73
  def describe(object_type)
55
74
  sf_sobject.describe(object_type, target_org: target_org)
56
75
  end
@@ -3,20 +3,22 @@ require_relative 'model/generator'
3
3
  module SfCli
4
4
  module Sf
5
5
  #
6
- # ==== description
7
- # The module for \Object \Model definition and generation
8
- #
9
- # see the section {"Object Model support"}[link://files/README_rdoc.html#label-Object+Model+support+-28experimental-2C+since+0.0.4-29] in README.
6
+ # The module for object model definition and generation
10
7
  #
11
8
  module Model
9
+ # The connection object to access Salesforce
12
10
  def self.connection
13
11
  @@connection
14
12
  end
15
13
 
14
+ # set the connection
16
15
  def self.set_connection(conn)
17
16
  @@connection = conn
18
17
  end
19
18
 
19
+ # generate object models
20
+ # @param object_names [Array] a list of object name
21
+ #
20
22
  def self.generate(object_names)
21
23
  generator = Generator.new(connection)
22
24
 
@@ -5,13 +5,13 @@ require_relative './list'
5
5
 
6
6
  module SfCli
7
7
  module Sf
8
+ #
9
+ # Org Commands
10
+ #
11
+ # @see https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_org_commands_unified.htm command reference
12
+ #
8
13
  module Org
9
- #
10
- # ==== description
11
- # The class representing *sf* *org*.
12
- #
13
- # https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_org_commands_unified.htm
14
- #
14
+ # @private :nodoc: just for developers
15
15
  class Core
16
16
  include ::SfCli::Sf::Core::Base
17
17
  include Login
@@ -3,13 +3,14 @@ module SfCli::Sf::Org
3
3
  ConnectionInfo = Struct.new(:id, :access_token, :alias, :instance_url, :user_name, :api_version, :status)
4
4
 
5
5
  #
6
- # returns the org's connection information. (equivalent to *sf* *org* *display*)
6
+ # Returns the org's connection information
7
+ # @param target_org [Symbol,String] an alias of paticular org, or username can be used
7
8
  #
8
- # *target_org* --- an alias of paticular org, or username can be used<br>
9
- #
10
- # ======
11
- # # example (in irb):
9
+ # @note this function returns the org information including security sensitive things such as access token, username and so on.
10
+ # @return [ConnectionInfo] the org's connection information
12
11
  #
12
+ # @example
13
+ # (in irb):
13
14
  # > sf.org.display
14
15
  # =>
15
16
  # #<struct SfCli::Sf::Org::Display::ConnectionInfo
@@ -21,7 +22,7 @@ module SfCli::Sf::Org
21
22
  # api_version="61.0",
22
23
  # status="Connected">
23
24
  #
24
- # For more command details, see {the command reference}[https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_org_commands_unified.htm#cli_reference_org_display_unified]
25
+ # @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_display_unified command reference
25
26
  #
26
27
  def display(target_org: nil)
27
28
  flags = {:"target-org" => target_org}
@@ -29,23 +29,22 @@ module SfCli::Sf::Org
29
29
  end
30
30
  end
31
31
 
32
- # \List orgs you’ve created or authenticated to
32
+ # List orgs you’ve created or authenticated to
33
33
  #
34
- # ======
35
- # org_config_list = sf.org.list # returns a list of OrgConfig
34
+ # @note this function returns org information including security sensitive things such as access token, username and so on.
35
+ # @return [OrgConfig] the org configulation
36
36
  #
37
- # \OrgConfig object has a org information including security sensitive things such as access token, username and so on.
37
+ # @example
38
+ # org_config_list = sf.org.list # returns a list of OrgConfig
38
39
  #
39
- # It also has some methods to identify its org type:
40
- # - devhub?
41
- # - sandbox?
42
- # - scratch?
43
- # - default?
44
- # - default_devhub?
40
+ # org_config.first.accesstoken # returns the access token
41
+ # org_config.first.instance_url # returns the org's url
45
42
  #
46
- # and you can check the org connected like this:
47
- # org_config_list = sf.org.list # returns a list of OrgConfig
48
- # org_config.first.conncected?
43
+ # org_config.first.conncected? # check the connection status
44
+ # org_config.first.devhub? # check if the org is devhub or not
45
+ # org_config.first.scratch? # check if the org is scratch or not
46
+ # org_config.first.default? # check if the org is default or not
47
+ # org_config.first.default_devhub? # check if the org is devhub default or not
49
48
  #
50
49
  # For more command details, see {the command reference}[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]
51
50
  #
@@ -1,18 +1,15 @@
1
1
  module SfCli::Sf::Org
2
2
  module Login
3
- # login to the org by the browser.
3
+ # Login to the org by the browser.
4
+ # @param target_org [Symbol,String] an alias of paticular org, or username can be used
5
+ # @param instance_url [String] URL of the instance that the org lives on.
6
+ # @param browser [Symbol,String] browser in which to open the org.
4
7
  #
5
- # *target_org* --- an alias of paticular org, or username can be used<br>
6
- #
7
- # *instance_url* --- URL of the instance that the org lives on.
8
- #
9
- # *browser* --- browser in which to open the org.
10
- #
11
- # == examples:
8
+ # @example
12
9
  # sf.org.login_web
13
10
  # sf.org.login_web target_org: :dev
14
11
  #
15
- # For more command details, see {the command reference}[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_web_unified]
12
+ # @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_web_unified command reference
16
13
  #
17
14
  def login_web(target_org: nil, instance_url: nil, browser: nil)
18
15
  flags = {
@@ -24,30 +21,27 @@ module SfCli::Sf::Org
24
21
  exec(action, flags: flags)
25
22
  end
26
23
 
27
- # login to the org by access token.
28
- #
29
- # NOTE: this method doesn't support user interactive mode, so *SF_ACCESS_TOKEN* environment variable must be set before call this method.
24
+ # Login to the org by access token.
25
+ # @note This method doesn't support user interactive mode, so *SF_ACCESS_TOKEN* environment variable must be set before call this method.
30
26
  #
31
- # *instance_url* --- URL of the instance that the org lives on.
27
+ # @param target_org [Symbol,String] an alias of paticular org, or username can be used
28
+ # @param instance_url [String] URL of the instance that the org lives on.
32
29
  #
33
- # *target_org* --- an alias of paticular org, or username can be used<br>
34
- #
35
- # ======
30
+ # @example
36
31
  # ENV['SF_ACCESS_TOKEN'] = 'xxxxxxxxxx'
37
32
  # sf.org.login_access_token instance_url: https://hoge.bar.baz.salesforce.com
38
33
  #
39
- # == how to set env variable outside of ruby
40
- # In Unix/mac:
41
- # $ SF_ACCESS_TOKEN='xxxxxxxxxx'
42
- # $ ruby app_using_sfcli.rb
43
- # or
44
- # $ SF_ACCESS_TOKEN='xxxxxxxxxx' ruby app_using_sfcli.rb
45
- #
46
- # In Windows:
47
- # $ set SF_ACCESS_TOKEN=xxxxxxxxxx
48
- # $ ruby app_using_sfcli.rb
49
- #
50
- # For more command details, see {the command reference}[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]
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
+ #
44
+ # @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
51
45
  #
52
46
  def login_access_token(instance_url:, target_org: nil)
53
47
  flags = {
@@ -1,82 +1,20 @@
1
1
  require_relative '../core/base'
2
+ require_relative './generate'
3
+ require_relative './generate_manifest'
2
4
 
3
5
  module SfCli
4
6
  module Sf
7
+ #
8
+ # Project Commands
9
+ #
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
+ #
5
12
  module Project
6
- # ==== description
7
- # The class representing *sf* *project*
8
- #
9
- # command reference: https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_project_commands_unified.htm
10
- #
13
+ # @private :nodoc: just for developers
11
14
  class Core
12
15
  include ::SfCli::Sf::Core::Base
13
-
14
- GenerateResult = Struct.new(:output_dir, :files, :raw_output, :warnings)
15
-
16
- #
17
- # generate a Salesforce project
18
- #
19
- # *name* --- project name<br>
20
- #
21
- # *template* --- project template name<br>
22
- #
23
- # *output_dir* --- output directory<br>
24
- #
25
- # *manifest* --- switch to create manifest file in the project directory (manifest/package.xml). default: false
26
- #
27
- # For more command details, see the {reference document}[https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_project_commands_unified.htm#cli_reference_project_generate_unified]
28
- #
29
- def generate(name, manifest: false, template: nil, output_dir: nil)
30
- flags = {
31
- :name => name,
32
- :template => template,
33
- :"output-dir" => output_dir,
34
- }
35
- switches = {
36
- manifest: manifest,
37
- }
38
- json = exec(__method__, flags: flags, switches: switches, redirection: :null_stderr)
39
-
40
- GenerateResult.new(
41
- output_dir: json['result']['outputDir'],
42
- files: json['result']['created'],
43
- raw_output: json['result']['rawOutput'],
44
- warnings: json['warnings']
45
- )
46
- end
47
-
48
- # generate the manifest file of a Salesforce project
49
- #
50
- # *metadata* --- an array that consists of metadata type like CustomObject, Layout and so on. (default: [])<br>
51
- #
52
- # *api_verson* --- api version (default: nil)<br>
53
- #
54
- # *output_dir* --- manifest's output directory in the project directory. You can use relative path from the project root (default: nil)<br>
55
- #
56
- # *from_org* --- username or alias of the org that contains the metadata components from which to build a manifest (default: nil)<br>
57
- #
58
- # *source_dir* --- paths to the local source files to include in the manifest (default: nil)
59
- #
60
- # ======
61
- # sf.project.generate_manifest metadata: %w[CustomObject Layout] # creates a package.xml, which is initialized with CustomObject and Layout
62
- # sf.project.generate_manifest from_org: <org_name> # creates a package.xml, which is initialized with all metadata types in the org
63
- #
64
- # For more command details, see the {reference document}[https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_project_commands_unified.htm#cli_reference_project_generate_manifest_unified]
65
- #
66
- def generate_manifest(name: nil, output_dir: nil, api_version: nil, metadata: [], from_org: nil, source_dir: nil)
67
- flags = {
68
- :name => name,
69
- :"metadata" => (metadata.empty? ? nil : metadata.join(' ')),
70
- :"from-org" => from_org,
71
- :"source-dir" => source_dir,
72
- :"output-dir" => output_dir,
73
- :"api-version" => api_version,
74
- }
75
- action = __method__.to_s.tr('_', ' ')
76
- json = exec(action, flags: flags, redirection: :null_stderr)
77
-
78
- json['result']['path']
79
- end
16
+ include Generate
17
+ include GenerateManifest
80
18
  end
81
19
  end
82
20
  end
@@ -0,0 +1,35 @@
1
+ module SfCli::Sf::Project
2
+ module Generate
3
+ GenerateResult = Struct.new(:output_dir, :files, :raw_output, :warnings)
4
+
5
+ #
6
+ # Generate a Salesforce project
7
+ # @param name [Symbol,String] project name
8
+ # @param template [Symbol,String] project template name
9
+ # @param output_dir [String] output directory
10
+ # @param manifest [Boolian] switch to create manifest file in the project directory (manifest/package.xml)
11
+ #
12
+ # @return [GenerateResult] the retsult of project generation
13
+ #
14
+ # @see https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_project_commands_unified.htm#cli_reference_project_generate_unified command reference
15
+ #
16
+ def generate(name, manifest: false, template: nil, output_dir: nil)
17
+ flags = {
18
+ :name => name,
19
+ :template => template,
20
+ :"output-dir" => output_dir,
21
+ }
22
+ switches = {
23
+ manifest: manifest,
24
+ }
25
+ json = exec(__method__, flags: flags, switches: switches, redirection: :null_stderr)
26
+
27
+ GenerateResult.new(
28
+ output_dir: json['result']['outputDir'],
29
+ files: json['result']['created'],
30
+ raw_output: json['result']['rawOutput'],
31
+ warnings: json['warnings']
32
+ )
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,31 @@
1
+ module SfCli::Sf::Project
2
+ module GenerateManifest
3
+ # Generate the manifest file of a Salesforce DX project
4
+ # @param metadata [Array] an array that consists of metadata type like CustomObject, Layout and so on. (default: [])
5
+ # @param api_version [Integer] API version (default: nil)
6
+ # @param output_dir [String] manifest's output directory in the project directory. You can use relative path from the project root (default: nil)
7
+ # @param from_org [String] username or alias of the org that contains the metadata components from which to build a manifest (default: nil)
8
+ # @param source_dir [String] paths to the local source files to include in the manifest (default: nil)
9
+ #
10
+ # @example
11
+ # sf.project.generate_manifest metadata: %w[CustomObject Layout] # creates a package.xml, which is initialized with CustomObject and Layout
12
+ # sf.project.generate_manifest from_org: org_name # creates a package.xml, which is initialized with all metadata types in the org
13
+ #
14
+ # @see https://developer.salesforce.com/docs/atlas.en-us.sfdx_cli_reference.meta/sfdx_cli_reference/cli_reference_project_commands_unified.htm#cli_reference_project_generate_manifest_unified command reference
15
+ #
16
+ def generate_manifest(name: nil, output_dir: nil, api_version: nil, metadata: [], from_org: nil, source_dir: nil)
17
+ flags = {
18
+ :name => name,
19
+ :"metadata" => (metadata.empty? ? nil : metadata.join(' ')),
20
+ :"from-org" => from_org,
21
+ :"source-dir" => source_dir,
22
+ :"output-dir" => output_dir,
23
+ :"api-version" => api_version,
24
+ }
25
+ action = __method__.to_s.tr('_', ' ')
26
+ json = exec(action, flags: flags, redirection: :null_stderr)
27
+
28
+ json['result']['path']
29
+ end
30
+ end
31
+ end