Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ajout de nouvelles actions qui clarifie les opérations pour modifier ou ajouter un fichier #110

Merged
merged 36 commits into from
Nov 13, 2023

Conversation

Ynote
Copy link
Contributor

@Ynote Ynote commented Nov 9, 2023

Lié à #109

Description

Actuellement en prod, la modification ou la création d'un fichier se fait avec une seule méthode DatabaseAPI.writeFile qui fait plusieurs opérations en même temps :

  • supprimer un fichier si celui-ci a changé de nom,
  • écrire un fichier sur le file system et l'ajouter à l'arbre git,
  • commit le changement,
  • push sur le dépôt distant.

Comme pour #109, cette manière de faire crée des patterns bizarres et peu flexibles dans le code.

J'ai choisi de :

  • retirer les opérations commit et push de la méthode DatabaseAPI.writeFile,
  • retirer la gestion du changement de nom de fichier dans la méthode DatabaseAPI.writeFile,
  • créer des actions pour écrire un fichier dans actions/file.js
  • rassembler les actions qui concernaient les pages dans actions/page.js et celles des articles dans actions/article.js,
  • d'utiliser ces actions dans les fichiers où on utilisait directement DatabaseAPI.writeFile.

Le fait d'ajouter ces actions clarifie mieux comment se passe les opérations mais ajoute un peu de redondance. J'ai l'impression que c'est ok d'avoir quelques répétitions car elles permettent de plus facilement lire le code.

@Ynote Ynote self-assigned this Nov 9, 2023
@Ynote
Copy link
Contributor Author

Ynote commented Nov 9, 2023

@DavidBruant J'ai testé ces différents scénarii à la mano en local et ils fonctionnent :

  • Suppression d'une page (au cas où j'avais cassé des trucs en déplaçant le code)
  • Suppression d'un article
  • Ajout d'une page
  • Ajout d'un article
  • Changement de titre d'une page
  • Changement de titre d'un article
  • Ajout d'une image dans une page
  • Ajout d'une image dans un article
  • Changement de l'ordre des pages

Je fais les modifications sur la PR #109 et je te laisse me faire une relecture 💜

@Ynote
Copy link
Contributor Author

Ynote commented Nov 9, 2023

@DavidBruant La PR a des conflits car j'ai fait les changements sur #109. Je vais reprendre dessus dans l'aprem. Si tu n'as pas commencé de review, je te propose de te reping quand cette PR est plus clean :)

Base automatically changed from new-delete-action to principale November 9, 2023 15:12
@Ynote
Copy link
Contributor Author

Ynote commented Nov 9, 2023

@DavidBruant C'est ok de mon côté, j'ai fixé les conflits et fait quelques mini-changements. J'ai retesté en local, les cas que j'ai listés ici fonctionnent.

Je veux bien une relecture dessus quand tu as du temps :)

Copy link
Contributor

@DavidBruant DavidBruant left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Modulo l'histoire du double commit au rename, j'adore cette PR !!

store.state.currentRepository.owner,
store.state.currentRepository.name,
'Changement index',
)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'adore ! Et ça marche ? Genre, ça créé un commit unique plus propre ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ouiiiiii ! Par exemple ici

assets/scripts/actions/page.js Outdated Show resolved Hide resolved
assets/scripts/actions/article.js Outdated Show resolved Hide resolved
const { owner, name } = state.currentRepository
export const writeFileAndCommit = (fileName, content, commitMessage = '') => {
if (commitMessage === '') {
commitMessage = `Modification du fichier ${fileName}`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Si y'a cette ligne, ça ne sert à rien de mettre la valeur par défaut dans la signature de la fonction

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ou ça pourrait être direct la valeur par défaut

Copy link
Contributor Author

@Ynote Ynote Nov 10, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ne mets pas la valeur par défaut directement parce que j'ai envie qu'on ait le nom de fichier dans le commit par défaut.

Par contre, quand je retire la valeur par défaut, et en changeant la condition avec

if (typeof commitMessage !== 'string' || commitMessage === '') {

Ça me renvoie cette erreur parce que databaseAPI.commit prend un argument message de type string :

Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
  Type 'undefined' is not assignable to type 'string'.

J'ai essayé de changer la condition de plein de manière différente, l'erreur est toujours lancée :/

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ça m'embête que le check continue de lancer une erreur, j'ai mis un @ts-ignore et mis à jour la méthode avec la condition if (typeof commitMessage !== 'string' || commitMessage === '').

@@ -118,13 +119,10 @@
for (const img of image) {
imageMd = 'Mise en ligne en cours…'
const buffer = new Uint8Array(await img.arrayBuffer())
await databaseAPI.writeFile(
currentRepository.owner,
currentRepository.name,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah ouais, c'est cool de ne plus avoir ces paramètres ici et de les avoir plutôt en interne dans l'action !

@Ynote Ynote merged commit 4eabd17 into principale Nov 13, 2023
@Ynote Ynote deleted the new-writefile-action branch November 13, 2023 12:51
@Ynote
Copy link
Contributor Author

Ynote commented Nov 13, 2023

C'est ok et testé en prod avec les cas listés ici.

Ynote added a commit that referenced this pull request Nov 13, 2023
…add-tests

* 'principale' of github.com:Scribouilli/scribouilli:
  Ajout de nouvelles actions qui clarifie les opérations pour modifier ou ajouter un fichier (#110)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants