Skip to content

Commit

Permalink
Article : introducing le CLI Geotribu (#947)
Browse files Browse the repository at this point in the history
  • Loading branch information
Guts authored Aug 26, 2023
2 parents dbd739d + 3d43029 commit 7cdd258
Show file tree
Hide file tree
Showing 9 changed files with 271 additions and 4 deletions.
1 change: 1 addition & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ jobs:

- name: Build static website
run: |
geotribu --help > content/toc_nav_ignored/snippets/code/geotribu_cli_help.txt
python scripts/050_mkdocs_populate_latest.py -c mkdocs.yml
python scripts/100_mkdocs_config_merger.py -c mkdocs.yml
mkdocs build --clean --config-file mkdocs.yml --verbose --strict
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ tags:

Il y a quelques mois nous vous avions annoncé la disponibilité de l'ouvrage [OpenLayers 2.10 Beginner's Guide](https://www.packtpub.com/openlayers-2-1-javascript-web-mapping-library-beginners-guide/book). Ecrit par Eric Hazzard et édité par pakt publishing, ce livre couvre sur près de 300 pages l'ensemble des concepts de la fameuse librairie cartographique [Openlayers](https://openlayers.org/).

![OpenLayers 2.10 Beginners](https://cdn.geotribu.fr/img/articles-blog-rdp/articles/2011/4125OS_OpenLayers%202.10%20Beginner's%20Guidecov_big.jpg "OpenLayers 2.10 Beginners"){: .img-center loading=lazy }
![OpenLayers 2.10 Beginner's guide](https://cdn.geotribu.fr/img/articles-blog-rdp/articles/2011/OpenLayers_2-10_Beginner-s-Guide_cov.jpg){: .img-center loading=lazy }

Découpé en [11 chapitres](https://www.packtpub.com/toc/openlayers-210-beginners-guide-table-contents), vous apprendrez tout d'abord à construire votre première carte. Ensuite les concepts de Map, de Layers ou encore de Controls sont approfondis. Puis l'accent est mis sur la personnalisation des données et de la carte. Enfin, l'auteur conclut en présentant un exemple d'application utilisant l'API Flickr.

Expand Down
210 changes: 210 additions & 0 deletions content/articles/2023/2023-08-25_geotribu-cli-en-ligne-de-commande.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
---
title: Geotribu dans le terminal
subtitle: geotribuGPT
authors:
- Julien Moura
categories:
- article
- meta
date: "2023-08-25 10:20"
description: "Consultez Geotribu en ligne de commande : rechercher et afficher nos contenus directement dans votre terminal."
icon: octicons/terminal-24
image:
license: beerware
robots: index, follow
tags:
- cli
- Geotribu
- Python
---

# Le CLI Geotribu : cherchez dans nos contenus et images en ligne de commande

:calendar: Date de publication initiale : 25 août 2023

Prérequis :

- Python 3.9+
- un terminal gérant les hyperliens : Bash, PowerShell 5+, etc.
- une appétence pour la ligne de commande

## Introduction

![logo Geotribu CLI](https://cdn.geotribu.fr/img/internal/charte/geotribu_cli_logo.webp){: .img-rdp-news-thumb }

Que ce soit pour concevoir un (éphémère) [scan Isogeo hors-ligne](https://help.isogeo.com/scan/isogeo-scan-offline/), en tant qu'indépendant (notamment pour Tactis et des traitements liés à GraceTHD) et ces derniers mois pour la Géoplateforme de l'IGN ou [QDT](https://guts.github.io/qgis-deployment-cli/) en tant qu'Oslandien, j'ai eu l'occasion de développer pas mal d'outils en ligne de commande ([CLI](https://fr.wikipedia.org/wiki/Interface_en_ligne_de_commande) pour les intimes).

Alors pourquoi pas pour Geotribu ? Comme ça, je peux expérimenter sans contrainte, proposer un nouveau moyen de consulter les contenus et surtout automatiser certaines tâches plus ou moins récurrentes.

Petite présentation pour les lecteur/ices qui considèrent qu'un terminal est une interface agréable ou pour celles/eux qui aimeraient se mettre à la ligne de commande pour briller en société de géogeeks !

<!-- markdownlint-disable MD040 -->
<!-- termynal -->

```
$ pip install geotribu
---> 100%
Bienvenue dans le GeoTipi !
Pour démarrer, taper : 'geotribu --help' ou 'geotribu rss'.
```

<!-- markdownlint-enable MD040 -->

[Commenter cet article :fontawesome-solid-comments:](#__comments){: .md-button }
{: align=middle }

----

## Prérequis et installation

Le plus simple est d'utiliser le gestionnaire de paquets Python (`pip`) depuis un terminal, il suffit de lancer la commande adaptée à votre système.

<!-- markdownlint-disable MD046 -->
=== ":fontawesome-brands-linux: Linux et assimilés"

Exemple sur Ubuntu LTS (22.04 à date) :

```sh
python3 -m pip install --upgrade geotribu
```

=== ":window: Windows"

Dans une fenêtre PowerShell :

```powershell
py -3 -m pip install --upgrade geotribu
```

Si un message d'avertissement comme celui-ci s'affiche :

> WARNING: The scripts geotribu.exe are installed in 'C:\Users\username\AppData\Roaming\Python\Python310\Scripts' which is not on PATH.
> Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.

Il s'agit d'ajouter le chemin vers le dossier des scripts Python à la variable `PATH`` qui liste les dossiers contenant des exécutables. Cela se fait toujours avec PowerShell (adapter le chemin en fonction de la version de votre installation Python) :

```powershell
$Env:PATH += ";$Env:APPDATA\Python\Python310\Scripts"
```

Puis allez lire [cet article](../2020/2020-06-19_setup_python.md#ajouter-python-au-path) :wink: !
<!-- markdownlint-enable MD046 -->

[Documentation d'installation détaillée :material-book-plus:](https://cli.geotribu.fr/usage/installation.html){: .md-button }
{: align=middle }

### Tester l'installation

![logo console terminal](https://cdn.geotribu.fr/img/logos-icones/divers/ligne_commande.png "logo console terminal"){: .img-rdp-news-thumb }

Comme pour tout autre outil, pour vérifier que l'installation s'est déroulée correctement, il est de bon ton d'exécuter les commandes de base : `--version` et `--help` (sorties non contractuelles :wink:) :

Par exemple, la commande :

```sh
geotribu --help
```

Donne quelque chose comme :

```sh
{% include "code/geotribu_cli_help.txt" %}
```

La plupart des options sont configurables en variable d'environnement :

[Consulter les options de configuration :material-book-cog:](https://cli.geotribu.fr/usage/configuration.html){: .md-button }
{: align=middle }

----

## Utilisation

Cette trousse à outils est destinée à évoluer au gré des besoins et surtout de mon temps disponible ou de celui que des contributeur/ices voudront bien y investir. Le champ fonctionnel n'est donc pas figé et c'est pour cela que la documentation est configurée pour être générée à la volée à partir du code et des commandes/sous-commandes disponibles.
Inutile donc de dupliquer ici avec une obsolescence programmée ce qui est automatiquement à jour ailleurs.

[Voir les exemples :material-book-cog:](https://cli.geotribu.fr/usage/examples.html){: .md-button }
{: align=middle }

Dans les grandes lignes :

- [x] lister les derniers contenus publiés (à partir du flux RSS) :

```sh
geotribu rss
# en spécifiant le nombre et le type de contenus (`article` ou `rdp`)
geotribu rss -f rdp -n 10
```

- [x] chercher dans les articles et revues de presse

```sh
geotribu sc orfeo*
# en spécifiant la présence d’un mot dans le titre et lister les 5 premiers résultats
geotribu sc -n 5 "+title:openstreetmap postgis"
```

- [x] ouvrir un contenu (soit dans le terminal, soit dans l'application par défaut)
Après chaque commande de recherche, il est proposé d'ouvrir un contenu parmi les résultats. Mais il est également possible d'ouvrir un résultat depuis une commande passée.
```sh
geotribu open 0
```
- [x] chercher une image parmi celles hébergées sur Geotribu
```sh
geotribu si postgis
# uniquement les icônes ou logos
geotribu si postgis -f logo
```
- [x] optimiser une ou plusieurs images pour la publication (dimensions, format, nom...)[^1]
```sh
# depuis un chemin local ou une URL distante
geotribu img optimize {URL_OU_CHEMIN_IMAGE}
# tout un dossier
geotribu images optimize {CHEMIN_VERS_DOSSIER_LOCAL_AVEC_IMAGES_A_OPTIMISER}
```
- [x] lister les derniers commentaires
```sh
geotribu comments latest
```
- [x] poster le dernier commentaire publié sur Mastodon (instance Mapstodon)[^1]
```sh
geotribu comments broadcast -t mastodon
```
Sinon consulter la vidéo de présentation :
<iframe width="100%" height="415" src="https://www.youtube-nocookie.com/embed/eWNBpUVYakY?si=ridPSohVCs5232Gd" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
## Un outil déjà utilisé et ouvert
AU départ un _side-project_ perso, l'outil est finalement déjà en "production", utilisé à plusieurs étapes du cycle de vie de Geotribu :

- comme dépendance du site, pour la vérification de la structure des contenus
- bientôt pour amorcer la structure d'un nouveau contenu
- pour [republier les commentaires sur Mastodon](https://mapstodon.space/tags/Geotribot)
C'est évidemment open source et libre (licence MIT) donc si cela vous intéresse, si vous rencontrez un bug ou si vous souhaitez ajouter une fonctionnalité, n'hésitez pas à faire un tour sur le GitHub :
[Consulter le dépôt du code :fontawesome-regular-file-code:](https://github.com/geotribu/cli/){: .md-button }
{: align=middle }
----
## Auteur {: data-search-exclude }
--8<-- "content/team/jmou.md"
{% include "licenses/beerware.md" %}
<!-- Notes de bas de page -->
[^1]: commandes nécessitant un jeton d'authentification à une API
16 changes: 16 additions & 0 deletions content/theme/home.html
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,22 @@ <h5>Newsletter</h5>
</a>


<a class="card-wrapper" href="https://cli.geotribu.fr/" target="_blank">
<div class="card">
<div class="logo">
<span class="twemoji">
{% include ".icons/fontawesome/solid/terminal.svg" %}
</span>
</div>
<div class="card-content">
<h5>CLI</h5>
<p>
Rechercher et consulter les contenus directement depuis votre terminal !
</p>
</div>
</div>
</a>

<a class="card-wrapper" href="https://twitter.com/geotribu/" target="_blank">
<div class="card">
<div class="logo">
Expand Down
37 changes: 37 additions & 0 deletions content/toc_nav_ignored/snippets/code/geotribu_cli_help.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
Usage: geotribu [-v] [-h] [--version]
{read-latest,récents,latest,rl,rss,search-content,contenus,sc,search-image,si,ouvrir,lire,open,or,read,upgrade,auto-update,maj,update,creer,new,nouveau,comments,commentaires,coms,images,img}
...

Geotribu Toolbelt 0.26.0 - Une ligne de commande pour Geotribu qui offre des outils pour rechercher et consulter les contenus et images, et faciliter les tâches récurrentes des contributeur/ices.

Options:
-v, --verbose Niveau de verbosité : None = WARNING, -v = INFO, -vv =
DEBUG. Réglable avec la variable d'environnement
GEOTRIBU_LOGS_LEVEL.
-h, --help Affiche l'aide et s'arrête là.
--version Affiche la version du CLI et s'arrête là.

Sous-Commandes:
{read-latest,récents,latest,rl,rss,search-content,contenus,sc,search-image,si,ouvrir,lire,open,or,read,upgrade,auto-update,maj,update,creer,new,nouveau,comments,commentaires,coms,images,img}
read-latest (récents, latest, rl, rss)
Consulter les derniers contenus du site
search-content (contenus, sc)
Rechercher dans les contenus du site
search-image (si) Rechercher dans les images de Geotribu
ouvrir (lire, open, or, read)
Ouvre un résultat d'une commande précédente dans le
terminal ou l'application correspondant au type de
contenu.
upgrade (auto-update, maj, update)
Mettre à jour Geotribu CLI.
creer (new, nouveau)
Créer un nouveau contenu.
comments (commentaires, coms)
Consulter et gérer les commentaires.
images (img) Chercher, gérer et optimiser les images.

Geotribu en ligne de commande pour rechercher dans les contenus et les images, consulter les derniers contenus sans quitter son terminal.
Encore meilleur avec les terminaux gérant les hyperliens : Bash, PowerShell 5+, etc.

Développé par Julien Moura (Geotribu)
Documentation : https://cli.geotribu.fr/
1 change: 1 addition & 0 deletions mkdocs-free.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ plugins:
- tags:
enabled: !ENV [MKDOCS_ENABLE_PLUGIN_TAGS, true]
tags_file: tags.md
- termynal

# Theme
theme:
Expand Down
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ plugins:
tags_file: tags.md
tags_compare: !!python/name:material.plugins.tags.casefold
tags_pages_compare: !!python/name:material.plugins.tags.page_url
- termynal
- privacy:
enabled: !ENV [MKDOCS_ENABLE_PLUGIN_PRIVACY, true]
assets_fetch_dir:
Expand Down
2 changes: 1 addition & 1 deletion requirements-insiders.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Insiders
# --------

git+https://${GH_TOKEN_MATERIAL_INSIDERS}@github.com/squidfunk/[email protected].1#egg=mkdocs-material
git+https://${GH_TOKEN_MATERIAL_INSIDERS}@github.com/squidfunk/[email protected].3#egg=mkdocs-material
# git+https://${GH_TOKEN_MATERIAL_INSIDERS}@github.com/squidfunk/mkdocs-material-insiders.git

mkdocs-git-committers-plugin-2>=1,<2
Expand Down
5 changes: 3 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ wheel

# Development
# -----------------------
geotribu>=0.8,<1
pre-commit>=2.18,<3.4
geotribu>=0.25,<1
pre-commit>=3,<3.4

# Project requirements
# -----------------------
Expand All @@ -22,6 +22,7 @@ mkdocs-macros-plugin>=0.5,<1.1
mkdocs-minify-plugin<0.8
mkdocs-redirects<1.3
mkdocs-rss-plugin>=1.4,<1.9
termynal>=0.10,<1

# social plugin requirements
CairoSVG>=2.5,<3
Expand Down

0 comments on commit 7cdd258

Please sign in to comment.