💡 Vous pouvez vérifier votre version de bash avec
bash --version
- Votre version de bash est >= 4.0 : vous pouvez exécuter la commande suivante :
bash <(curl -fsSL --connect-timeout 10 https://raw.githubusercontent.com/nsainton/classcreator/main/classcreator.sh) NomClasse dossier_header dossier_sources
- Votre version de bash est < 4.0 : vous pouvez exécuter la commande suivante :
curl -fsSL --connect-timeout 10 https://raw.githubusercontent.com/nsainton/classcreator/main/classcreator.sh -o /tmp/classcreator.sh && sh /tmp/classcreator.sh NomClasse dossier_header dossier_sources
Ce script peut créer un fichier .cpp et un fichier .h pour une classe C++ avec le nom "NomClasse" (guillemets omis).
Cette classe contiendra :
- Un constructeur par défaut
NomClasse::NomClasse()
- Un constructeur de copie
NomClasse::NomClasse( const NomClasse & autre )
- Un opérateur d'assignation par copie
NomClasse & NomClasse::NomClasse( const NomClasse & autre )
- Un destructeur virtuel
NomClasse::~NomClasse()
Il est conçu pour être conforme à la forme canonique orthodoxe et est tel que le fichier produit par le script compilera immédiatement avec tous les avertissements du compilateur activés.
Bien qu'ils ne fassent absolument rien d'autre que d'écrire les fonctions qui sont appelées à l'objet ostream std::clog.
Ce script peut être exécuté de 3 manières distinctes :
- sh classcreator.sh NomClasse -> crée un fichier de classe Classname.cpp et Classname.h dans le répertoire courant
- sh classcreator.sh NomClasse dir -> crée un fichier dir/Classname.cpp et un fichier dir/Classname.h dans le répertoire spécifié
- sh classcreator.sh NomClasse dossier_header dossier_sources -> crée un fichier header_dir/classname.h et un fichier class_dir/classname.cpp dans les répertoires spécifiés et les fichiers sources
💡 Tout répertoire inexistant sera créé par le script
Exécutons la commande : sh classcreator.sh Test includes sources
dans un répertoire vide
Nous obtiendrons deux nouveaux fichiers : sources/Test.cpp et includes/Test.h
💡 Ces deux fichiers sont également disponibles dans le dossier "examples"
Voici à quoi ressemble le fichier Test.h :
#ifndef __TEST_H__
#define __TEST_H__
class Test{
public:
Test();
Test( const Test & );
Test& operator=( const Test & );
~Test();
};
#endif
Voici à quoi ressemble le fichier Test.cpp :
#include "Test.h"
Test::Test(){
}
Test::Test( const Test & autre ){
}
Test& Test::operator=( const Test & autre ){
return (*this);
}
Test::~Test(){
}
Le fichier source Test.cpp peut être compilé immédiatement sans émettre d'avertissement.
Lancer the script sans aucun argument
sh classcreator.sh
Il y a deux façons de contribuer à ce projet :
- En m'envoyant un message sur discord (pour les étudiants de 42) ou par mail
- Les pull requests sont pour le moment désactivées, mais vous pouvez toujours m'envoyer un patch par mail ou sur discord