commit 7388b044084c1406107c338a0c1f8b78f6917a2f Author: William Petit Date: Mon Aug 21 19:08:40 2023 -0600 feat: initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..badd7dd --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +# MkTools + +Tâches [Make](https://fr.wikipedia.org/wiki/Make) génériques à utiliser de projet en projet. + +![](./misc/share_all.png) + +## Utilisation + +1. Dans le fichier `Makefile` de votre projet, ajouter à la fin de celui ci: + + ```makefile + build: + # Votre propre tâche + + # [...] + + # Inclure les lignes suivantes: + + mktools: + rm -rf .mktools + curl -q https://forge.cadoles.com/Cadoles/mktools/raw/branch/master/install.sh | $(SHELL) + + -include .mktools/*.mk + ``` + +2. Synchroniser le répertoire des tâches + + ```shell + make mktools + ``` + +3. Vous pouvez commencer à utiliser les tâches Make partagées ! + +## Tâches disponibles + +|Tâches|Description|Documentation| +|------|-----------|-------------| +|`make mkt-webdav-upload`|Téléverser un fichier dans un répertoire WebDAV (Nextcloud)|[Voir ./doc/tasks/webdav.md](./doc/tasks/webdav.md)| +|`make mkt-gitea-release`|Créer une release Gitea et téléverser des fichiers attachés|[Voir ./doc/tasks/gitea.md](./doc/tasks/gitea.md)| \ No newline at end of file diff --git a/doc/tasks/gitea.md b/doc/tasks/gitea.md new file mode 100644 index 0000000..c1e31a1 --- /dev/null +++ b/doc/tasks/gitea.md @@ -0,0 +1,25 @@ +# Tâches Gitea + +## `make mkt-gitea-release` + +La tâche `mkt-gitea-release` permet de créer une "release" sur un projet Gitea et de téléverser des fichiers attachés à celles ci pour qu'ils soient disponibles en téléchargement sur cette version. + +### Usage + +Exemple d'utilisation de la tâche pour la création d'une nouvelle release sur le projet factice `my-org/my-project` sur https://forge.cadoles.com, tout en attachant les fichiers présents dans le répertoire `dist/` + +```makefile +# Organisation Gitea du projet +MKT_GITEA_RELEASE_ORG ?= my-org +# Projet Gitea +MKT_GITEA_RELEASE_PROJECT ?= my-project +# Version associée à la nouvelle release +MKT_GITEA_RELEASE_VERSION ?= v0.0.0 +# Texte associé à la release Gitea +MKT_GITEA_RELEASE_BODY ?= My new release + +# Exécution de la tâche mkt-gitea-release en passant la liste +# des fichiers à téléverser avec la nouvelle version publiée +my-release: + $(MAKE) MKT_GITEA_RELEASE_ATTACHMENTS=$$(find dist/* -type f) mkt-gitea-release +``` \ No newline at end of file diff --git a/doc/tasks/webdav.md b/doc/tasks/webdav.md new file mode 100644 index 0000000..c98b3d2 --- /dev/null +++ b/doc/tasks/webdav.md @@ -0,0 +1,24 @@ +# Tâches WebDAV + +## `make mkt-webdav-upload` + +La tâche `mkt-webdav-upload` permet de téléverser un fichier sur un espace de partage de fichier proposant une interface WebDAV (Nextcloud par exemple). + +### Usage + +Exemple d'utilisation de la tâche pour le téléversement d'un fichier `my-doc.txt` généré par une tâche tierce dans le répertoire `my-doc` dans l'espace Nextcloud de l'utilisateur authentifié: + +```makefile +# Identifiants de connexion Nextcloud +# Il est conseillé bien entendu de ne pas laisser le mot de passe +# et le nom d'utilisateur "en dur" dans le fichier Makefile... +MKT_WEBDAV_USER ?= my-nextcloud-user +MKT_WEBDAV_PASSWD ?= my-nextcloud-password +# URL de base de l'interface WebDAV de l'espace Nextcloud Cadoles +MKT_WEBDAV_REMOTE_URL = https://nextcloud.cadoles.com/nextcloud/remote.php/dav/files +# Répertoire de destination du fichier à téléverser +MKT_WEBDAV_DIR = /$(MKT_WEBDAV_USER)/my-doc + +my-upload: + $(MAKE) MKT_WEBDAV_FILE=test.txt mkt-webdav-upload +``` \ No newline at end of file diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..b1656ba --- /dev/null +++ b/install.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +set -e + +TASKS_DIR=".mktools" +TASKS_FILES="webdav gitea" + +main() { + echo "Creating directory '$TASKS_DIR/'" + # Create $TASKS_DIR + mkdir -p "$TASKS_DIR" + + # Download each referenced task files in $TASKS_DIR + for f in $TASKS_FILES; do + echo "Downloading file '$TASKS_DIR/$f.mk'" + curl -qo "$TASKS_DIR/$f.mk" "https://forge.cadoles.com/Cadoles/mktools/raw/branch/master/tasks/$f.mk" + done + + # Add $TASKS_DIR to .gitignore + if [ ! -f .gitignore ]; then + touch .gitignore + fi + grep -qF -- "$TASKS_DIR/" ".gitignore" || echo "$TASKS_DIR/" >> ".gitignore" + + echo "Done" +} + +main \ No newline at end of file diff --git a/misc/share_all.png b/misc/share_all.png new file mode 100644 index 0000000..78a7e6b Binary files /dev/null and b/misc/share_all.png differ diff --git a/tasks/gitea.mk b/tasks/gitea.mk new file mode 100644 index 0000000..bea8291 --- /dev/null +++ b/tasks/gitea.mk @@ -0,0 +1,25 @@ +MKT_GITEA_RELEASE_PROJECT ?= +MKT_GITEA_RELEASE_ORG ?= +MKT_GITEA_RELEASE_BASE_URL ?= https://forge.cadoles.com +MKT_GITEA_RELEASE_VERSION ?= +MKT_GITEA_RELEASE_COMMIT_TARGET ?= $(shell git rev-parse HEAD) +MKT_GITEA_RELEASE_IS_DRAFT ?= false +MKT_GITEA_RELEASE_BODY ?= +MKT_GITEA_RELEASE_ATTACHMENTS ?= + +mkt-gitea-release: tools/gitea-release/bin/gitea-release.sh + GITEA_RELEASE_PROJECT="$(MKT_GITEA_RELEASE_PROJECT)" \ + GITEA_RELEASE_ORG="$(MKT_GITEA_RELEASE_ORG)" \ + GITEA_RELEASE_BASE_URL="$(MKT_GITEA_RELEASE_BASE_URL)" \ + GITEA_RELEASE_VERSION="$(MKT_GITEA_RELEASE_VERSION)" \ + GITEA_RELEASE_NAME="$(MKT_GITEA_RELEASE_VERSION)" \ + GITEA_RELEASE_COMMITISH_TARGET="$(MKT_GITEA_RELEASE_COMMIT_TARGET)" \ + GITEA_RELEASE_IS_DRAFT="$(MKT_GITEA_RELEASE_IS_DRAFT)" \ + GITEA_RELEASE_BODY="$(MKT_GITEA_RELEASE_BODY)" \ + GITEA_RELEASE_ATTACHMENTS="$(MKT_GITEA_RELEASE_ATTACHMENTS)" \ + tools/gitea-release/bin/gitea-release.sh + +tools/gitea-release/bin/gitea-release.sh: + mkdir -p tools/gitea-release/bin + curl --output tools/gitea-release/bin/gitea-release.sh https://forge.cadoles.com/Cadoles/Jenkins/raw/branch/master/resources/com/cadoles/gitea/gitea-release.sh + chmod +x tools/gitea-release/bin/gitea-release.sh \ No newline at end of file diff --git a/tasks/webdav.mk b/tasks/webdav.mk new file mode 100644 index 0000000..20d36fd --- /dev/null +++ b/tasks/webdav.mk @@ -0,0 +1,19 @@ +MKT_WEBDAV_USER ?= +MKT_WEBDAV_PASSWD ?= +MKT_WEBDAV_REMOTE_URL ?= +MKT_WEBDAV_DIR ?= +MKT_WEBDAV_FILE ?= + +mkt-webdav-upload: + curl \ + -f \ + -u '$(MKT_WEBDAV_USER):$(MKT_WEBDAV_PASSWD)' \ + -X MKCOL \ + "$(MKT_WEBDAV_REMOTE_URL)/$(MKT_WEBDAV_DIR)" + curl \ + -f \ + -u '$(MKT_WEBDAV_USER):$(MKT_WEBDAV_PASSWD)' \ + -T "$(PWD)/$(MKT_WEBDAV_FILE)" \ + "$(MKT_WEBDAV_REMOTE_URL)/$(MKT_WEBDAV_DIR)/$(shell basename $(MKT_WEBDAV_FILE))" + +.PHONY: mkt-webdav-upload \ No newline at end of file