mirror of
https://github.com/kestra-io/kestra.git
synced 2025-12-19 09:50:29 -05:00
100 lines
3.5 KiB
Bash
Executable File
100 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
###############################################################################
|
|
# Script : copy-plugin.sh
|
|
# Description : Script to automate the build and deployment of Kestra plugins locally
|
|
#
|
|
# This script performs the following operations:
|
|
# 1. Checks and configures the KESTRA_PLUGINS_DIR environment variable
|
|
# 2. Executes a Gradle build with shadowJar task
|
|
# 3. Copies all generated JAR files to the Kestra plugins directory
|
|
#
|
|
# Usage:
|
|
# ./copy-plugin.sh
|
|
#
|
|
# Prerequisites:
|
|
# - bash or zsh shell
|
|
# - Gradle installed or using the Gradle wrapper (./gradlew)
|
|
# - Write access to ~/.zshrc
|
|
# - Write permissions on Kestra plugins directory
|
|
#
|
|
# Environment variables:
|
|
# KESTRA_PLUGINS_DIR : Path to Kestra plugins directory
|
|
# If not defined, script will prompt for it
|
|
#
|
|
# Return codes:
|
|
# 0 : Success
|
|
# 1 : Error (invalid directory, build failure, copy error)
|
|
#
|
|
# Notes:
|
|
# - Script will automatically add KESTRA_PLUGINS_DIR to ~/.zshrc
|
|
# - JAR files are searched in all build/libs subdirectories
|
|
###############################################################################
|
|
|
|
# Check if KESTRA_PLUGINS_DIR is set
|
|
if [ -z "$KESTRA_PLUGINS_DIR" ]; then
|
|
# Prompt the user for the Kestra plugins directory
|
|
echo -n "KESTRA_PLUGINS_DIR is not set. Please enter the path to your Kestra plugins directory: "
|
|
read plugins_dir
|
|
|
|
# Validate if the entered directory is not empty
|
|
if [ -z "$plugins_dir" ]; then
|
|
echo "Error: Plugin directory cannot be empty. Exiting."
|
|
exit 1
|
|
fi
|
|
|
|
# Expand tilde (~) if present in the input path
|
|
plugins_dir=$(eval echo "$plugins_dir")
|
|
|
|
# Add export to ~/.zshrc
|
|
echo "Adding 'export KESTRA_PLUGINS_DIR=\"$plugins_dir\"' to ~/.zshrc"
|
|
echo "export KESTRA_PLUGINS_DIR=\"$plugins_dir\"" >> ~/.zshrc
|
|
|
|
# Source .zshrc to make the variable available in the current session
|
|
source ~/.zshrc
|
|
echo "KESTRA_PLUGINS_DIR has been set and sourced."
|
|
else
|
|
echo "KESTRA_PLUGINS_DIR is already set to: $KESTRA_PLUGINS_DIR"
|
|
fi
|
|
|
|
# Ensure the KESTRA_PLUGINS_DIR exists
|
|
if [ ! -d "$KESTRA_PLUGINS_DIR" ]; then
|
|
echo "Error: KESTRA_PLUGINS_DIR ($KESTRA_PLUGINS_DIR) does not exist or is not a directory. Please create it or set the correct path."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Starting Gradle build..."
|
|
# Run ./gradlew shadowJar
|
|
if ./gradlew shadowJar; then
|
|
echo "Gradle build (shadowJar) completed successfully."
|
|
|
|
# Find all 'build/libs' directories and copy *.jar files from them
|
|
found_jars=0
|
|
find . -type d -name "libs" -path "*/build/libs" | while read -r build_libs_dir; do
|
|
echo "Found build/libs directory: $build_libs_dir"
|
|
if ls "$build_libs_dir"/*.jar &>/dev/null; then # Check if there are any .jar files
|
|
echo "Copying *.jar files from $build_libs_dir to $KESTRA_PLUGINS_DIR"
|
|
cp "$build_libs_dir"/*.jar "$KESTRA_PLUGINS_DIR"
|
|
if [ $? -eq 0 ]; then
|
|
echo "Successfully copied JAR files from $build_libs_dir"
|
|
found_jars=1 # Set flag if at least one copy operation was successful
|
|
else
|
|
echo "Error: Failed to copy JAR files from $build_libs_dir."
|
|
fi
|
|
else
|
|
echo "No *.jar files found in $build_libs_dir."
|
|
fi
|
|
done
|
|
|
|
# Check if any JARs were found and copied
|
|
if [ "$found_jars" -eq 0 ]; then
|
|
echo "Warning: No *.jar files were found in any 'build/libs' directories or failed to copy."
|
|
# Exit 1 for a warning, or 0 if it's acceptable that no JARs are found
|
|
fi
|
|
|
|
else
|
|
echo "Error: Gradle build (shadowJar) failed. Please check the build output for errors."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Script finished."
|