<?xml version="1.0" encoding="UTF-8"?>
<!--
     ============LICENSE_START=======================================================
     org.onap.dmaap
     ================================================================================
     Copyright © 2017 AT&T Intellectual Property. All rights reserved.
     Modification copyright (C) 2021 Nordix Foundation.
     ================================================================================
     Licensed 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.
     ============LICENSE_END=========================================================
   
     ECOMP is a trademark and service mark of AT&T Intellectual Property.

 -->

<project>
		<target name="prep_home_directory_for_swm_pkgcreate">
			<!-- These tasks are copying contents from the installHomeDirectory into 
			the eventual $AJSC_HOME directory for running locally and soa cloud installation -->
			<echo message="ENTERING 'prep_home_directory_for_swm_pkgcreate' ant tasks" />

			<!-- NOTE: If you are NOT deploying to CSI environment, and you are NOT using an AJSC_SHARED_CONFIG location on a
			node, you should go ahead and copy EVERYTHING from bundleconfig and ajsc-shared-config (logback.xml) directory
			to utilize proper logging from logback.xml. Simply, uncomment the following code snippet below to copy EVERYTHING and
			comment out the CSI related build script above. -->
			<!-- NON-CSI related build copy task. Please, uncomment the following code snippet to deploy the proper artifacts to a NON-CSI Env. -->
			<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/bundleconfig" failonerror="true">
				<fileset dir="${basedir}/bundleconfig-local" includes="**/**" />
			</copy>
			<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/bundleconfig/etc" failonerror="true">
				<fileset dir="${basedir}/ajsc-shared-config/etc" includes="**/**" />
			</copy>
			<!-- End of NON-CSI related build copy task. -->

			<!-- Copying any zips (deployment packages) to $AJSC_HOME/services for
			auto-deployment -->
			<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/services" failonerror="false">
				<fileset dir="${basedir}/services" includes="*.zip" />
			</copy>

			<!-- Copying dependencies from the service project (not provided by AJSC 
			Container) to the $AJSC_HOME/extJars folder to be accessible on the classpath -->
			<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/extJars" failonerror="false">
				<fileset dir="target/userjars" includes="*" />
			</copy>

			<!-- extApps directory MUST be created for ajsc-runner to run correctly, 
			even if empty. DO NOT REMOVE!!! -->
			<!-- extApps directory created to deploy other war files on startup or hot deploy War files after ajsc 
			starts up.  -->
			<mkdir dir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/extApps" />

			<!-- Copying extra jar files that have been labeled as dependencies in service project 
			to /extJars folder to be made available on the classpath for your service -->
			<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/extJars" failonerror="false">
				<fileset dir="target" includes="*.jar" />
			</copy>

			<!-- Copying deployment packages created within the project to the $AJSC_HOME/services folder to be auto
			deployed.  -->
			<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/services">
				<fileset dir="target" includes="*.zip" excludes="*-runtimeEnvironment.zip" />
			</copy>

			<echo message="EXITING 'prep_assembly_output_for_swm_plugin' ant tasks" />
		</target>
	</project>