Skip to content
This repository has been archived by the owner on Jun 9, 2024. It is now read-only.

Commit

Permalink
Add references property to the force-data-tree-import task
Browse files Browse the repository at this point in the history
  • Loading branch information
mcartoixa committed Jun 4, 2024
1 parent 2e6da34 commit 8f48282
Show file tree
Hide file tree
Showing 6 changed files with 120 additions and 3 deletions.
88 changes: 88 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
name: build

on:
push:
paths-ignore:
- '.vscode/**'
- '.editorconfig'
- '**.md'

jobs:
build:
runs-on: ubuntu-latest
env:
PACKAGE_VERSION: 1.2.${{ github.run_number }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
java-version: 8
java-package: jdk
distribution: temurin
- name: Cache binary dependencies
uses: actions/cache@v3
with:
path: |
.tmp/*
.tmp/cloc.pl
!.tmp/*.gz
!.tmp/*.xz
!.tmp/*.zip
key: bin-${{ hashFiles('build/versions.env') }}
- name: Cache Ivy dependencies
uses: actions/cache@v3
with:
path: ivy
key: ivy-${{hashFiles('ivy.xml')}}
- name: Prepare build environment
shell: bash
run: |
source build/setenv.sh
# Only way to share environment variables between steps...
echo "ANT_HOME=$ANT_HOME" >> $GITHUB_ENV
echo "PMD_HOME=$PMD_HOME" >> $GITHUB_ENV
echo "$ANT_HOME/bin" >> $GITHUB_PATH
mkdir -p ivy
if [ ! -f ivy/ivy.jar ]; then wget -nv -O ivy/ivy.jar https://repo1.maven.org/maven2/org/apache/ivy/ivy/$_IVY_VERSION/ivy-$_IVY_VERSION.jar; fi
java -jar ivy/ivy.jar -retrieve "ivy/lib/[conf]/[artifact].[ext]" -confs build
- name: Build
shell: bash
run: |
ant -noclasspath -nouserlib -noinput -logger org.apache.tools.ant.listener.AnsiColorLogger -Dverbosity=debug -f build.xml release
- name: Ruby Tests Report
if: success() || failure()
uses: dorny/test-reporter@v1
with:
name: JUnit Tests
path: tmp/junit-results.xml
reporter: java-junit
fail-on-error: true
- name: Archive artifacts
uses: actions/upload-artifact@v4
with:
name: artifacts
path: |
tmp/out/bin/**.*
- name: Archive logs
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: logs
path: |
build.log
retention-days: 2
- name: Archive results
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: results
path: |
tmp/junit-results
tmp/*-results.html
tmp/*-results.xml
retention-days: 8
2 changes: 1 addition & 1 deletion build.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash

source build/.bashrc
source build/setenv.sh



Expand Down
File renamed without changes.
5 changes: 5 additions & 0 deletions docs/force-data-tree-import.html
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ <h3>Parameters</h3>
<td>A username or alias for the target org.</td>
<td>No</td>
</tr>
<tr>
<td>referencesproperty</td>
<td>The name of a property in which the references of the imported data should be stored. Subproperties are named according to the (lowercased) references ids of the imported data.</td>
<td>No</td>
</tr>
</tbody>
</table>

Expand Down
22 changes: 20 additions & 2 deletions src/main/com/mcartoixa/ant/sfdx/force/data/tree/ImportTask.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,17 @@ protected void doParse(final JSONObject json) {
final Object value = result.get(i);
if (value instanceof JSONObject) {
final JSONObject object = (JSONObject) value;
final String refId = object.getString("refId");
final String id = object.getString("id");
final String referencesProperty = ImportTask.this.getReferencesProperty();
if (referencesProperty != null && !referencesProperty.isEmpty()) {
ImportTask.this.getProject().setNewProperty(referencesProperty + "." + refId, id);
}

final String message = String.format(
"%s imported.",
object.getString("refId")
"%s imported (%s).",
object.getString("refId"),
object.getString("Id")
);
this.log(message, Project.MSG_INFO);
}
Expand Down Expand Up @@ -151,6 +159,10 @@ public void setPlan(final File plan) {
}
}

public void setReferencesProperty(final String referencesProperty) {
this.referencesProperty = referencesProperty;
}

public void setTargetUserName(final String userName) {
if (userName != null && !userName.isEmpty()) {
getCommandline().createArgument().setValue("-u");
Expand Down Expand Up @@ -210,6 +222,12 @@ protected ISfdxJsonParser getParser() {
return new ImportTask.JsonParser();
}

@SuppressWarnings("PMD.DefaultPackage")
/* default */ String getReferencesProperty() {
return this.referencesProperty;
}

private transient final List<FileSet> fileSets = new ArrayList<>();
private transient String referencesProperty;
private transient Union resources = null;
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,12 @@ public void executeShouldSetStatusProperty() {
Assert.assertEquals("Status property should be set", "0", buildRule.getProject().getProperty("execute.status"));
}

@Test
public void executeShouldSetReferencesProperties() {
buildRule.executeTarget("execute");
Assert.assertEquals("References properties should be set", "a063N000004OhI8QAK", buildRule.getProject().getProperty("execute.references.object__cref2"));
}

@Test
public void executeShouldAddJsonArgument() {
buildRule.executeTarget("execute");
Expand Down

0 comments on commit 8f48282

Please sign in to comment.