diff --git a/README.md b/README.md index d7638784073ad2109321657c024ff01d56bdf376..6f83ea7ee909105534820ab35bb35a98a4db7b09 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ # Matrix Stickers Matrix-stickers est un dépôt créé pour regrouper les pack de stickers créés par les IIEns. -Il propose aussi plusieurs tutoriels afin d'installer un meilleur "stickerpicker", d'utiliser des packs de sticker -ainsi que de les créer soi-même. +Il propose aussi plusieurs tutoriels afin d'installer un meilleur "stickerpicker", d'utiliser des packs de sticker +ainsi que de les créer soi-même. Salon d'aide : `##sticker:iiens.net` -**Table des matières** -- [Utiliser le stickerpicker d'un ami](#user-content-utiliser-le-stickerpicker-dun-ami) -- [Avoir un meilleur stickerpicker](#user-content-avoir-un-meilleur-stickerpicker) +**Table des matières** +- [Utiliser le stickerpicker d'un ami](#user-content-utiliser-le-stickerpicker-dun-ami) +- [Avoir un meilleur stickerpicker](#user-content-avoir-un-meilleur-stickerpicker) - [Utiliser un pack de sticker du dépôt](#user-content-utiliser-un-pack-de-sticker) -- [Créer des packs de stickers](#user-content-créer-des-packs-de-stickers) +- [Créer des packs de stickers](#user-content-créer-des-packs-de-stickers) ## Utiliser le stickerpicker d'un ami Si vous avez des amis ayant déjà leur propre stickerpicker, il est possible de le réutiliser. @@ -17,12 +17,12 @@ Pour cela : 2. Récupérez l'adresse sur laquelle il héberge ses stickers. Cette adresse est de la forme : ```bash https://nom.iiens.net/stickerpicker/web/?theme=$theme - ``` + ``` 3. Connectez vous à Element. Utilisez la commande `/devtools` 4. Cliquer sur `Explorer les données du compte` puis sur `m.widgets`. Si absent : 1. Activer le gestionnaire d'intégration. `Tout les paramètres -> général -> Gérer les intégrations` 2. Envoyer n'importe quel sticker. 5. Cliquer sur `Modifier` et remplacer tout par le code suivant en n'oubliant pas de modifier - les champs "url" et "sender": + les champs "url" et "sender": ```json { "stickerpicker": { @@ -46,20 +46,20 @@ Pour cela : Le stickerpicker de base ne permet pas d'utiliser des stickers personnalisés. Il faut donc installer notre propre stickerpicker qui pourra les utiliser. Pour cela: -1. Se connecter à son perso ou son site web +1. Se connecter à son perso ou son site web ```bash ssh nomArise@perso.iiens.net ``` -2. Cloner ce dépôt. +2. Cloner ce dépôt. ```bash git clone https://git.iiens.net/Tigriz/matrix-stickers.git ``` -3. Se déplacer dans le dépôt et exécuter le script install.sh +3. Se déplacer dans le dépôt et exécuter le script install.sh ```bash cd matrix-stickers ./install.sh ``` -4. Se connecter à Element. Utiliser la commande `/devtools` dans n'importe quel tchat. +4. Se connecter à Element. Utiliser la commande `/devtools` dans n'importe quel tchat.  5. Cliquer sur `Explorer les données du compte` puis sur `m.widgets`. - Si `m.widgets` est absent, il faut activer le gestionnaire d'intégration dans `Tout les paramètres -> Général -> Gerer les intégrations`. @@ -85,18 +85,18 @@ Pour cela: ``` Il faut remplacer les données entre `{%%}` par ce qu'il correspond à votre compte / installation. -7. Actualiser Element +7. Actualiser Element Vous avez maintenant un stickerpicker pouvant envoyer des stickers privacy\_pam. ## Utiliser un pack de sticker -Dans le dossier `pack` de ce dépôt sont regroupés tout les packs de sticker créé par des IIEns. +Dans le dossier `pack` de ce dépôt sont regroupés tout les packs de sticker créé par des IIEns. Pour les utiliser, vous devez déjà avoir installé votre propre stickerpicker (étape précédente). Pour en ajouter un dans le stickerpicker, allez voir ce -[tutoriel](https://git.iiens.net/Tigriz/matrix-stickers/-/tree/master/packs). +[tutoriel](https://git.iiens.net/Tigriz/matrix-stickers/-/tree/master/packs). ## Créer des packs de stickers Avec le nouveau stickerpicker installé, il est possible de créer ses propres packs de stickers. -Un pack de stickers se résume à un fichier json possédant des informations précises sur les images téléversées. +Un pack de stickers se résume à un fichier json possédant des informations précises sur les images téléversées. - Note 1 : Il est conseillé de créer un compte secondaire sur matrix.org pour créer les packs de stickers. Si vous utilisez votre compte Arise, il est possible que vos packs ne soient plus disponibles. En effet Arise libère de la place aléatoirement quand c'est nécessaire. Pour se créer un compte sur matrix.org, rendez vous @@ -107,11 +107,11 @@ Un pack de stickers se résume à un fichier json possédant des informations pr et casse la transparence de vos images. Si vous souhaitez tout de même le faire sur perso.iiens.net, vous pouvez recompiler à la main le paquet, je vous laisse chercher comment faire. -Pour créer ce ficher json et téléverser ses images, il existe deux méthodes : +Pour créer ce ficher json et téléverser ses images, il existe deux méthodes : ### Méthode automatique (Recommandé) -**Via le script matrixpack.sh** -**Requis** : *ImageMagick* (en tant que root : `apt install imagemagick`/`pacman -S imagemagick`). +**Via le script matrixpack.sh** +**Requis** : *ImageMagick* (en tant que root : `apt install imagemagick`/`pacman -S imagemagick`). Ce script suppose que vous avez déjà créer un ou plusieurs dossiers regroupant les images que vous souhaitez utiliser en sticker. Le nom du dossier définira le nom du pack, et les images s'y trouvant deviendront les stickers du pack. 1. Cloner ce dépôt @@ -135,11 +135,11 @@ Le script crée un nouveau sous-dossier dans `directory` contenant trois fichier ```bash cp nomdupack.json ~/html/stickerpicker/web/packs ``` -**Précision** : si vous avez exécuté le script hors de votre perso, vous devez envoyer le ficher json par ssh. +**Précision** : si vous avez exécuté le script hors de votre perso, vous devez envoyer le ficher json par ssh. ```bash scp nomdupack.json nomArise@perso.iiens.net:~/html/stickerpicker/web/packs ``` -Cela va copier le fichier nomdupack.json dans le dossier `packs` se trouvant dans votre perso. +Cela va copier le fichier nomdupack.json dans le dossier `packs` se trouvant dans votre perso. 5. Mettre à jour le fichier `index.json` se trouvant dans `~/html/stickerpicker/web/packs`. **Facultatif :** @@ -154,11 +154,11 @@ scp matrix-stickers/packs/*/*.json nom0000@perso.iiens.net:html/stickerpicker/we ``` ### Méthode manuelle -1. Téléverser une image dans un salon non-chiffré +1. Téléverser une image dans un salon non-chiffré **Ne le faites pas sur le serveur Matrix d'Arise, les admins peuvent suppriment les images pour libérer de la place, mais ça n'a jamais été fait (source : Nitorac & Kubat)**. De manière générale pensez à compresser un peu vos images avant de les upload, les disques c'est pas gratuit. -2. Commencer votre fichier json de cette façon +2. Commencer votre fichier json de cette façon ```json { "title": "{% titre du pack %}", @@ -168,7 +168,7 @@ scp matrix-stickers/packs/*/*.json nom0000@perso.iiens.net:html/stickerpicker/we ] } ``` -3. Cliquer sur les ... du message, `Voir source`, copier le code correspondant à celui ci-dessous et le coller entre les crochets du fichier json +3. Cliquer sur les ... du message, `Voir source`, copier le code correspondant à celui ci-dessous et le coller entre les crochets du fichier json *Exemple* ```json { @@ -190,7 +190,21 @@ scp matrix-stickers/packs/*/*.json nom0000@perso.iiens.net:html/stickerpicker/we "url": "mxc://tedomum.net/LSJhWayzyrbIkntHxnThICKQ" } ``` - **Attention** : ajouter `"id" : "Ce que vous voulez"` après le champ `url`. Il est important de ne pas l'oublier sinon les stickers de s'enverront pas. -4. Répéter jusqu'à avoir tous les stickers voulu dans le pack -5. Ajouter le json à index.json + **Attention** : ajouter `"id" : "Ce que vous voulez"` après le champ `url`. Il est important de ne pas l'oublier sinon les stickers de s'enverront pas. +4. Répéter jusqu'à avoir tous les stickers voulu dans le pack +5. Ajouter le json à index.json + +## Utilisation de stpkg + +La commande `stpkg` a besoin des executables `egrep` (ou `grep` si indisponible), +`sponge` et `jq`. Il faut donc les installer ou les recompiler sur votre machine +(`apt install moreutils jq grep`). + +> Il faut avoir utiliser le script `install.sh` et bien mettre les variables + `STPKG_BASE` et `STPKG_INSTALL` dans votre bashrc pour que `stpkg` fonctionne. +Les commandes de `stpkg` : +- `stpkg update` +- `stpkg list` +- `stpkg get` +- `stpkg del` diff --git a/stpkg b/stpkg index b975ed0c67aca8538b091fb721a126d398d3d6d2..0f8d535a07aa96f552a8dc915af926d26ecc2256 100755 --- a/stpkg +++ b/stpkg @@ -43,6 +43,7 @@ EOF if [ "x$DISPLAY_DEPS_NOTES" = "xyes" ]; then cat << EOF Note: $0 requires 'jq' and 'egrep'. If 'egrep' is not found, 'grep' will be used. +Note: 'git' is obviously required, but if you are using this repo you should have clone it so it's ok. EOF fi @@ -67,6 +68,15 @@ else info "Use custom STPKG_INSTALL: $STPKG_INSTALL" fi +if [ "x$STPKG_BASE" = "x" ]; then + die "The STPKG_BASE env var is mendatory, it must point to the sticker repo." \ + "It should have been given by the install script" +fi + +__git=`which git` +[ $? -ne 0 ] && die "Failed to find the 'git' command, WTF?" +__sponge=`which sponge` +[ $? -ne 0 ] && die "Failed to find the 'sponge' command" __jq=`which jq` [ $? -ne 0 ] && die "Failed to find the 'jq' command" __grep=`which egrep` @@ -76,13 +86,26 @@ if [ $? -ne 0 ]; then warn "Cound not find 'grep', will use 'egrep 'instead" fi DISPLAY_DEPS_NOTES="no" +alias jq=$__jq +alias grep=$__grep +alias git=$__git +alias sponge=$__sponge ######################### # Cmd handler functions # ######################### __update() { - info "Updating packs" + info "Updating packs..." + info "... update the sticker repo" + local LOCATION_OPT="--git-dir=$STPKG_BASE/.git --work-tree=$STPKG_BASE/" + git $LOCATION_OPT fetch || die "Failed to fetch from sticker repo" + git $LOCATION_OPT rebase || die "Failed to rebase... what did you do to your master branch?" + info "... update the sticker picker repo" + local LOCATION_OPT="--git-dir=$STPKG_INSTALL/.git --work-tree=$STPKG_INSTALL/" + git $LOCATION_OPT fetch || die "Failed to fetch from stickerpicker repo" + git $LOCATION_OPT rebase || die "Failed to rebase... what did you do to the master branch of the sticker picker?" + info "Update finished!" } __list() { @@ -98,11 +121,16 @@ __list() { __get() { [ "x$1" = "x" ] && die "You must specify a pack for the 'get' command" info "Enable pack '$1'" + jq ".packs += [\"$1.json\"]" \ + < $STPKG_INSTALL/web/packs/index.json | sponge $STPKG_INSTALL/web/packs/index.json } __del() { [ "x$1" = "x" ] && die "You must specify a pack 'del' command" info "Disable pack '$1'" + local INDEX=0 + jq "{ \"homeserver_url\": .homeserver_url, \"packs\": .packs | map(select(. != \"$1.json\")) }" \ + < $STPKG_INSTALL/web/packs/index.json | sponge $STPKG_INSTALL/web/packs/index.json } ######################