writeme-project / writeme

Cross-platform README.md generator
GNU General Public License v3.0
14 stars 0 forks source link

merge e gestione conflitti #5

Closed ilcors-dev closed 1 year ago

ilcors-dev commented 1 year ago

in caso di più file di config presenti nelle directory eg. composer.json+package.json (laravel) fare merge delle informazioni trovate nei config, in caso di conflitto eg 'name' in entrambi i file mostrare in modo interattivo all'utente e dargli la scelta (mostrando i valori)

ilcors-dev commented 1 year ago

ho iniziato a dare una struttura alla parte del merging partendo nel creare una lib (nel senso di rust) che si occupi di leggere i file di config e di effettuare i vari parsing a seconda delle loro caratteristiche.

Perchè?

ad esempio ieri andando a fare la prima prova di merging mi sono accorto che i file Cargo.toml vengono parsati in macro categorie, ad esempio:

[package]
name = "writeme"
version = "0.1.0"
edition = "2021"
license = "MIT OR Apache-2.0"

viene parsato dalla libreria e trasformato in un oggetto JSON del tipo:

"package": {
  "name": "writeme",
  "version": "0.1.0",
  "edition": "2021",
  "license": "MIT OR Apache-2.0"
}

mentre ad esempio il package.json

{
  "name": "writeme",
  "version": "0.1.0",
  "description": "Auto-gen README.md files for your projects",
  "main": "src/main.rs",
}

rimane uguale. Per questo motivo credo sia utile avere delle classi wrapper Converter che vadano a implementare logiche custom per ogni file di config supportato da writeme.

Mi sembrava avesse senso usare il pattern Decorator, l'ho solo impostato per ora, secondo te ha senso @BabelDev0?

BabelDev0 commented 1 year ago

Si ci casca a pennello