Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MDEP-435] Added xml outputType to dependency tree #24

Open
wants to merge 7 commits into
base: master
Choose a base branch
from

Conversation

4rokis
Copy link

@4rokis 4rokis commented Nov 8, 2019

Following this checklist to help us incorporate your
contribution quickly and easily:

  • Make sure there is a JIRA issue filed
    for the change (usually before you start working on it). Trivial changes like typos do not
    require a JIRA issue. Your pull request should address just this issue, without
    pulling in other changes.
  • Each commit in the pull request should have a meaningful subject line and body.
  • Format the pull request title like [MDEP-XXX] - Fixes bug in ApproximateQuantiles,
    where you replace MDEP-XXX with the appropriate JIRA issue. Best practice
    is to use the JIRA issue title in the pull request title and in the first line of the
    commit message.
  • Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • Run mvn clean verify to make sure basic checks pass. A more thorough check will
    be performed on your pull request automatically.
  • You have run the integration tests successfully (mvn -Prun-its clean verify).

If your pull request is about ~20 lines of code you don't need to sign an
Individual Contributor License Agreement if you are unsure
please ask on the developers list.

To make clear that you license your contribution under
the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.

@4rokis
Copy link
Author

4rokis commented Nov 8, 2019

@4rokis
Copy link
Author

4rokis commented Nov 8, 2019

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<maven-dependency-plugin groupId="org.apache.maven.plugins" scope="" type="maven-plugin" version="3.1.2-SNAPSHOT">
  <maven-compat groupId="org.apache.maven" scope="test" type="jar" version="3.0">
    <maven-model-builder groupId="org.apache.maven" scope="compile" type="jar" version="3.0"/>
    <maven-settings groupId="org.apache.maven" scope="compile" type="jar" version="3.0"/>
    <sisu-inject-plexus groupId="org.sonatype.sisu" scope="compile" type="jar" version="1.4.2">
      <sisu-inject-bean groupId="org.sonatype.sisu" scope="compile" type="jar" version="1.4.2">
        <sisu-guice groupId="org.sonatype.sisu" scope="compile" type="jar" version="2.1.7"/>
      </sisu-inject-bean>
    </sisu-inject-plexus>
    <plexus-component-annotations groupId="org.codehaus.plexus" scope="compile" type="jar" version="1.7.1"/>
    <wagon-provider-api groupId="org.apache.maven.wagon" scope="compile" type="jar" version="1.0-beta-6"/>
  </maven-compat>
  <maven-artifact groupId="org.apache.maven" scope="compile" type="jar" version="3.0"/>
  <maven-plugin-api groupId="org.apache.maven" scope="compile" type="jar" version="3.0"/>
  <maven-model groupId="org.apache.maven" scope="compile" type="jar" version="3.0"/>
  <maven-core groupId="org.apache.maven" scope="compile" type="jar" version="3.0">
    <maven-settings-builder groupId="org.apache.maven" scope="compile" type="jar" version="3.0"/>
    <maven-aether-provider groupId="org.apache.maven" scope="runtime" type="jar" version="3.0"/>
    <aether-impl groupId="org.sonatype.aether" scope="compile" type="jar" version="1.7"/>
    <aether-api groupId="org.sonatype.aether" scope="compile" type="jar" version="1.7"/>
    <aether-util groupId="org.sonatype.aether" scope="compile" type="jar" version="1.7"/>
    <plexus-classworlds groupId="org.codehaus.plexus" scope="compile" type="jar" version="2.2.3"/>
    <plexus-sec-dispatcher groupId="org.sonatype.plexus" scope="compile" type="jar" version="1.3">
      <plexus-cipher groupId="org.sonatype.plexus" scope="compile" type="jar" version="1.4"/>
    </plexus-sec-dispatcher>
  </maven-core>
  <maven-repository-metadata groupId="org.apache.maven" scope="compile" type="jar" version="3.0"/>
  <maven-reporting-api groupId="org.apache.maven.reporting" scope="compile" type="jar" version="3.0"/>
  <maven-reporting-impl groupId="org.apache.maven.reporting" scope="compile" type="jar" version="3.0.0">
    <doxia-decoration-model groupId="org.apache.maven.doxia" scope="compile" type="jar" version="1.7.4"/>
  </maven-reporting-impl>
  <commons-io groupId="commons-io" scope="compile" type="jar" version="2.5"/>
  <doxia-sink-api groupId="org.apache.maven.doxia" scope="compile" type="jar" version="1.9">
    <doxia-logging-api groupId="org.apache.maven.doxia" scope="compile" type="jar" version="1.9"/>
  </doxia-sink-api>
  <doxia-core groupId="org.apache.maven.doxia" scope="compile" type="jar" version="1.9">
    <plexus-container-default groupId="org.codehaus.plexus" scope="compile" type="jar" version="1.7.1">
      <xbean-reflect groupId="org.apache.xbean" scope="compile" type="jar" version="3.7"/>
      <google-collections groupId="com.google.collections" scope="compile" type="jar" version="1.0"/>
    </plexus-container-default>
    <commons-lang3 groupId="org.apache.commons" scope="compile" type="jar" version="3.5"/>
    <httpclient groupId="org.apache.httpcomponents" scope="compile" type="jar" version="4.5.8">
      <commons-logging groupId="commons-logging" scope="compile" type="jar" version="1.2"/>
    </httpclient>
    <httpcore groupId="org.apache.httpcomponents" scope="compile" type="jar" version="4.4.11"/>
  </doxia-core>
  <doxia-site-renderer groupId="org.apache.maven.doxia" scope="compile" type="jar" version="1.9">
    <doxia-skin-model groupId="org.apache.maven.doxia" scope="compile" type="jar" version="1.9"/>
    <doxia-module-xhtml groupId="org.apache.maven.doxia" scope="compile" type="jar" version="1.9"/>
    <doxia-module-xhtml5 groupId="org.apache.maven.doxia" scope="compile" type="jar" version="1.9"/>
    <plexus-i18n groupId="org.codehaus.plexus" scope="compile" type="jar" version="1.0-beta-10"/>
    <plexus-velocity groupId="org.codehaus.plexus" scope="compile" type="jar" version="1.2"/>
    <velocity groupId="org.apache.velocity" scope="compile" type="jar" version="1.7"/>
    <velocity-tools groupId="org.apache.velocity" scope="compile" type="jar" version="2.0">
      <commons-beanutils groupId="commons-beanutils" scope="compile" type="jar" version="1.7.0"/>
      <commons-digester groupId="commons-digester" scope="compile" type="jar" version="1.8"/>
      <commons-chain groupId="commons-chain" scope="compile" type="jar" version="1.1"/>
      <commons-validator groupId="commons-validator" scope="compile" type="jar" version="1.3.1"/>
      <dom4j groupId="dom4j" scope="compile" type="jar" version="1.1"/>
      <oro groupId="oro" scope="compile" type="jar" version="2.0.8"/>
      <sslext groupId="sslext" scope="compile" type="jar" version="1.2-0"/>
      <struts-core groupId="org.apache.struts" scope="compile" type="jar" version="1.3.8">
        <antlr groupId="antlr" scope="compile" type="jar" version="2.7.2"/>
      </struts-core>
      <struts-taglib groupId="org.apache.struts" scope="compile" type="jar" version="1.3.8"/>
      <struts-tiles groupId="org.apache.struts" scope="compile" type="jar" version="1.3.8"/>
    </velocity-tools>
  </doxia-site-renderer>
  <plexus-archiver groupId="org.codehaus.plexus" scope="compile" type="jar" version="4.1.0">
    <commons-compress groupId="org.apache.commons" scope="compile" type="jar" version="1.18"/>
    <snappy groupId="org.iq80.snappy" scope="compile" type="jar" version="0.4"/>
    <xz groupId="org.tukaani" scope="runtime" type="jar" version="1.8"/>
  </plexus-archiver>
  <plexus-utils groupId="org.codehaus.plexus" scope="compile" type="jar" version="3.3.0"/>
  <file-management groupId="org.apache.maven.shared" scope="compile" type="jar" version="3.0.0">
    <maven-shared-io groupId="org.apache.maven.shared" scope="compile" type="jar" version="3.0.0"/>
  </file-management>
  <plexus-io groupId="org.codehaus.plexus" scope="compile" type="jar" version="3.1.0"/>
  <maven-dependency-analyzer groupId="org.apache.maven.shared" scope="compile" type="jar" version="1.11.1">
    <asm groupId="org.ow2.asm" scope="compile" type="jar" version="7.0"/>
  </maven-dependency-analyzer>
  <maven-dependency-tree groupId="org.apache.maven.shared" scope="compile" type="jar" version="3.0.1">
    <aether-util groupId="org.eclipse.aether" scope="compile" type="jar" version="0.9.0.M2"/>
  </maven-dependency-tree>
  <maven-common-artifact-filters groupId="org.apache.maven.shared" scope="compile" type="jar" version="3.1.0"/>
  <maven-artifact-transfer groupId="org.apache.maven.shared" scope="compile" type="jar" version="0.11.0">
    <commons-codec groupId="commons-codec" scope="compile" type="jar" version="1.11"/>
    <slf4j-api groupId="org.slf4j" scope="compile" type="jar" version="1.7.5"/>
  </maven-artifact-transfer>
  <maven-shared-utils groupId="org.apache.maven.shared" scope="compile" type="jar" version="3.2.1"/>
  <commons-lang groupId="commons-lang" scope="compile" type="jar" version="2.6"/>
  <commons-collections groupId="commons-collections" scope="compile" type="jar" version="3.2.2"/>
  <classworlds groupId="classworlds" scope="compile" type="jar" version="1.1"/>
  <maven-plugin-annotations groupId="org.apache.maven.plugin-tools" scope="provided" type="jar" version="3.5.2"/>
  <junit groupId="junit" scope="test" type="jar" version="4.11">
    <hamcrest-core groupId="org.hamcrest" scope="test" type="jar" version="1.3"/>
  </junit>
  <maven-plugin-testing-tools groupId="org.apache.maven.plugin-testing" scope="test" type="jar" version="2.1">
    <maven-invoker groupId="org.apache.maven.shared" scope="test" type="jar" version="2.0.11"/>
  </maven-plugin-testing-tools>
  <maven-plugin-testing-harness groupId="org.apache.maven.plugin-testing" scope="test" type="jar" version="2.1"/>
  <mockito-core groupId="org.mockito" scope="test" type="jar" version="2.28.2">
    <byte-buddy groupId="net.bytebuddy" scope="test" type="jar" version="1.9.10"/>
    <byte-buddy-agent groupId="net.bytebuddy" scope="test" type="jar" version="1.9.10"/>
    <objenesis groupId="org.objenesis" scope="test" type="jar" version="2.6"/>
  </mockito-core>
  <plexus-interpolation groupId="org.codehaus.plexus" scope="test" type="jar" version="1.24"/>
  <aether-connector-wagon groupId="org.sonatype.aether" scope="provided" type="jar" version="1.7">
    <aether-spi groupId="org.sonatype.aether" scope="compile" type="jar" version="1.7"/>
  </aether-connector-wagon>
  <wagon-http-lightweight groupId="org.apache.maven.wagon" scope="provided" type="jar" version="1.0-beta-6">
    <wagon-http-shared groupId="org.apache.maven.wagon" scope="provided" type="jar" version="1.0-beta-6">
      <xercesMinimal groupId="nekohtml" scope="provided" type="jar" version="1.9.6.2"/>
      <nekohtml groupId="nekohtml" scope="provided" type="jar" version="1.9.6.2"/>
    </wagon-http-shared>
  </wagon-http-lightweight>
  <jetty-server groupId="org.eclipse.jetty" scope="test" type="jar" version="9.2.28.v20190418">
    <javax.servlet-api groupId="javax.servlet" scope="test" type="jar" version="3.1.0"/>
    <jetty-http groupId="org.eclipse.jetty" scope="test" type="jar" version="9.2.28.v20190418">
      <jetty-util groupId="org.eclipse.jetty" scope="test" type="jar" version="9.2.28.v20190418"/>
    </jetty-http>
    <jetty-io groupId="org.eclipse.jetty" scope="test" type="jar" version="9.2.28.v20190418"/>
  </jetty-server>
  <jetty-servlet groupId="org.eclipse.jetty" scope="test" type="jar" version="9.2.28.v20190418">
    <jetty-security groupId="org.eclipse.jetty" scope="test" type="jar" version="9.2.28.v20190418"/>
  </jetty-servlet>
  <jetty-webapp groupId="org.eclipse.jetty" scope="test" type="jar" version="9.2.28.v20190418">
    <jetty-xml groupId="org.eclipse.jetty" scope="test" type="jar" version="9.2.28.v20190418"/>
  </jetty-webapp>
</maven-dependency-plugin>

@rfscholte
Copy link
Contributor

To improve this patch:

  • try to write al least tests to confirm this works (and to prevent regression in the future due to other changes)
  • I personally would go for a different style of XML, maybe one that looks more like the pom. At least I would expect an explicit artifactId. the element should have the dependency-tag.

@4rokis
Copy link
Author

4rokis commented Nov 11, 2019

To improve this patch:

* try to write al least tests to confirm this works (and to prevent regression in the future due to other changes)

* I personally would go for a different style of XML, maybe one that looks more like the pom. At least I would expect an explicit artifactId. the element should have the dependency-tag.

@rfscholte Thanks for the comment.
Do you mean something like this?

<dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-artifact</artifactId>
      <version>1.0.1</version>
     <dependencies>
         <dependency>
             <groupId>org.apache.maven</groupId>
             <artifactId>maven-model</artifactId>
             <version>1.0.0</version>
         </dependency>
     <dependencies>
</dependency>

@rfscholte
Copy link
Contributor

Yes, that xml is closer to what I would expect. The roottag could be <project/>

@4rokis
Copy link
Author

4rokis commented Nov 12, 2019

@rfscholte Oukej, I'll update it and add tests

@4rokis
Copy link
Author

4rokis commented Nov 14, 2019

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <version>3.1.2-SNAPSHOT</version>
  <scope/>
  <type>maven-plugin</type>
  <dependencies>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-compat</artifactId>
      <version>3.0</version>
      <scope>test</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven</groupId>
          <artifactId>maven-model-builder</artifactId>
          <version>3.0</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.apache.maven</groupId>
          <artifactId>maven-settings</artifactId>
          <version>3.0</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.sonatype.sisu</groupId>
          <artifactId>sisu-inject-plexus</artifactId>
          <version>1.4.2</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies>
            <dependency>
              <groupId>org.sonatype.sisu</groupId>
              <artifactId>sisu-inject-bean</artifactId>
              <version>1.4.2</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies>
                <dependency>
                  <groupId>org.sonatype.sisu</groupId>
                  <artifactId>sisu-guice</artifactId>
                  <version>2.1.7</version>
                  <scope>compile</scope>
                  <type>jar</type>
                  <dependencies/>
                </dependency>
              </dependencies>
            </dependency>
          </dependencies>
        </dependency>
        <dependency>
          <groupId>org.codehaus.plexus</groupId>
          <artifactId>plexus-component-annotations</artifactId>
          <version>1.7.1</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.apache.maven.wagon</groupId>
          <artifactId>wagon-provider-api</artifactId>
          <version>1.0-beta-6</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-artifact</artifactId>
      <version>3.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-plugin-api</artifactId>
      <version>3.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-model</artifactId>
      <version>3.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-core</artifactId>
      <version>3.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven</groupId>
          <artifactId>maven-settings-builder</artifactId>
          <version>3.0</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.apache.maven</groupId>
          <artifactId>maven-aether-provider</artifactId>
          <version>3.0</version>
          <scope>runtime</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.sonatype.aether</groupId>
          <artifactId>aether-impl</artifactId>
          <version>1.7</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.sonatype.aether</groupId>
          <artifactId>aether-api</artifactId>
          <version>1.7</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.sonatype.aether</groupId>
          <artifactId>aether-util</artifactId>
          <version>1.7</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.codehaus.plexus</groupId>
          <artifactId>plexus-classworlds</artifactId>
          <version>2.2.3</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.sonatype.plexus</groupId>
          <artifactId>plexus-sec-dispatcher</artifactId>
          <version>1.3</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies>
            <dependency>
              <groupId>org.sonatype.plexus</groupId>
              <artifactId>plexus-cipher</artifactId>
              <version>1.4</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
          </dependencies>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-repository-metadata</artifactId>
      <version>3.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.reporting</groupId>
      <artifactId>maven-reporting-api</artifactId>
      <version>3.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.reporting</groupId>
      <artifactId>maven-reporting-impl</artifactId>
      <version>3.0.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven.doxia</groupId>
          <artifactId>doxia-decoration-model</artifactId>
          <version>1.7.4</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.5</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.doxia</groupId>
      <artifactId>doxia-sink-api</artifactId>
      <version>1.9</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven.doxia</groupId>
          <artifactId>doxia-logging-api</artifactId>
          <version>1.9</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.doxia</groupId>
      <artifactId>doxia-core</artifactId>
      <version>1.9</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.codehaus.plexus</groupId>
          <artifactId>plexus-container-default</artifactId>
          <version>1.7.1</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies>
            <dependency>
              <groupId>org.apache.xbean</groupId>
              <artifactId>xbean-reflect</artifactId>
              <version>3.7</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
            <dependency>
              <groupId>com.google.collections</groupId>
              <artifactId>google-collections</artifactId>
              <version>1.0</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
          </dependencies>
        </dependency>
        <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-lang3</artifactId>
          <version>3.5</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpclient</artifactId>
          <version>4.5.8</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies>
            <dependency>
              <groupId>commons-logging</groupId>
              <artifactId>commons-logging</artifactId>
              <version>1.2</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
          </dependencies>
        </dependency>
        <dependency>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpcore</artifactId>
          <version>4.4.11</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.doxia</groupId>
      <artifactId>doxia-site-renderer</artifactId>
      <version>1.9</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven.doxia</groupId>
          <artifactId>doxia-skin-model</artifactId>
          <version>1.9</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.apache.maven.doxia</groupId>
          <artifactId>doxia-module-xhtml</artifactId>
          <version>1.9</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.apache.maven.doxia</groupId>
          <artifactId>doxia-module-xhtml5</artifactId>
          <version>1.9</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.codehaus.plexus</groupId>
          <artifactId>plexus-i18n</artifactId>
          <version>1.0-beta-10</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.codehaus.plexus</groupId>
          <artifactId>plexus-velocity</artifactId>
          <version>1.2</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.apache.velocity</groupId>
          <artifactId>velocity</artifactId>
          <version>1.7</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.apache.velocity</groupId>
          <artifactId>velocity-tools</artifactId>
          <version>2.0</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies>
            <dependency>
              <groupId>commons-beanutils</groupId>
              <artifactId>commons-beanutils</artifactId>
              <version>1.7.0</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
            <dependency>
              <groupId>commons-digester</groupId>
              <artifactId>commons-digester</artifactId>
              <version>1.8</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
            <dependency>
              <groupId>commons-chain</groupId>
              <artifactId>commons-chain</artifactId>
              <version>1.1</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
            <dependency>
              <groupId>commons-validator</groupId>
              <artifactId>commons-validator</artifactId>
              <version>1.3.1</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
            <dependency>
              <groupId>dom4j</groupId>
              <artifactId>dom4j</artifactId>
              <version>1.1</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
            <dependency>
              <groupId>oro</groupId>
              <artifactId>oro</artifactId>
              <version>2.0.8</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
            <dependency>
              <groupId>sslext</groupId>
              <artifactId>sslext</artifactId>
              <version>1.2-0</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
            <dependency>
              <groupId>org.apache.struts</groupId>
              <artifactId>struts-core</artifactId>
              <version>1.3.8</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies>
                <dependency>
                  <groupId>antlr</groupId>
                  <artifactId>antlr</artifactId>
                  <version>2.7.2</version>
                  <scope>compile</scope>
                  <type>jar</type>
                  <dependencies/>
                </dependency>
              </dependencies>
            </dependency>
            <dependency>
              <groupId>org.apache.struts</groupId>
              <artifactId>struts-taglib</artifactId>
              <version>1.3.8</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
            <dependency>
              <groupId>org.apache.struts</groupId>
              <artifactId>struts-tiles</artifactId>
              <version>1.3.8</version>
              <scope>compile</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
          </dependencies>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-archiver</artifactId>
      <version>4.1.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-compress</artifactId>
          <version>1.18</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.iq80.snappy</groupId>
          <artifactId>snappy</artifactId>
          <version>0.4</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.tukaani</groupId>
          <artifactId>xz</artifactId>
          <version>1.8</version>
          <scope>runtime</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-utils</artifactId>
      <version>3.3.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>file-management</artifactId>
      <version>3.0.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven.shared</groupId>
          <artifactId>maven-shared-io</artifactId>
          <version>3.0.0</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-io</artifactId>
      <version>3.1.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-dependency-analyzer</artifactId>
      <version>1.11.1</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.ow2.asm</groupId>
          <artifactId>asm</artifactId>
          <version>7.0</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-dependency-tree</artifactId>
      <version>3.0.1</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.eclipse.aether</groupId>
          <artifactId>aether-util</artifactId>
          <version>0.9.0.M2</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-common-artifact-filters</artifactId>
      <version>3.1.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-artifact-transfer</artifactId>
      <version>0.11.0</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>commons-codec</groupId>
          <artifactId>commons-codec</artifactId>
          <version>1.11</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.7.5</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.shared</groupId>
      <artifactId>maven-shared-utils</artifactId>
      <version>3.2.1</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>commons-lang</groupId>
      <artifactId>commons-lang</artifactId>
      <version>2.6</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
      <version>3.2.2</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>classworlds</groupId>
      <artifactId>classworlds</artifactId>
      <version>1.1</version>
      <scope>compile</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.plugin-tools</groupId>
      <artifactId>maven-plugin-annotations</artifactId>
      <version>3.5.2</version>
      <scope>provided</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.hamcrest</groupId>
          <artifactId>hamcrest-core</artifactId>
          <version>1.3</version>
          <scope>test</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.plugin-testing</groupId>
      <artifactId>maven-plugin-testing-tools</artifactId>
      <version>2.1</version>
      <scope>test</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven.shared</groupId>
          <artifactId>maven-invoker</artifactId>
          <version>2.0.11</version>
          <scope>test</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.plugin-testing</groupId>
      <artifactId>maven-plugin-testing-harness</artifactId>
      <version>2.1</version>
      <scope>test</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>2.28.2</version>
      <scope>test</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>net.bytebuddy</groupId>
          <artifactId>byte-buddy</artifactId>
          <version>1.9.10</version>
          <scope>test</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>net.bytebuddy</groupId>
          <artifactId>byte-buddy-agent</artifactId>
          <version>1.9.10</version>
          <scope>test</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.objenesis</groupId>
          <artifactId>objenesis</artifactId>
          <version>2.6</version>
          <scope>test</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-interpolation</artifactId>
      <version>1.24</version>
      <scope>test</scope>
      <type>jar</type>
      <dependencies/>
    </dependency>
    <dependency>
      <groupId>org.sonatype.aether</groupId>
      <artifactId>aether-connector-wagon</artifactId>
      <version>1.7</version>
      <scope>provided</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.sonatype.aether</groupId>
          <artifactId>aether-spi</artifactId>
          <version>1.7</version>
          <scope>compile</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-http-lightweight</artifactId>
      <version>1.0-beta-6</version>
      <scope>provided</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven.wagon</groupId>
          <artifactId>wagon-http-shared</artifactId>
          <version>1.0-beta-6</version>
          <scope>provided</scope>
          <type>jar</type>
          <dependencies>
            <dependency>
              <groupId>nekohtml</groupId>
              <artifactId>xercesMinimal</artifactId>
              <version>1.9.6.2</version>
              <scope>provided</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
            <dependency>
              <groupId>nekohtml</groupId>
              <artifactId>nekohtml</artifactId>
              <version>1.9.6.2</version>
              <scope>provided</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
          </dependencies>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-server</artifactId>
      <version>9.2.28.v20190418</version>
      <scope>test</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>3.1.0</version>
          <scope>test</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
        <dependency>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>jetty-http</artifactId>
          <version>9.2.28.v20190418</version>
          <scope>test</scope>
          <type>jar</type>
          <dependencies>
            <dependency>
              <groupId>org.eclipse.jetty</groupId>
              <artifactId>jetty-util</artifactId>
              <version>9.2.28.v20190418</version>
              <scope>test</scope>
              <type>jar</type>
              <dependencies/>
            </dependency>
          </dependencies>
        </dependency>
        <dependency>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>jetty-io</artifactId>
          <version>9.2.28.v20190418</version>
          <scope>test</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-servlet</artifactId>
      <version>9.2.28.v20190418</version>
      <scope>test</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>jetty-security</artifactId>
          <version>9.2.28.v20190418</version>
          <scope>test</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-webapp</artifactId>
      <version>9.2.28.v20190418</version>
      <scope>test</scope>
      <type>jar</type>
      <dependencies>
        <dependency>
          <groupId>org.eclipse.jetty</groupId>
          <artifactId>jetty-xml</artifactId>
          <version>9.2.28.v20190418</version>
          <scope>test</scope>
          <type>jar</type>
          <dependencies/>
        </dependency>
      </dependencies>
    </dependency>
  </dependencies>
</project>

@4rokis
Copy link
Author

4rokis commented Nov 15, 2019

@rfscholte Is this more to your liking?

@4rokis
Copy link
Author

4rokis commented Nov 15, 2019

As for the tests.... I have an issue as all the tree dependency tests are disabled for the moment and not quite working. My skill in java is not good enough to make it work 😿

@rfscholte
Copy link
Contributor

Looks quite good, just know that a project cannot have a scope, and its type is called packaging.

@4rokis
Copy link
Author

4rokis commented Nov 15, 2019

Looks quite good, just know that a project cannot have a scope, and its type is called packaging.

Will update the root node then

@4rokis
Copy link
Author

4rokis commented Nov 15, 2019

@rfscholte

<project>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <version>3.1.2-SNAPSHOT</version>
  <packaging>maven-plugin</packaging>
  <dependencies>

@mthmulders
Copy link
Contributor

As for the tests.... I have an issue as all the tree dependency tests are disabled for the moment and not quite working. My skill in java is not good enough to make it work 😿

I don't really understand what you mean. On master branch, running mvn verify, I'm seeing

Tests run: 247, Failures: 0, Errors: 0, Skipped: 0

Could you please elaborate?

@4rokis
Copy link
Author

4rokis commented Nov 15, 2019

@mthmulders

As for the tests.... I have an issue as all the tree dependency tests are disabled for the moment and not quite working. My skill in java is not good enough to make it work crying_cat_face

I don't really understand what you mean. On master branch, running mvn verify, I'm seeing

Tests run: 247, Failures: 0, Errors: 0, Skipped: 0

Could you please elaborate?

package org.apache.maven.plugins.dependency.tree;
    public void testVoid()
    {
        // TODO: tests disabled during MDEP-339 work, to be reactivated
    }
    public void _testTreeTestEnvironment()
...
    public void _testTreeDotSerializing()
...
    public void _testTreeGraphMLSerializing()
...
    public void _testTreeTGFSerializing()
...

As i understand it _ means ignore this testcase. Removing _ results is
mvn verify

[ERROR] Errors: 
[ERROR]   TestTreeMojo.testTreeDotSerializing:104->runTreeMojo:174 » NullPointer
[ERROR]   TestTreeMojo.testTreeGraphMLSerializing:120->runTreeMojo:174 » NullPointer
[ERROR]   TestTreeMojo.testTreeTGFSerializing:139->runTreeMojo:174 » NullPointer
[ERROR]   TestTreeMojo.testTreeTestEnvironment:87 » NullPointer
[INFO] 
[ERROR] Tests run: 255, Failures: 0, Errors: 4, Skipped: 0

@4rokis
Copy link
Author

4rokis commented Nov 20, 2019

So whats the next step? It would really help me in my project to have it in official release

@4rokis
Copy link
Author

4rokis commented Nov 22, 2019

@rfscholte Hey, do you know anyone responsible for accepting merge requests? I would love to push it to next stage...

@rfscholte
Copy link
Contributor

Maven is maintained by a very small group of volunteers.
Since I responded to this issue, it is likely I'm the one to merge, but I have more on my list, e.g. push Maven 3.6.3

@@ -107,7 +107,8 @@

/**
* If specified, this parameter will cause the dependency tree to be written using the specified format. Currently
* supported format are: <code>text</code> (default), <code>dot</code>, <code>graphml</code> and <code>tgf</code>.
* supported format are:
* <code>text</code> (default), <code>dot</code>, <code>graphml</code>, <code>tgf</code> and <code>xml</code>.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's reformat this to an unordered list

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, but i do not understand the request

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Like

<ul>
  <li>text (default)</li>
  <li>dot</li>
  ..

Or

<dd>
  <dt>text</dt>
  <dd>A textual tree (default)<dd/>
  <dt>dot</dt>
  <dd>Textual output based on the DOT graph description language</dd>
..

{
if ( node.getParent() == null || node.getParent() == node )
{
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually using DocumentBuilder and Transformer look like quite some overhead for something simple like this. I think there are faster implementations that can directly write proper xml.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not code in java, so google is my main source and i haven't found any other way. As for the XXE. It is not parsing an XML byt creating it, so it should be ok right?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree with @rfscholte that this is quite a heavy approach. The PrettyPrintXMLWriter from maven-shared-utils looks promising to me. It looks promising (less code, simpler code) but I'm struggling to make the tests pass. Simply put, I don't know how verify if I did it correctly.

@S4n60w3n, if I created a pull request on your MDEP-435 branch, could you verify that the PrettyPrintXMLWriter-approach gives the same outcome as your DOM-based one? Alternatively, could you tell me how I can verify that your implementation and mine have the same outcome?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mthmulders I will try to make time for that, but basically if you run my implementation and yours on this repo and output it to the file. Then you can make diff. It should be the same

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is too heavyweight, but you should set namespace aware to true on the factory.

}
catch ( ParserConfigurationException | TransformerException e )
{
e.printStackTrace();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Think of a better solution: either log with Logger or rethrow.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

* @param doc Docuemnt to use
* @param node Node to get data from
*/
private Element getNode( Document doc, DependencyNode node, Boolean root )
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to use Boolean Object, primitive is preferred here.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

@4rokis
Copy link
Author

4rokis commented Nov 22, 2019

@rfscholte Thanks for the review. It is much appreciated. I`ll fix your comments

@mthmulders mthmulders mentioned this pull request Jan 2, 2020
8 tasks
@@ -107,8 +107,14 @@

/**
* If specified, this parameter will cause the dependency tree to be written using the specified format. Currently
* supported format are: <code>text</code> (default), <code>dot</code>, <code>graphml</code> and <code>tgf</code>.
* These additional formats can be plotted to image files.
* supported format are:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

format --> formats

@@ -107,8 +107,14 @@

/**
* If specified, this parameter will cause the dependency tree to be written using the specified format. Currently
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will cause --> causes (tech writing lives in the eternal present)

/**
* Render child with its children recursively
*
* @param doc Docuemnt to use
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

document

/**
* Get element from node
*
* @param doc Docuemnt to use
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sp: document

* Get element from node
*
* @param doc Docuemnt to use
* @param node Node to get data from
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Node --> node (per sun javadoc conventions)

* @author <a href="mailto:sikora.bogdan@webscope.io">Bogdan Sikora</a>
* @since 3.1.2
*/
public class XMLDependencyNodeVisitor
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this class have to be public?

{
if ( node.getParent() == null || node.getParent() == node )
{
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is too heavyweight, but you should set namespace aware to true on the factory.


if ( root )
{
element = doc.createElement( "project" );
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A separate method for the root rather than an if statement would reduce cyclomatic complexity


if ( root )
{
element = doc.createElement( "project" );
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's weird that the syntax is sort of like a pom but not fully a POM. E.g. the namespaces are different.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed, seems like it should have an XSD as well.

Copy link
Contributor

@elharo elharo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs tests.

handleChild( doc, child, rootElement );
}

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The serialization could be split out into a separate method.

*
* @param writer the writer to write to.
*/
public XMLDependencyNodeVisitor( Writer writer )
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Writers can't be guaranteed to handle encoding properly when the XML is serialized. This should be an output stream.

/**
* Constructor.
*
* @param writer the writer to write to.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: no period at end of doc comment, per sun Javadoc style

@rfscholte
Copy link
Contributor

@4rokis
Copy link
Author

4rokis commented Feb 20, 2020

Ill try to get to that, but unfortunately Its low on my priority list

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
4 participants