<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one or more
  ~ contributor license agreements.  See the NOTICE file distributed with
  ~ this work for additional information regarding copyright ownership.
  ~ The ASF licenses this file to You under the Apache License, Version 2.0
  ~ (the "License"); you may not use this file except in compliance with
  ~ the License.  You may obtain a copy of the License at
  ~
  ~       http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  ~
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>hop-assemblies-plugins</artifactId>
        <groupId>org.apache.hop</groupId>
        <version>2.6.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <packaging>pom</packaging>

    <artifactId>hop-assemblies-plugins-actions</artifactId>

    <name>Hop Assemblies Plugins Actions</name>
    <description />

    <modules>
        <module>abort</module>
        <module>addresultfilenames</module>
        <module>as400command</module>
        <module>checkdbconnection</module>
        <module>checkfilelocked</module>
        <module>columnsexist</module>
        <module>copyfiles</module>
        <module>copymoveresultfilenames</module>
        <module>createfile</module>
        <module>createfolder</module>
        <module>delay</module>
        <module>deletefile</module>
        <module>deletefiles</module>
        <module>deletefolders</module>
        <module>deleteresultfilenames</module>
        <module>dostounix</module>
        <module>eval</module>
        <module>evalfilesmetrics</module>
        <module>evaluatetablecontent</module>
        <module>filecompare</module>
        <module>fileexists</module>
        <module>filesexist</module>
        <module>folderisempty</module>
        <module>folderscompare</module>
        <module>ftp</module>
        <module>getpop</module>
        <module>http</module>
        <module>mail</module>
        <module>mailvalidator</module>
        <module>movefiles</module>
        <module>msgboxinfo</module>
        <module>mssqlbulkload</module>
        <module>mysqlbulkfile</module>
        <module>mysqlbulkload</module>
        <module>pgpfiles</module>
        <module>ping</module>
        <module>pipeline</module>
        <module>repeat</module>
        <module>sendnagiospassivecheck</module>
        <module>setvariables</module>
        <module>shell</module>
        <module>simpleeval</module>
        <module>snmptrap</module>
        <module>snowflake</module>
        <module>sql</module>
        <module>success</module>
        <module>tableexists</module>
        <module>telnet</module>
        <module>truncatetables</module>
        <module>unzip</module>
        <module>waitforfile</module>
        <module>waitforsql</module>
        <module>webserviceavailable</module>
        <module>workflow</module>
        <module>writetofile</module>
        <module>writetolog</module>
        <module>xml</module>
        <module>zipfile</module>
    </modules>

</project>
