<?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>0.70</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <packaging>pom</packaging>

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

    <name>Hop Assemblies Plugins Actions</name>
    <description></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>repeat</module>
        <module>sendnagiospassivecheck</module>
        <module>setvariables</module>
        <module>shell</module>
        <module>simpleeval</module>
        <module>snmptrap</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>writetofile</module>
        <module>writetolog</module>
        <module>xml</module>
        <module>zipfile</module>
    </modules>

</project>
