Création d'archive de module

Finalement, vu ma feignasse attitude, j’ai opté pour un unique utilitaire situé dans dotclear/build-tools/, ce qui me simplifie largement la vie.

Le code d’icelui est celui-ci :

#!/bin/sh

# Usage: build-module.sh [theme]
# The local directory of module must be a git repo and version will be extracted from its tags
# The module installable archive will be created inside the current directory (module root)
#
# Examples:
# (Assuming that the current path is the dotclear local repo root)
#
# Plugin module, inside plugins folder:
# $ cd plugins/my-plugin
# $ ../build-tools/build-module.sh
#
# Theme module, inside themes folder:
# $ cd themes/my-theme
# $ ../build-tools/build-module.sh theme

# Module type
MOD_TYPE="plugin"

# Default module version
DEF_VERSION="0.1"

# Path for JS minifier (1st argument is the js file to minify)
DIRECTORY=$(dirname "$0")
MIN_JS="$DIRECTORY/min-js.php"

# Check optionnal 1st parameter (module type)
if [ "$1" = "theme" ]; then
  MOD_TYPE="theme"
fi

# Find module name
MOD_NAME=$(basename "$PWD")
[ -z "$MOD_NAME" ] && { echo "Unable to find module name!" ; exit 1; }

# Copy all files to tmp dir
if [ -d "$MOD_NAME" ]; then
  rm -rf ./"$MOD_NAME"
fi
mkdir ./"$MOD_NAME"
rsync --exclude="$MOD_NAME" --exclude="mkdocs" --exclude="build.sh" --exclude=".git*" --exclude=".DS_Store" --exclude="*.zip" --exclude="*.map" --exclude="*.rb" --exclude="sass" --exclude="scss" --exclude=".sass*" --exclude="scripts" -a . ./"$MOD_NAME"

# Pack Javascript files
if [ -f "$MIN_JS" ]; then
  find ./"$MOD_NAME" -name '*.js' -exec "$MIN_JS" \{\} \;
fi

# Find last version (if any)
CUR_VERSION=$(git tag -l | sort -r -V | grep -E "[0-9]" | head -n 1)
if [ -z "$CUR_VERSION" ]; then
  CUR_VERSION=$DEF_VERSION
fi

# Make installable archive
if [ -f $MOD_TYPE-"$MOD_NAME"-$CUR_VERSION.zip ]; then
  rm $MOD_TYPE-"$MOD_NAME"-$CUR_VERSION.zip
fi
zip -q -r $MOD_TYPE-"$MOD_NAME"-$CUR_VERSION.zip ./"$MOD_NAME"/

# Cleanup
rm -rf ./"$MOD_NAME"

# Final output
echo "$MOD_TYPE-$MOD_NAME-$CUR_VERSION.zip ready!"

La question qui se pose maintenant est la suivante : dois-je l’inclure dans le dépôt officiel de Dotclear ou c’est trop spécifique ?

Sachant que ça implique que le module à partir duquel on lance la fabrication de l’archive doit être un dépôt Git local (histoire de retrouver sa version).

Pour construire une archive d’un plugin, il faut se positionner à la racine du plugin en question et lancer la commande dc2/build-tools/build-module.sh, l’archive sera créée dans le dossier du plugin.

Pour un thème, la commande est identique à la différence qu’il faut rajouter theme : dc2/build-tools/build-module.sh theme.

Dit autrement : « Vous en auriez l’usage ? »

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/14318

Haut de page