SFDO-Tooling / CumulusCI

Python framework for building portable automation for Salesforce projects
http://cumulusci.readthedocs.io
BSD 3-Clause "New" or "Revised" License
362 stars 242 forks source link

New Option `load_sfdx_project_paths` for dx_convert_from Task #3543

Open Szandor72 opened 1 year ago

Szandor72 commented 1 year ago

Feature Type

I'm interested in extensions to existing CumulusCI functionality (e.g., broader applicability of an existing Task or Flow).

Does your feature request solve a current problem?

In DX projects, subfolders are common. At the same time, no source might exist in the DX default folder. This is important because the default DX command 'source convert' - which CCI uses under the hood - respects the default package directory only.

When setting up a CumulusCI project based on sub-foldered DX metadata, the current approach looks something like this:

deploy_unmanaged:
    steps:
      0:
        task: dx_convert_from
        options:
          extra: "--sourcepath ./dlrs/libs/fflib-apexmocks,./dlrs/libs/fflib-common,./dlrs/libs/lrengine,./dlrs/libs/metadataservice,./dlrs/main"

Describe the solution you'd like

I suggest introducing a new option for the DX Convert Task: resolve_sfdx_package_dirs

If True, this option would scan the local sfdx project json file, identify all Package Directories and collect their path nodes and append them as sourcepath to the DX Convert Command

Describe alternatives you've considered

The alternative is to manually write the info from the sfdx project json into cumulusci.yml as explained above

Additional context

Szandor72 commented 1 year ago

I completed the code and tests leveraging existing methods from Project Config and can contribute a PR if a branch is provided.

Julian88Tex commented 1 year ago

@Szandor72 awesome! In my experience you can submit a PR from your forked repo as a way of contributing. I don't believe you need to point it at a particular branch: https://github.com/SFDO-Tooling/CumulusCI/blob/main/docs/contributing.md#pull-request-guidelines

Szandor72 commented 1 year ago

I created a draft PR @Julian88Tex - there are some checks failing.

Before marking it ready for review, I also like to test it with one or two real sfdx projects.

Julian88Tex commented 1 year ago

@Szandor72 sorry for the delay! I've been out at a few conferences (TDX & SXSW) so I'm still catching up on emails. Thanks so much for creating the PR and pushing forward this idea. I think your change makes sense to me. That being said, I'm also curious about getting a bit more input from the CumulusCI team (CC @davidmreed) because I'm wondering if it makes more sense to solve this in a more holistic way. Beyond just the dx_convert_from command there are a number of situations where I would hope that CumulusCI could deal with multiple paths. Some other examples are deploy & uninstall_packaged_incremental.

Szandor72 commented 1 year ago

I agree - I am just getting started ;-) Jokes aside - I started with this particular feature because I am a beginner in Python.

Happy to support this adventure but also happy if someone more experienced takes over and this PR goes away.