publish.sh vam script diff
7 removals
Words removed | 11 |
Total words | 354 |
Words removed (%) | 3.11 |
80 lines
14 additions
Words added | 22 |
Total words | 365 |
Words added (%) | 6.03 |
86 lines
#!/bin/bash
#!/bin/bash
CREATOR_NAME="EntityCX"
CREATOR_NAME="EntityCX"
# Assure the plugin/directory name is provided as an argument
# Assure the plugin/directory name is provided as an argument
if [ -z "$1" ]; then
if [ -z "$1" ]; then
echo "Usage: $0 <PLUGIN_NAME>"
echo "Usage: $0 <PLUGIN_NAME>"
exit 1
exit 1
fi
fi
PLUGIN_NAME="$1"
PLUGIN_NAME="$1"
# Define the publish path
# Define the publish path
PUBLISH_PATH="publish/Custom/Scripts/${CREATOR_NAME}/${PLUGIN_NAME}"
PUBLISH_PATH="publish/Custom/Scripts/${CREATOR_NAME}/${PLUGIN_NAME}"
# Define the path to the run_number file for the plugin
# Define the path to the run_number file for the plugin
RUN_NUMBER_FILE="${PLUGIN_NAME}_run_number"
RUN_NUMBER_FILE="${PLUGIN_NAME}_run_number"
# Initialize or increment run number
# Initialize or increment run number
RUN_NUMBER=$(cat "$RUN_NUMBER_FILE" 2>/dev/null || echo 0)
RUN_NUMBER=$(cat "$RUN_NUMBER_FILE" 2>/dev/null || echo 0)
echo $((RUN_NUMBER + 1)) > "$RUN_NUMBER_FILE"
echo $((RUN_NUMBER + 1)) > "$RUN_NUMBER_FILE"
# Create empty publish directory if it does not exist
# Create empty publish directory if it does not exist
mkdir -p "$PUBLISH_PATH"
mkdir -p "$PUBLISH_PATH"
rm -rf "$PUBLISH_PATH/*"
find "$PUBLISH_PATH" -mindepth 1 -delete
# Copy all non-project and debug files to the publish path
# Copy all non-project and debug files to the publish path
#cp -R "${PLUGIN_NAME}"/* "$PUBLISH_PATH/"
#cp -R "${PLUGIN_NAME}"/* "$PUBLISH_PATH/"
# Copy files to the publish path, excluding .csproj and .sln files
# Copy files to the publish path, excluding .csproj and .sln files
find "${PLUGIN_NAME}/" -mindepth 1 -maxdepth 1 \( -type f -o -type d \) \
find "${PLUGIN_NAME}/" -mindepth 1 -maxdepth 1 \( -type f -o -type d \) \
! -name "*.csproj" \
! -name "*.csproj" \
! -name "*.sln" \
! -name "*.sln" \
! -name "bin" \
! -name ".*" \
! -name "obj" \
! -path "${PLUGIN_NAME}/bin" -prune \
! -name ".*" \
! -path "${PLUGIN_NAME}/obj" -prune \
-exec cp -R {} "$PUBLISH_PATH/" \;
! -path "${PLUGIN_NAME}/.*" -prune \
-exec cp -R {} "$PUBLISH_PATH/" \;
# Generate the content list
# Generate the content list
CONTENT_LIST=$(find "$PUBLISH_PATH" \
CONTENT_LIST=$(find "$PUBLISH_PATH" \
\( -path "*/bin" -o -path "*/obj" \) -prune -o -type f ! -name ".*" \
\( -path "*/bin" -o -path "*/obj" \) -prune -o -type f ! -name ".*" \
! -iname "*.md" ! -iname "*.var" ! -iname "*.sln" ! -iname "*.csproj" \
! -iname "*.md" ! -iname "*.var" ! -iname "*.sln" ! -iname "*.csproj" \
-printf "Custom/Scripts/${CREATOR_NAME}/${PLUGIN_NAME}/%P\n" | \
-printf "Custom/Scripts/${CREATOR_NAME}/${PLUGIN_NAME}/%P\n" | \
jq -R . | jq -s .)
jq -R . | jq -s .)
# Create the .cslist file
# Create the .cslist file
CS_LIST_FILE="${PUBLISH_PATH}/${PLUGIN_NAME}.cslist"
CS_LIST_FILE="${PUBLISH_PATH}/${PLUGIN_NAME}.cslist"
echo "$CONTENT_LIST" | jq -r '.[] | select(endswith(".cs"))' | sed "s|Custom/Scripts/${CREATOR_NAME}/${PLUGIN_NAME}/||" > "$CS_LIST_FILE"
echo "$CONTENT_LIST" | jq -r '.[] | select(endswith(".cs"))' | sed "s|Custom/Scripts/${CREATOR_NAME}/${PLUGIN_NAME}/||" > "$CS_LIST_FILE"
# Copy the .cslist file to the plugin's root directory
# Copy the .cslist file to the plugin's root directory
cp "$CS_LIST_FILE" "${PLUGIN_NAME}/"
cp "$CS_LIST_FILE" "${PLUGIN_NAME}/"
# Create .hide files for .cs files not in the root of PUBLISH_PATH
# Create .hide files for .cs files not in the root of PUBLISH_PATH
echo "$CONTENT_LIST" | jq -r '.[] | select(endswith(".cs"))' | while read -r cs_file; do
echo "$CONTENT_LIST" | jq -r '.[] | select(endswith(".cs"))' | while read -r cs_file; do
if [[ "$cs_file" == */*/*/* ]]; then # Check if there's a directory structure after Custom/Scripts/CreatorName/PluginName/
if [[ "$cs_file" == */*/*/* ]]; then # Check if there's a directory structure after Custom/Scripts/CreatorName/PluginName/
touch "$PUBLISH_PATH/${cs_file#Custom/Scripts/${CREATOR_NAME}/${PLUGIN_NAME}/}.hide"
touch "$PUBLISH_PATH/${cs_file#Custom/Scripts/${CREATOR_NAME}/${PLUGIN_NAME}/}.hide"
fi
fi
done
done
# Create the meta.json file, with generated content list
# Create the meta.json file, with generated content list
cat <<EOF > publish/meta.json
cat <<EOF > publish/meta.json
{
{
"licenseType": "CC BY-SA",
"licenseType": "CC BY-SA",
"creatorName": "${CREATOR_NAME}",
"creatorName": "${CREATOR_NAME}",
"packageName": "${PLUGIN_NAME}",
"packageName": "${PLUGIN_NAME}",
"includeVersionsInReferences": "true",
"includeVersionsInReferences": "true",
"description": "v0.1.${RUN_NUMBER} ${PLUGIN_NAME} Plugin",
"description": "v0.1.${RUN_NUMBER} ${PLUGIN_NAME} Plugin",
"credits": "",
"credits": "",
"instructions": "",
"instructions": "",
"promotionalLink": "",
"promotionalLink": "",
"programVersion": "1.20.0.1",
"programVersion": "1.20.0.1",
"contentList": ${CONTENT_LIST},
"contentList": ${CONTENT_LIST},
"dependencies": {}
"dependencies": {}
}
}
EOF
EOF
# Change to the publish directory
# Change to the publish directory
cd publish
cd publish
# Create the var file with the incremented run number
# Create the var file with the incremented run number
VAR_FILE="${CREATOR_NAME}.${PLUGIN_NAME}.${RUN_NUMBER}.var"
VAR_FILE="${CREATOR_NAME}.${PLUGIN_NAME}.${RUN_NUMBER}.var"
echo $CONTENT_LIST | jq -r '.[]' | xargs zip -r "$VAR_FILE"
echo $CONTENT_LIST | jq -r '.[]' | xargs zip -r "$VAR_FILE"
# Add the meta.json file to the var
# Add the meta.json file to the var
zip -r "$VAR_FILE" meta.json
zip -r "$VAR_FILE" meta.json
CONTENT_LIST=""
CS_LIST_FILE=""