PDA

Afficher la version complète : Créer votre arborescence de projet



Heero_Yuy
27/08/2009, 13h55
Salux à tous,

Ce n'est pas un script, mais comme ce n'est pas une question à propos de programmation, je mets mon programme C ici.

Tous les développeurs - à mon avis - sont confrontés à créer l'arborescence de leur projet. Trois solutions sont possibles.

1) Créer l'arborescence de chaque projet à la main, ce qui est fastidieux à terme.
2) Créer une arborescence type et la copier/coller en la renommant pour chaque projet - ça finit par être fastidieux également.
3) Créer une première arborescence, l'importer dans un dépôt Subversion, puis la checker out pour chaque nouveau projet. Encore faut-il avoir un dépôt subversion (local ou distant). J'aime bien cette dernière solution.

Mais une quatrième solution s'offre à vous, amis développeurs, le projet Project_Tree. S'utilisant en ligne de commande principalement - je ne vois pas pour l'instant l'intérêt d'une interface graphique - il crée à votre place, l'arborescence de votre projet, c'est-à-dire les différents répertoires de vos projets, et ce suivant le type de projet que vous développiez.

En effet, s'il s'agit d'une application avec interface graphique, d'une application en ligne de commande ou d'un site Web, les répertoires constituant votre projet ainsi que leur nombre n'est pas le même - je vous laisse consulter les sources qui vont suivre pour voir les répertoires que Project_Tree crée en fonction du type de projet.

Je ne dis pas que l'arborescence est idéale, mais c'est celle que j'utilise et qui, je trouve, correspond bien à la vision que je me fais de l'arborescence d'un projet de développement.

Bon, allez, trêve de blablatage, voici le code source. Constitué de 2 fichiers, il n'est pas difficile, mais n'est pas parfait, et perfectible.


Tout d'abord, le programme principal : pt.c
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>
/************************************************** *************************
* Copyright © 2009 by Heero Yuy *
* angel59@alionet.org *
* *
* This file is part of the Project_Tree project. *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
************************************************** *************************/

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include "pt.h"

#ifdef OPTIONS_LONGUES
#include <getopt.h>
#endif

int main ( int argc, char * argv[] )
{
int option;
char * prg_name;
int prj_type;
int i;
int svn_repo = 0;


prg_name = argv[0];

/*
* Lecture des options de la ligne de commande.
*/
opterr = 1;


while ( 1 ) {
#ifdef OPTIONS_LONGUES
int index = 0;
static struct option longopts[] = {
{ "type", 1, NULL, 't' }, /* Définit le type de projet */
{ "svn", 0, NULL, 0 }, /* Crée un dépôt SVN - à faire */
{ "help", 0, NULL, 'h' }, /* Affiche l'aide */
{ NULL, 0, NULL, 0 }
};
option = getopt_long( argc, argv, "t:h", longopts, & index );
#else
option = getopt( argc, argv, "t:h" );
#endif
if ( option == -1 )
break;

switch ( option ) {
case 't' :
if ( strcmp( optarg, "app" ) == 0 )
prj_type = APP;
if ( strcmp( optarg, "cmd" ) == 0 )
prj_type = CMD;
if ( strcmp( optarg, "web" ) == 0 )
prj_type = WEB;
break;

case 'h' :
pt_help( prg_name );
exit( 0 );

case 0 :
svn_repo = 1;
break;
default :
break;
}
}

/* Pas assez d'arguments */
if (( argc - optind < 1 )) {
pt_error( prg_name, TOO_FEW_ARGS );
exit ( 1 );
}

/* Trop d'arguments */
if (( argc - optind > 1 )) {
pt_error( prg_name, TOO_MANY_ARGS );
exit ( 1 );
}

pt_make_tree( prg_name, argc - optind, & ( argv[optind] ), prj_type, svn_repo );

return 0;
}

</div>

et maintenant, le fichier pt.h :

<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>
/************************************************** *************************
* Copyright © 2009 by Heero Yuy *
* angel59@alionet.org *
* *
* This file is part of the Project_Tree project. *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
************************************************** *************************/

#ifndef PT_H
#define PT_H
#endif

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <errno.h>


#define TOO_FEW_ARGS 300
#define TOO_MANY_ARGS 400
#define APP 0
#define CMD 1
#define WEB 2


/* -- Affiche l'aide -- */
void pt_help ( char * prog_name )
{
fprintf( stderr, "Syntaxe : %s [options] project_name\n", prog_name );
fprintf( stderr, "Options :\n" );
#ifdef OPTIONS_LONGUES
fprintf( stderr, " --help /");
#endif
fprintf( stderr, " -h\t\t\t\t\tCet écran d'aide \n" );
#ifdef OPTIONS_LONGUES
fprintf( stderr, " --type /" );
#endif
fprintf( stderr, " -t\t<project_type>\t\t\tType du projet \n" );
fprintf( stderr, "Type du projet : \n" );
fprintf( stderr, " console(defaut)\t\tApplication en ligne de commande\n" );
fprintf( stderr, " app\t\t\t\tApplication graphique\n" );
fprintf( stderr, " web\t\t\t\tSite Web\n" );
}

/* -- Affiche les messages d'erreur -- */
void pt_error( char * prog_name, int error_code )
{
switch ( error_code ) {
case TOO_FEW_ARGS :
fprintf( stderr, "%s : Too few arguments.\n", prog_name );
break;
case TOO_MANY_ARGS :
fprintf( stderr, "%s : Too many arguments.\n", prog_name );
break;
}
fprintf( stderr, "Type %s -h/--help for more information.\n", prog_name );
}

/* -- Crée le dépôt SVN associé au projet -- */
void pt_make_svn_repo()
{
fprintf( stdout, " > Création du dépôt SVN (local) associé au projet\n");
}

/* -- Crée l'arborescence -- */
void pt_make_tree ( char * prog_name, int argc, char * argv[], int proj_type, int svn_repo )
{
int i;
char * prj_name = NULL;
char * rep = NULL;
char * main_dir = NULL;
char * app_dirlist[] = { "/bin", "/doc", "/img", "/resource", "/src", NULL };
char * cmd_dirlist[] = { "/bin", "/doc", "/src", NULL };
char * web_dirlist[] = { "/img", "/styles", NULL };
char * filelist[] = { "/AUTHORS", "/CHANGELOG", "/COPYING", "/README", NULL };
FILE * fp;
char * file_name = NULL;

main_dir = malloc( strlen( "/media/Documents/Devel/tmpbe4svn/" ) + 1 );
strcpy( main_dir, "/media/Documents/Devel/tmpbe4svn/" );

prj_name = malloc( strlen( argv[0] ) + 1 );
strcpy( prj_name, argv[0] );

/* Mise en majuscule du nom du projet */
for ( i = 0; i < strlen( argv[0] ); i++ )
prj_name[i] = toupper( argv[0][i] );

fprintf( stdout, "\n\t\t\t====== Création de l'arborescence du projet %s ====== \n\n", prj_name );

fprintf( stdout, " > Création du répertoire principal \t" );
strcat( main_dir, argv[0] );
fprintf( stdout, "%s\n", main_dir );
if ( mkdir( main_dir, 0777 ) ) {
perror( main_dir );
exit ( 1 );
}

switch ( proj_type ) {
case APP :
/* On crée l'arborescence d'un projet d'application avec interface graphique :
* [projet]
* |________ [bin]
* |________ [doc]
* |________ [img]
* |________ [resource]
* |________ [src]
* |________ AUTHORS
* |________ CHANGELOG
* |________ COPYING
* |________ README
*/

/* Création des répertoires [bin], [doc], [img], [resource], [src] */
i = 0;
while ( app_dirlist[i] != NULL ) {
rep = malloc( strlen( main_dir ) + strlen ( app_dirlist[i] ));
strcpy( rep, main_dir );
fprintf( stdout, " > Création du répertoire \t\t" );
strcat( rep, app_dirlist[i] );
fprintf( stdout, "%s\n", rep );
if ( mkdir( rep, 0777 ) != 0 ) {
perror( rep );
}
if ( rep != NULL )
free( rep );
rep = NULL;
i++;
}

/* Création des fichiers AUTHORS, CHANGELOG, COPYING, README */
i = 0;

while ( filelist[i] != NULL ) {
file_name = malloc( strlen( main_dir ) + strlen( filelist[i] ));
strcpy( file_name, main_dir );
strcat( file_name, filelist[i] );
fprintf( stdout, " > Création du fichier \t\t%s\n", file_name );
if (( fp = fopen( file_name, "w" ) ) == NULL ) {
perror( file_name );
}
if ( file_name != NULL )
free( file_name );
file_name = NULL;
i++;
}
break;

case CMD :
/* On crée l'arborescence d'un projet d'application en ligne de commande :
* [projet]
* |________ [bin]
* |________ [doc]
* |________ [src]
* |________ AUTHORS
* |________ CHANGELOG
* |________ COPYING
* |________ README
*/

/* Création des répertoires [bin], [doc], [src] */
i = 0;
while ( cmd_dirlist[i] != NULL ) {
rep = malloc( strlen( main_dir ) + strlen ( cmd_dirlist[i] ));
strcpy( rep, main_dir );
fprintf( stdout, " > Création du répertoire \t\t" );
strcat( rep, cmd_dirlist[i] );
fprintf( stdout, "%s\n", rep );
if ( mkdir( rep, 0777 ) != 0 ) {
perror( rep );
}
if ( rep != NULL )
free( rep );
rep = NULL;
i++;
}

/* Création des fichiers AUTHORS, CHANGELOG, COPYING, README */
i = 0;

while ( filelist[i] != NULL ) {
file_name = malloc( strlen( main_dir ) + strlen( filelist[i] ));
strcpy( file_name, main_dir );
strcat( file_name, filelist[i] );
fprintf( stdout, " > Création du fichier \t\t%s\n", file_name );
if (( fp = fopen( file_name, "w" ) ) == NULL ) {
perror( file_name );
} else {
fprintf( stdout, "\t\t\t\tOK\n" );
}
if ( file_name != NULL )
free( file_name );
file_name = NULL;
i++;
}
break;

case WEB :
/* On crée l'arborescence d'un projet Web :
* [projet]
* |________ [img]
* |________ [styles]
*/

/* Création des répertoires [img], [styles] */
i = 0;
while ( web_dirlist[i] != NULL ) {
rep = malloc( strlen( main_dir ) + strlen ( web_dirlist[i] ));
strcpy( rep, main_dir );
fprintf( stdout, " > Création du répertoire \t\t" );
strcat( rep, web_dirlist[i] );
fprintf( stdout, "%s\n", rep );
if ( mkdir( rep, 0777 ) != 0 ) {
perror( rep );
}
if ( rep != NULL )
free( rep );
rep = NULL;
i++;
}
break;
}

if ( svn_repo ) {
pt_make_svn_repo();
}
}

</div>

Ensuite, pour le compiler, ouvrez un terminal et saisissez la commande :


cc -D_GNU_SOURCE -DOPTIONS_LONGUES pt.c -o pt

en étant bien entendu dans le répertoire contenant les fichiers pt.c et pt.h. Un exécutable va être créé. Voilà comment l'utiliser.

Pour une application avec interface graphique :

./pt -t "app" <nom_projet>

Pour une application qui ne s'utilisera qu'en ligne de commande :

./pt -t "cmd" <nom_projet>

Pour un site web :

./pt -t "web" <nom_projet>

en remplaçant à chaque fois <nom_projet> par le nom de votre projet.

Ah oui, j'allais oublier : dans le fichier pt.h, remplacer dans les lignes :

main_dir = malloc( strlen( "/media/Documents/Devel/tmpbe4svn/" ) + 1 );
strcpy( main_dir, "/media/Documents/Devel/tmpbe4svn/" );

/media/Documents/Devel/tmpbe4svn/ par l'emplacement où doivent se trouver l'ensemble de vos projets de développement. Chez moi, j'ai une partition montée en /media/Documents, contenant un répertoire Devel pour ce qui concerne mes projets, qui contient lui-même un répertoire tmpbe4svn qui est un répertoire temporaire avant l'importation des projets dans Subversion.
Je vous le disais, il est perfectible, et ces 2 lignes devraient être remplacées à terme par la lecture d'un fichier pt.conf contenant les chemins vers le répertoire de travail et le dépôt SVN.

D'ailleurs, si vous regarder l'aide :

./pt -h

vous verrez qu'il y a une autre option : --svn qui permet de créer un dépôt Subversion associé au projet. Pour le moment, si vous utilisez cette option, seul un message s'affichera. La fonction associée n'est pas encore implémentée, mais elle le sera ultérieurement.

Je n'ai pas obtenu de bugs, mais si vous en rencontrez, n'hésitez pas à me le signaler, en précisant ce que vous avez fait pour obtenir cette erreur, que je puisse la reproduire chez moi.

Si vous voyez des améliorations à apporter, merci de me les dire également.


Ah, et chose importante, n'oubliez pas d'installer gcc pour compiler, ainsi que les sources du kernel. Make ne servira à rien dans ce cas, puisqu'il n'y a pas de Makefile (peut-être que j'en ferais un également).

Je mettrais une archive en ligne dès que je l'aurais créé.

Burn2
27/08/2009, 15h09
ça parrait sympa.
Personnellement c'est mon edi qui crée l'agencement du projet qui va bien, donc rien de gênant pour moi... ;)

Pour ceux qui font tout à la mano par contre ça peut être utile donc merci d'avoir posté ça. :)

Heero_Yuy
27/08/2009, 15h41
Mais de rien.

Et je fais parti de ceux qui n'utilisent pas d'EDI, donc tout à la mano :)

Heero_Yuy
23/09/2009, 09h46
Salux,

Bon, petit message pour dire que je rencontre quelques difficultés à créer le dépôt SVN (local dans un premier temps), mais je continue le projet - dans la mesure du possible avec le temps qui m'est accordé.

Pour le moment, je n'ai pas encore créé le fichier de conf pour définir les chemins principaux vers les projets et vers les dépôts SVN, mais je pense que je ne vais pas tarder à l'implémenter sachant que ce n'est pas difficile à réaliser ;)

Plus d'infos lorsque j'aurais avancer :)

salv-ice
28/09/2009, 18h57
[mode nostalgie]
Oh, du code C :P
Ca fait longtemps que je n'en ai pas eu sous les yeux... que de souvenirs de nuits passées aux examens de C :lol:
[/mode nostalgie]

Très pratique ce petit soft ! Ce qui serait super serait de pouvoir personnaliser les arborescences créées via le fichier de conf, car chacun à sa manière d'organiser ses projets ;)

Heero_Yuy
30/09/2009, 19h17
Merci du conseil salv-ice. Je jetterais un oeil sur sa faisabilité ;)



Perso, ça faisait longtemps que je n'avais pas codé en C, et j'avais envie de me faire un petit truc en C justement pour pas trop perdre la main ;)

Heero_Yuy
21/12/2009, 22h02
Ce petit programme est en cours de réécriture, en C++ / Qt.

Pourquoi ce changement ? Suite à la demande de Salv-ice, j'ai regardé un petit peu comment faire un fichier de conf pour personnaliser ses répertoires. Le plus simple était d'utiliser XML. Et Qt dispose de tout ce qu'il faut pour lire des fichiers XML sans trop de difficultés à coder le programme.

Autre atout du couple C++ / Qt, c'est que s'il me vient l'idée de développer une interface graphique pour ce programme, ce sera plus facile ;)

Heero_Yuy
04/01/2010, 22h51
Bon, j'ai profité de ma semaine de vacances pour revoir le code de ce programme et le migrer en C++ / Qt. Le code est perfectible (ça j'en suis sûr), mais le programme fonctionne nickel, reste encore à gérer Subversion et les licences. Pour ces dernières, avec le fichier XML, ça ne devrait pas poser de problème.

Et oui, un fichier de conf en XML a été créé. Un parseur XML a été développé en Qt pour récupérer les infos utiles (j'ai légèrement galéré sur ce point, mais à force de lire le code source de l'exemple du bouquin sur Qt4, je pense avoir compris le fonctionnement de ce parseur).

Bref, je posterais un tar.gz contenant tout le code source, plus tard, dès que j'aurais gérer les licences. La gestion du SVN n'est pas prioritaire, surtout que je ne sais pas encore comment faire (utiliser un processus enfant qui lance la commande svn import ou alors carrément utiliser la bibliothèque de dév de SVN ? ).

Pour en revenir sur les licences pour des projets de développement, j'aimerais votre avis. Il y en a tellement que je ne sais pas trop lesquelles mettre en priorité. Une chose est sûre, la GPL et la LGPL seront obligatoirement de la partie. Maintenant, concernant les licences BSD, Apache, Cecill ou je ne sais quelles autres licences, je ne sais pas si je dois les mettre ou pas (bien que la licence Apache pour un développement Web serait utile).

Enfin bref, quelle licence aimeriez-vous voir apparaître ? Sachant que finalement, le fichier de conf pourra être modifier à la main pour ajouter d'autres licences ultérieurement :)

Ah, j'allais oublier. Avec ce nouveau fichier de conf au format XML, il sera possible de le modifier pour que le programme gère d'autres types de projet que les projets de développement, par exemple, si vous faites de la retouche d'images, de la 3D, et que pour ces types de projet, vous utilisez une arborescence spécifique, il suffira soit de modifier le fichier XML existant, soit d'insérer les nouveaux types et les nouveaux répertoires nécessaires pour votre projet, car plus rien n'est codé en dur :)

C'est une nouveauté forte intéressante parce qu'au final, on peut personnaliser ce programme pour qu'il corresponde plus à nos différents projets.

oh!rocks
04/01/2010, 22h55
Ça va pas tarder à m'intéresser cette histoire...

Je te ferais signe à l'occasion. ;)


à plus,

oh!rocks

Heero_Yuy
05/01/2010, 22h08
Dès que j'ai fini de gérer les licences, je mettrais un paquet tar.gz sur le forum. J'expliquerais également la méthode pour le compiler.

Comme je suis sur une version 64 bits (et Qt 4.6.0), le fichier Makefile généré fait appel à GCC en 64 bits. Donc, si j'arrive à le compiler sur une machine 32 bits, je le ferais, sinon, je donnerais la méthode (parce qu'il faut modifier le fichier .pro et un peu le Makfile - mais rien de bien méchant, mais c'est nécessaire).

Burn2
06/01/2010, 10h10
Perso j'utilise la GPLV3.

Heero_Yuy
06/01/2010, 11h47
Pour moi, c'est plus la GPL, mais mon petit prog permettra de choisir la licence du projet, et de télécharger (faut que je trouve la méthode pour ça) le texte de la licence sur le site officiel ;)

Burn2
06/01/2010, 13h21
Ben moi aussi c'est la GPL mais je précise bien la V3 car c'est elle qui corrige tous les problèmes de droits ambigus. :)

Heero_Yuy
06/01/2010, 15h29
Sorry, j'avais lu LGPL v3 :D

Je suis vraiment décalé aujourd'hui :lol:

Burn2
06/01/2010, 23h05
J'avais mis LGPLV3 mais le premier "L" dans le sens la Licence :D DOnc c'était bien la même licence :D

Heero_Yuy
06/01/2010, 23h30
Si tu m'induis en erreur, comment veux-tu que je m'y retrouve :lol: :lol:

Par contre, j'ai trouvé une solution pour télécharger la licence GPL (ou la LGPL) avec le protocole HTTP en Qt, et je voulais le mettre en marque page, mais mon FF est tout cassé :cray2:

Bon, demain, je retrouverais la solution et je l'imprimerais ;)

Heero_Yuy
11/01/2010, 11h33
Allez, en attendant, je vous poste le fichier de conf :) - pour que vous puissiez voir à quoi cela ressemble :


<?xml version="1.0"?>
<ProjectTree>
<maindir>/media/Documents/Devel/tmpbe4svn/</maindir>
<svn>
<local>/media/svn-athena/</local>
<distant />
</svn>
<license name="gpl">
<url>http://www.gnu.org/</url>
</license>
<prj type="app">
<dir>bin</dir>
<dir>doc</dir>
<dir>img</dir>
<dir>resource</dir>
<dir>src</dir>
</prj>
<prj type="cmd">
<dir>bin</dir>
<dir>doc</dir>
<dir>src</dir>
</prj>
<prj type="web">
<dir>img</dir>
<dir>include</dir>
<dir>styles</dir>
</prj>
</ProjectTree>

Les sections SVN et license ne sont pas encore gérées dans le code de l'appli. C'est ce qu'il me reste à faire.

phoenix
11/01/2010, 20h14
C'est bien intéressant ça, ça pourrai p'têt m'être utile aussi :)

Heero_Yuy
11/01/2010, 21h27
Si justement vous avez des idées, faites moi signe.

Pour le moment, sur ma machine (openSUSE 64bits), il fonctionne plutôt bien, je n'ai pas rencontré de bugs - mais dès que je l'aurais mis en ligne, si des bêta-testeurs pouvaient me faire un retour d'expérience, ce serait super ;)

Heero_Yuy
27/01/2010, 17h58
Petit post pour parler un peu de l'avancement du projet.

Je bosse toujours sur cett histoire de licence à télécharger. Même si je n'en suis pas encore au téléchargement du fichier gpl.txt par exemple, j'entrevois mieux comment faire pour configurer plusieurs licences dans le fichier de conf, en définir une par défaut.

Mais le code est plus ardu que je ne le pensais. Faut que je revois ça à tête reposée - j'ai repris le projet un peu hier soir, mais je remarque qu'après une journée de travail, mon cerveau n'est pas au plus haut de ses capacités :P

Peut-être m'y remettrais-je ce soir, peut-être plutôt demain dans la journée, ou alors ce week-end.

Heero_Yuy
15/02/2010, 23h29
Un peu de nouvelles.

J'avais remarqué que la lecture du fichier de conf de mon appli ne fonctionnait pas comme je le voulais. Je l'ai donc modifié ce week end, et là, c'est nickel.
Reprise dans les jours ou les semaines qui viennent le téléchargement du fichier de licence (GPL bien sûr) par les méthodes Qt.

Ensuite, me restera plus qu'à trouver une solution pour SVN : création d'un dépôt aussitôt le projet défini, ou alors création d'un script qui permettra par la suite de commiter les modifications apportées ? La question reste ouverte pour le moment. Mais il faudra que je me décide assez vite pour que ce projet soit enfin terminé ;)

Heero_Yuy
01/03/2010, 12h22
Pas eu le temps de bosser dessus durant ma semaine de congés - je me suis penché sur PHP - mais je vais m'y remettre :)

Heero_Yuy
06/04/2010, 17h12
Salux,

Petites nouvelles du projet.

Après m'être cassé le crâne (je vous rassure, pas de fractures en vue) sur le téléchargement de fichiers en HTTP avec Qt, je viens de trouver une solution sur le site du zéro. Je vais tester cela prochainement et vous tiendrais au courant.

Je pense qu'après cela, je mettrais une archive sur Alionet.

La prochaine version devrait inclure le support SVN (je ne sais pas encore si ce sera une création de dépôts, ou une création de script pour gérer cela, mais bon, j'ai le temps d'y réfléchir).

Heero_Yuy
14/04/2010, 20h50
Salux à tous,

encore une fois, quelques nouvelles du projet.

Ca y est, ça marche. L'arborescence est bien créée, le fichier de licence (GPL.txt sur le site de gnu.org) est bien téléchargé et sauvegardé sur la machine. Encore une petite modif à faire pour vérifier que l'écriture du fichier de licence se passe bien, et ensuite, 2 nouvelles compil' : une sur système 64 bits (mon système principal) et une sur un système 32 bits que je compte installer en machine virtuelle.

Ensuite, je créerais les archives tar.gz pour que vous puissiez tester si ça vous intéresse :)

Heero_Yuy
19/04/2010, 13h45
Bon, finalement, je n'ai pas besoin de faire 2 compil' distinctes pour avoir la même appli sur une architecture 32 bits et une sur archi. 64 bits.

En effet, habituellement, lorsque l'on veut installer une appli par compilation des sources, on commence souvent par l'étape :


./configure

Et bien, là, avec Qt, c'est à peu près la même chose. Un fichier ayant pour extension .pro permet de créer le Makefile qui fera ensuite appel à gcc en 32 ou 64 bits selon votre système.

Donc, au lieu de faire un

./configure

il suffira de faire :


qmake <nom_du_fichier>.pro

en remplaçant <nom_du_fichier> par le nom réel du fichier .pro.

Mais j'en reparlerais plus tard. Là, justement, je suis en train de m'amuser sur ce fichier .pro pour que le fichier Makefile généré par le commande citée précédemment permette également la bonne installation du programme ;)

Je commence tout juste à bien comprendre l'utilité de ce fichier .pro, mais déjà, j'arrive à faire quelque chose de pas trop mal. Juste un petit souci de propriétaire et groupe propriétaire sur le fichier de conf à régler :)

Encore un peu de patience, mais ça ne devrait plus tarder :)

Heero_Yuy
22/04/2010, 20h54
Salux,

Allez, dernières news avant la sortie de la version 0.1 (il m'aura fallu du temps, mais comme on dit, plus c'est long, plus c'est bon :P ) début de semaine prochaine je pense.

Avant de livrer la première version de cette appli, il me reste à relire le code pour enlever tout ce qui n'est pas nécessaire (par exemple des affichages que j'ai pu rajouter pour vérifier le bon fonctionnement du code), faire encore un ou 2 tests pour détecter d'éventuels problèmes avec les dernières corrections apportées au code. Et surtout, vérifier que la compilation, et l'install sur le système ne pose pas de problème et corresponde bien à ce que je souhaitais au départ.


Et voilà déjà que se profile quelques ajouts pour la version 0.2 :
ajout au projet de quelques fichiers : README - présentant le projet - , INSTALL - donnant la méthode d'installation dans le cas d'un projet de développement applicatif -, et AUTHOR(S) - indiquant le nom du ou des participants au projet.
support Subversion (utiles pour les projets de développements, ou pour les différents documents que vous seriez amenés à rédiger, voire dans les différentes versions de retouche sur une image (je ne sais pas trop si dans ce dernier cas, SVN fonctionne, mais on peut l'imaginer)
et certainement d'autres choses qui me viendraient à l'esprit ultérieurement.


Mais pour la version 0.2, il faudra encore être patient, parce que je sens et je sais que le support SVN va me donner des sueurs froides :drop:

Voilà, alors rendez-vous la semaine prochaine pour la version 0.1 ;)

oh!rocks
22/04/2010, 21h59
Pas de problèmes, on attend... :)


à plus,

oh!rocks

Burn2
22/04/2010, 22h43
Salux,

Allez, dernières news avant la sortie de la version 0.1 (il m'aura fallu du temps, mais comme on dit, plus c'est long, plus c'est bon :P ) début de semaine prochaine je pense.

Avant de livrer la première version de cette appli, il me reste à relire le code pour enlever tout ce qui n'est pas nécessaire (par exemple des affichages que j'ai pu rajouter pour vérifier le bon fonctionnement du code), faire encore un ou 2 tests pour détecter d'éventuels problèmes avec les dernières corrections apportées au code. Et surtout, vérifier que la compilation, et l'install sur le système ne pose pas de problème et corresponde bien à ce que je souhaitais au départ.


Et voilà déjà que se profile quelques ajouts pour la version 0.2 :
ajout au projet de quelques fichiers : README - présentant le projet - , INSTALL - donnant la méthode d'installation dans le cas d'un projet de développement applicatif -, et AUTHOR(S) - indiquant le nom du ou des participants au projet.
support Subversion (utiles pour les projets de développements, ou pour les différents documents que vous seriez amenés à rédiger, voire dans les différentes versions de retouche sur une image (je ne sais pas trop si dans ce dernier cas, SVN fonctionne, mais on peut l'imaginer)
et certainement d'autres choses qui me viendraient à l'esprit ultérieurement.


Mais pour la version 0.2, il faudra encore être patient, parce que je sens et je sais que le support SVN va me donner des sueurs froides :drop:

Voilà, alors rendez-vous la semaine prochaine pour la version 0.1 ;)[/b]
Si t'as besoin d'hébergement... ;)

Heero_Yuy
23/04/2010, 13h55
Salux Burn2,

Merci de ta proposition ;) - on en avait déjà parlé il me semble il y a plus d'un an si ma mémoire ne me joue pas des tours :D .

Je vais commencer par mettre une archive sur Alionet, et ensuite, m'attaquer au développement de mon site Web qui permettra bien sûr de télécharger tous mes programmes (surtout qu'en ce moment, ce n'est pas les idées qui manquent). Une fois ce site Web terminé, ou même à mi-parcours, je te recontacterais :) - alors gardes-moi une petite place au chaud :lol:

Quant aux projets qui vont suivre, outre mon site Web, il y aura :

une appli Qt (forcément) qui affichera sur l'ordi le niveau de charge de la batterie de l'iPhone et qui enverra des avertissements pour recharger l'appareil (j'ai vu que sur l'ordinateur de bord de ma voiture, cette information était reçu de l'iPhone par bluetooth, je compte faire la même chose sur mon PC) - et j'aimerais bien savoir si c'est possible avec les autres smartphones :)
appréhender OpenCV (library de vision par ordinateur). Pour cela, j'ai acheté le livre Learning OpenCV (http://www.amazon.fr/Learning-OpenCV-Gary-R-Bradski/dp/0596516134/ref=sr_1_1?ie=UTF8&s=english-books&qid=1272023629&sr=1-1) (en anglais, mais ça ne me fait pas peur, puisque j'ai déjà lu un bouquin sur la programmation bluetooth en anglais :P ).

Et par la suite, d'autres projets viendront certainement s'ajouter à la liste :D

Burn2
23/04/2010, 14h23
Ah bah punaise t'es motivé, ce qui n'est malheureusement plus mon cas une fois sorti du travail. :(

Heero_Yuy
23/04/2010, 14h46
Quand il s'agit de boulot perso, je suis super motivé, surtout que je ne fais plus beaucoup de dév au boulot, beaucoup plus de maintenance, ce qui n'est pas vraiment mon truc, mais je m'y fais. Ca change et ça me permet d'apprendre des trucs que je ne connaissais pas :D

Heero_Yuy
26/04/2010, 20h52
Salux,

Chose promise, chose due :D

La voilà, enfin, la version 0.1 de ProjectTree. Cette appli, utilisable uniquement en ligne de commande (bon, je sais, certains auraient préféré une interface graphique, mais depuis quelques temps, même pour lancer Firefix, Gedit, et même Nautilus, j'utilise la ligne de commande :P ), vous permet de créer l'arborescence de votre projet.

Pour cela, il se base sur un fichier au format XML regroupant tout ce qu'il a besoin pour créer l'arborescence.

Pourquoi une telle appli ? La réponse est simple, j'en avais assez de devoir créer les répertoires et sous-répertoires de mes projets de développement, manuellement. Cette appli me permet de le faire automatiquement, et gagner ainsi du temps. En effet, mes projets de dév regroupent un ensemble cohérent à mon point de vue, de répertoires et sous-répertoires. Par exemple, pour un projet avec interface graphique, j'ai, dans le répertoire principal du projet, les répertoires suivant :

bin : pour l'exécutable
doc : la documentation du projet (manuel utilisateur)
img : l'ensemble des images nécessaires au programme
resource : contenant les différents fichiers de resources (.qrc pour Qt) indiquant les différents fichiers à utiliser dans le programme. Ces fichiers facilitent l'insertion des noms de fichiers dans le code source du programme
src : le code source à proprement parler


Même si cela fait peu de répertoires, cela reste malgré tout un travail fastidieux - et oui, il faut être un peu fainéant de temps en temps.

Bref, j'ai développé cette appli par pure fainéantise :lol:

Mais venons-en au coeur du sujet. Comment installer cette appli. Il vous faudra, pour cela certains prérequis que je vais vous donner tout de suite.

PREREQUIS
gcc / g++ (installez les deux pour plus de sécurité)
make
kernel-headers, kernel-source
et bien entendu Qt (la compilation a été testée avec la version 4.6.0 minimum, mais je pense qu'avec la version 4.5.x, cela devrait passer. Mais en cas de souci à la compil, installez la 4.6.0 ou même la dernière en date, la 4.6.2)


Je pense que c'est tout pour les prérequis. Si toutefois, il vous manque quelque chose, vous le saurez bien vite. Dites-le moi, pour que je modifie ce post.

Passons à la suite, l'installation.

INSTALLATION

L'installation s'effectue en ligne de commande, par la compilation des sources, vous verrez, cela n'est pas difficile, je n'ai pas encore eu le temps de voir pour créer un package, et je ne pense pas le faire, mais si quelqu'un s'en sent le coeur de le faire, je lui laisse volontiers cette tâche.

Alors, la première étape consiste donc à télécharger le tar.gz que vous trouverez ci-dessous (vous devriez voir apparaître le nom ProjectTree_0.1.tar.gz quelque part sur cette page ;) ).

Imaginons que vous avez téléchargé l'archive dans /home/$USER/Telechargements ($USER étant votre nom d'utilisateur/login), dans un terminal, tapez les commandes qui suivent :


cd ~/Telechargements
tar zxvf ProjectTree_0.1.tar.gz

ceci pour extraire l'archive. Un nouveau répertoire dans /home/$USER/Telechargements, et se nommant ProjectTree. La commande qui suit va vous permettre de vous positionner dans ce répertoire :


cd ProjectTree

Nous allons maintenant créer le fichier Makefile nécessaire pour la compilation.


qmake ProjectTree.pro

Vérifiez que le fichier Makefile a bien été créé. Si tel est le cas, passons à la compilation :


make

S'il n'y a pas d'erreurs, passons à la suite, l'installation. Là, vous devrez prendre les droits de l'utilisateur ROOT. Vous pouvez utiliser sudo, mais j'ai mes petites habitudes :


su root

et saisissez votre mot de passe root. Attention, rien ne s'affiche, alors faites attention à ce que vous tapez :P

et enfin, une fois les droits root pris, il vous suffit de faire :


make install

pour installer l'appli. Celle-ci s'installe dans /usr/bin. Mais ce n'est pas tout. Cette commande permet également de copier le fichier ProjectTree.conf (que je vous présenterais par la suite) à 2 endroits sur votre machine : dans /etc/ProjectTree et dans /home/$USER/.ProjectTree/ (ou $USER représente toujours votre nom d'utilisateur).

Et s'il n'y a pas d'erreurs, c'est terminée.

Si vous rencontrez des problèmes, faites-moi signe.

Voyons un peu la désinstallation avant d'aller plus loin.

DESINSTALLATION

La désinstallation s'effectue également en ligne de commandes, et avec les droits ROOT. Comme tout à l'heure :


su root

et saisissez votre mot de passe root, pour prendre les droits root. Enfin,


make uninstall

pour désinstaller l'appli. Vous rencontrerez cependant un message d'erreur, indiquant qu'il ne peut supprimer le répertoire /usr/bin, ne vous inquiétez pas, je n'ai pas encore résolu ce pseudo-problème. Votre système ne rencontrera aucun problème à la suite de ce message. Cependant, l'installation ne supprimera pas le fichier /home/$USER/.ProjectTree/ProjectTree.conf, mais effacera bien le fichier /etc/ProjectTree/ProjectTree.conf (encore peut-être un détail à régler, mais ce n'est pas le plus urgent pour le moment).

Et voilà, la désinstallation est terminée.

Avant de vous parler de l'utilisation de l'appli, je vais vous présenter le fichier de conf, qui, vous l'aurez deviné, s'appelle ProjectTree.conf. Voici donc la tronche de ce fichier :

<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>
<?xml version="1.0"?>
<ProjectTree>
<maindir>/media/Documents/Devel/tmpbe4svn/</maindir>
<svn>
<localsvn>/media/svn-athena/</localsvn>
<distant />
</svn>
<license name="gpl" value="default" >
<url>http://www.gnu.org/licenses/gpl.txt</url>
</license>
<license name="lgpl">
<url>http://www.gnu.org/licenses/lgpl-3.0.txt</url>
</license>
<prj type="app" value="default">
<dir>bin</dir>
<dir>doc</dir>
<dir>img</dir>
<dir>resource</dir>
<dir>src</dir>
</prj>
<prj type="cmd">
<dir>bin</dir>
<dir>doc</dir>
<dir>src</dir>
</prj>
<prj type="web">
<dir>img</dir>
<dir>include</dir>
<dir>styles</dir>
</prj>
</ProjectTree>
</div>

Alors, voyons un peu les différents élements, constituant le projet (et ce entre les balises <ProjectTree> et </ProjectTree>).


<maindir>/media/Documents/Devel/tmpbe4svn/</maindir>

indique le chemin du répertoire où sont stockés tous vos projets.


<svn>
<localsvn>/media/svn-athena/</localsvn>
<distant />
</svn>

Le bloc svn indique au programme les chemins vers vos dépôts subversion (dépôt local et distant), mais cette option n'est pas encore implémentée.


<license name="gpl" value="default" >
<url>http://www.gnu.org/licenses/gpl.txt</url>
</license>

Le bloc licence indique le lien qui permettra au programme de télécharger la licence de votre projet. Comme vous pouvez le voir, on peut en créer autant que l'on veut.


<prj type="app" value="default">
<dir>bin</dir>
<dir>doc</dir>
<dir>img</dir>
<dir>resource</dir>
<dir>src</dir>
</prj>

Le bloc prj est le bloc qui vous permet d'indiquer au programme le type du projet (type="app" dans notre cas pour indiquer ici qu'il s'agit d'une application avec interface graphique) et s'il s'agit d'un paramètre par défaut (value="default") - en présence de ce paramètre, et si c'est le type de projet que vous voulez réaliser, vous n'aurez pas besoin de le spécifier au programme. Vient ensuite dans ce bloc, tout une série de ligne intitulée <dir></dir>. Ces lignes donnent au programme le nom des différents sous-répertoires de votre projet (ici, bin, doc, img, resource, src). Et là encore, il est possible de créer autant de bloc prj que vous avez de types de projet.

Je vous invite donc, à modifier le fichier /home/$USER/.ProjectTree/ProjectTree.conf pour qu'il corresponde à vos besoins. En cas de besoin, dites-moi si vous n'y arrivez pas, je vous aiderez.

Passons à l'étape la plus "difficile"...... l'utilisation du programme (bon, je plaisante, ce n'est pas difficile du tout :P ).

UTILISATION

L'utilisation se fait très simplement par la commande :


projecttree -t app -l gpl MonProjet

en remplaçant bien entendu,

app : par le type de projet que vous avez défini dans le fichier de conf
gpl : par la licence que vous souhaitez utiliser (attention, je n'ai testé que sur des fichiers texte, faites moi savoir si vous rencontrer des problèmes avec d'autres types de fichier de licence (Creative Commons par exemple).
MonProjet : par le nom de votre projet


Je vous laisse découvrir, mais cela ne vous en dira pas plus :


projecttree -h

ou


projecttree --help

A oui, petite précision, les options courtes -t et -l ou leur pendant long, respectivement --type et --license.

Voilà, à vous de jouer maintenant, la première étape après l'installation de l'appli et avant son utilisation est de modifier le fichier de conf - l'appli vérifiant que la présence du fichier /home/$USER/.ProjectTree/ProjectTree.conf en premier. Si ce fichier n'est pas présent, il ira chercher la conf dans le fichier /etc/ProjectTree/ProjectTree.conf.

Et si vous rencontrez quelques soucis, dites-le moi :)


[attachment=6:ProjectTree_0.1.tar.gz]

salv-ice
28/04/2010, 21h23
Salut Heero,

Ca faisait longtemps que je n'étais pas passé par ici et je dois dire que le projet a bien avancé ! Bravo !

Je n'aurai pas le temps de le tester dans l'immédiat mais vu que je compte bien me remettre au C++ dès que ma maison sera en ordre et que j'y serai bien installé, ton programme me sera certainement très utile et je pourrai te faire quelques retours B)

@ plux

PS : Pour gérer SVN, le plus simple serait d'utiliser directement l'exécutable subversion via des commandes shell...

Heero_Yuy
28/04/2010, 21h48
Salux salv-ice,

Déjà, bon courage pour ta maison ;) et merci de tes encouragements. Et oui, ce projet a avancé, et je suis heureux d'être arrivé à proposer cette version. Chez moi, elle fonctionne plutôt bien. Faudra peut-être que je revois l'affichage mais pour moi, là, c'est un point de détail :P

Pour SVN, j'hésite entre 2 solutions.
Soit l'appli génère le dépôt SVN lié au projet
Soit l'appli crée un script qu'il faudra lancer manuellement pour committer les modif réalisées sur le code du projet, mais qui sera lancé par l'appli pour créer les dépôts.


Dans le premier cas, il faudra malgré tout committer manuellement, en saisissant les commandes idoines, ce qui me fait penser que le second cas est préférable.

Enfin, faut que je me creuse la tête et que j'épluche un peu plus la doc de Subversion (le SVN RedBook qui en dit beaucoup :) ).


J'attends tes remarques avec impatience :)

elleaime
28/04/2010, 21h54
euh, :unsure: , est-ce normal que je ne puisse télécharger le fichier ?

J'ai un message qui me dit<div class='quotetop'>Citation </div>
Désolé, mais vous n'avez pas la permission d'utiliser cette fonctionnalité.[/b]

Heero_Yuy
28/04/2010, 22h04
Etrange, j'y arrive.

Si ça ne veut pas fonctionner, donnes-moi par MP une adresse mail à laquelle je peux t'envoyer l'archive :)

elleaime
28/04/2010, 23h09
Peut-être, mais je ne suis pas modérateur :P

salv-ice
29/04/2010, 07h33
Pareil pour moi, je ne peux pas télécharger l'archive

Heero_Yuy
29/04/2010, 09h27
Arf, c'est quoi ce b****l :blink:

Je vais voir avec l'équipe Alionet pour comprendre pourquoi vous ne pouvez pas télécharger :)

Agemen
29/04/2010, 10h28
Je vous invite à réessayer. Ça devrait le faire ;)

salv-ice
29/04/2010, 11h13
Ca fonctionne maintenant, merci !

elleaime
29/04/2010, 11h54
Idem, j'ai réussi à télécharger.

Par contre, quelques soucis dès la première instruction d'installation, pour trouver qmake :lol:



J'ai une erreur sur le make :


src/ProjectTree.cpp:28:31: error: QProcessEnvironment: Aucun fichier ou dossier de ce type
src/ProjectTree.cpp: In member function ‘void ProjectTree::makeProjectTree()’:
src/ProjectTree.cpp:72: error: ‘QProcessEnvironment’ was not declared in this scope
src/ProjectTree.cpp:72: error: expected ‘;’ before ‘environment’
src/ProjectTree.cpp:75: error: ‘environment’ was not declared in this scope
make: *** [ProjectTree.o] Erreur 1

Silfax
29/04/2010, 12h20
Salut,

Si je peux me permettre une petite suggestion, il faudrait rajouter dans le INSTALL les requirements au niveau librairies et outils comme : qmake, version de QT, etc ...

Sous Debian (Sid), il est nécessaire d'avoir les paquets suivants pour que la compilation se passe sans erreur:
libqt4-dev
qt4-qmake


Ce doit certainement être la même chose pour OpenSuse (aux noms des paquets près ...)

@+

Sfx

Heero_Yuy
29/04/2010, 20h09
Arf, il est vrai que je passe par une compilation manuelle de Qt :)

Donc, effectivement, il faut :

libqt4
libqt4-devel


Par contre, sous openSUSE, point de qt4-qmake.

En fait, je vous conseille (comme je l'ai fait au début) d'installer tout ce qui touche au Qt4.

Désolé pour le désagrément.

elleaime
29/04/2010, 21h09
y compris celles pour avahi, poppler, dbus, google, scintilla et consors ? :bestbook: :dur:

Heero_Yuy
30/04/2010, 11h19
Tu peux toujours installer celui pour dbus, mais pour le reste, ce n'est pas nécessaire :)

Heero_Yuy
04/05/2010, 22h41
Je vous parlais précédemment d'un message d'erreur qui s'affiche lorsque l'on fait un

make uninstall

pour désinstaller l'appli. Ce message d'erreur indique que le répertoire /usr/bin ne peut être supprimé parce qu'il n'est pas vide. Ce message d'erreur est affiché mais l'erreur est ignorée (présence du caractère "-" devant la commande dans le Makefile). Cette erreur n'est donc pas "néfaste" pour le système.

J'essaie encore de voir s'il est possible de ne plus avoir ce message, mais je n'obtiens pas beaucoup de réponse pour le moment. Va certainement falloir que je poste sur un forum étranger, et là, faut que je prépare ma question.

Dès que j'ai des nouvelles, je vous en ferais part :)

Sinon, pour ceux qui ont testé, y a-t-il quelques remarques ?

Par la même occasion, je vous informe que je réfléchis déjà à la version 0.2 avec une nouvelle organisation dans le fichier de conf (mais je n'en dirais pas plus pour le moment). J'espère pouvoir passer au codage de cette version bientôt.

Heero_Yuy
25/05/2010, 19h25
Salux,

Me revoilà pour vous parler de la version 0.2 que vous pourrez bien sûr télécharger à la fin de ce post.

Côté nouveauté de cette 0.2 :

Refonte du code source pour correspondre davantage à la notion d'objet (là, c'est purement programmatique)
Refonte du fichier de conf, toujours en XML mais un peu plus structuré. Il vous est toujours possible de le modifier.
Maintenant, si vos projets ont toujours les quelques mêmes fichiers (par exemple pour un projet de programmation, on retrouve toujours les fichiers README, AUTHORS, INSTALL), vous pouvez les définir dans le fichier de conf pour qu'ils soient créés automatiquement.
Le fichier de conf contient maintenant une section authors regroupant l'ensemble des auteurs du projet (il peut n'y en avoir qu'un seul bien sûr)


Voilà je pense avoir fait le tour des nouveautés.

Ah non, dans l'archive, vous trouverez 3 nouveaux fichiers :

README : présente le programme
INSTALL : donne la procédure d'installation ainsi que les prérequis nécessaires à la compilation de ProjectTree
AUTHORS : liste les auteurs avec leur adresse mail pour pouvoir les contacter (en l'occurrence, la liste est courte et composée d'un seule auteur, moi)


Que dire de plus. Ah oui, vous montrer la structure du nouveau fichier de conf :

<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>
<?xml version="1.0"?>
<ProjectTree>
<maindir>/media/Documents/Devel/tmpbe4svn/</maindir>
<repository>
<local>/media/svn-athena/</local>
<distant />
</repository>
<authors>
<author>
<name>Test DEVELOPPEUR</name>
<email>test.developpeur@developpeur.fr</email>
</author>
</authors>
<licenses>
<license name="gpl" value="default" >
<url>http://www.gnu.org/licenses/gpl.txt</url>
</license>
<license name="lgpl">
<url>http://www.gnu.org/licenses/lgpl-3.0.txt</url>
</license>
</licenses>
<types>
<type name="app" value="default">
<dir>bin</dir>
<dir>doc</dir>
<dir>img</dir>
<dir>resource</dir>
<dir>src</dir>
<file>INSTALL</file>
<file>README</file>
<file>AUTHORS</file>
</type>
<type name="cmd">
<dir>bin</dir>
<dir>doc</dir>
<dir>src</dir>
<file>INSTALL</file>
<file>README</file>
<file>AUTHORS</file>
</type>
<type name="web">
<dir>img</dir>
<dir>include</dir>
<dir>styles</dir>
</type>
</types>
</ProjectTree>
</div>

Vous pouvez voir une section <repository></repository>. Pour le moment, il n'est pas nécessaire de le modifier, cela servira pour une future version qui gérera, je l'espère, SVN. Pour le moment, ce n'est pas le cas.

Voilà, voila, je pense que c'est tout. De toute façon pour toute information supplémentaire, vous avez toutes les infos pour me contacter (mail, mp ou sur les forums Alio et Terranux).

Et maintenant, pour finir, l'archive :

Heero_Yuy
27/05/2010, 21h02
Je vois que 3 personnes ont téléchargé mon petit code. Auriez-vous des remarques, suggestions à me faire pour améliorer le programme ? Avez-vous rencontré des soucis (installation, configuration, utilisation) ?

elleaime
27/05/2010, 22h13
Je regarde quand j'aurais un peu de temps, mais comme j'ai déjà rendu mon projet ce sera un peu moins pertinent :huh:

Heero_Yuy
28/05/2010, 09h20
Ok

Mais t'inquiètes pas. Ce n'est pas urgent pour le retour. La semaine prochaine, je pars en formation, et ce pendant 5 semaines, et je ne sais pas si j'aurais une connexion Internet. Si j'en ai pas, j'essaierais de passer de temps en temps et en temps limité depuis mon iPhone s'il y a de la 3G bien sûr ;)

elleaime
29/05/2010, 17h52
Je n'arrive pas à l'installer sur Mandriva :angry:

qmake ne dit et ne fait rien et make me jette parce qu'il ne trouve pas de QProcessEnvironment.

Correction, j'ai bien le fichier Makefile, mais toujours pas de QProcessEnvironment que ce soit sur Mandriva ou Opensuse


src/ProjectTree.cpp:28:31: error: QProcessEnvironment: Aucun fichier ou dossier de ce type
src/ProjectTree.cpp: In member function ‘void ProjectTree::makeProjectTree()’:
src/ProjectTree.cpp:75: error: ‘QProcessEnvironment’ was not declared in this scope
src/ProjectTree.cpp:75: error: expected ‘;’ before ‘environment’
src/ProjectTree.cpp:78: error: ‘environment’ was not declared in this scope
make: *** [ProjectTree.o] Erreur 1

Heero_Yuy
30/05/2010, 18h11
Tu as quelle version de Qt ?

Parce qu'avec la 4.6.2, tout marche nickel et il me semble que cette classe est apparue avec la version 4.6.0.

<div class='quotetop'>Citation </div>
The QProcessEnvironment class holds the environment variables that can be passed to a program. More...
#include <QProcessEnvironment>

Note: All functions in this class are reentrant.
This class was introduced in Qt 4.6.[/b]

Source : Doc de Qt (http://doc.qt.nokia.com/4.6-snapshot/qprocessenvironment.html)

Il n'y a pas de raison que ça ne marche pas.

elleaime
30/05/2010, 18h33
C'est certainement un problème de version Qt, j'ai la 4.5.3 sur les deux machines.

Moi qui ne voulait pas compiler ... :P



lol, en plus c'est précisé dans le fichier install (Il vous faudra installer la bibliothèque Qt (>= 4.6.0)) et je n'avais pas vérifié.

Je cours compiler alors ... :rolleyes:

Heero_Yuy
30/05/2010, 18h36
Ah ça, je l'ai précisé dès le début qu'il fallait minimum la 4.6.0 ;) - mais on ne m'écoute jamais :lol: :lol:

Bon, et bien, bonne compil' alors ;)

elleaime
30/05/2010, 23h57
Question bête, mais après une (longue) compilation, comment fais-je pour activer Qt 4.6 à la place du 4.5 ?

J'ai essayé la version everywhere et sdk, mais je pointe toujours sur l'ancienne 4.5.

Heero_Yuy
31/05/2010, 18h44
Tout est dans la doc ;)

<div class='quotetop'>Citation </div>
# Environment variables

In ***** to use Qt, some environment variables needs to be extended.

PATH - to locate qmake, moc and other Qt tools

This is done like this:

In .profile (if your shell is bash, ksh, zsh or sh), add the following lines:

PATH=/usr/local/Trolltech/Qt-4.6.2/bin:$PATH
export PATH

In .login (in case your shell is csh or tcsh), add the following line:

setenv PATH /usr/local/Trolltech/Qt-4.6.2/bin:$PATH

If you use a different shell, please modify your environment variables accordingly.

For compilers that do not support rpath you must also extended the LD_LIBRARY_PATH environment variable to include /usr/local/Trolltech/Qt-4.6.2/lib. On Linux with GCC this step is not needed.
# That's all. Qt is now installed.[/b]

Yapuka suivre ;)

elleaime
31/05/2010, 20h37
C'est ce que j'ai fait et ça ne change rien

mais vu que je n'ai pas de .login , il doit y avoir un autre fichier à compléter



J'ai fini par créer le fichier .login dans mon répertoire perso, à première vue, ça avance un peu plus.

mise à jour :
pfff, depuis que je n'ai plus mes stations solaris, je ne suis même plus foutu de faire un echo $PATH, je prends un coup de vieux, là, d'un coup ...

sinon, ayé ton script fonctionne. J'ai le fichier de licence (copying)

Heero_Yuy
03/06/2010, 07h40
Génial ;)

Bon, va falloir que je trouve un peu de temps pour faire la version 0.3 maintenant :P

Heero_Yuy
13/06/2010, 18h28
Salux,

Pas encore de nouvelle version de ProjectTree. Avec cette formation qui me bouffe pas mal de temps, je ne peux jamais bosser dessus, et pourtant, je le voudrais.

En plus, j'ai beau lire la doc pour créer un client SVN, je ne pige pas trop le truc. Va falloir que je me plonge dans le code source de svnadmin :P

Heero_Yuy
09/07/2010, 16h55
Toujours pas de nouvelles versions. Mais je devrais m'y remettre - pas évident sans connexion Internet, vivement que FT regarde son répartiteur si mon problème vient de là.

Mais bon, pour la version 0.3, le support de SVN devrait être intégré. Dans un premier temps par un processus fils lancé par ProjectTree.

Pour la version 0.4 (à moins que ce ne soit une 0.3.1), le support SVN sera, je l'espère, intégré dans le code source, si j'arrive à comprendre le code source de svnadmin - ce qui n'est pas gagné.

Et pour la version 0.5, j'essaierais d'inclure le support de CVS, Git et autres soft de versionning :)

Enfin, tout cela est à titre indicatif.

Heero_Yuy
23/08/2010, 20h55
Salux à tous,

cela fait plus d'un mois que je n'ai pas donné de nouvelles concernant ce projet.

Sachez qu'une version 0.3.1 est sur les rails (quelques soucis à régler) - la version 0.3 étant une version de développement, je ne peux vous la fournir.
Mais dès que la 0.3.1 sera prête, je vous en ferai part :)

Heero_Yuy
08/11/2010, 21h58
Je me rends compte que ça fait un moment que je n'ai pas touché mon code. Mais faut dire que je suis toujours à la recherche d'un bon tuto ou exemple pour apprendre à maîtriser l'API Subversion, ce que je ne trouve pas.

Mais rassurez-vous, le projet n'est pas mort, loin de là. Faut juste que je trouve du temps et surtout la bonne doc qui me permettra de continuer ;)

Heero_Yuy
06/12/2010, 16h28
Je sens que je vais abandonner l'idée d'ajouter le support Subversion en utilisant l'API SVN. J'y comprends rien (ou alors, j'suis pas en état de comprendre, et promis, j'ai rien bu :p ) et en plus, à quoi bon imposer Subversion.
Chacun pourra utiliser le Système de Gestion de Version qu'il souhaite :)

Bref, pour cette version 0.3.1, les modifications porteront sur l'affichage dans la console ;)

Silfax
07/12/2010, 10h50
Salut,

Tes sources sont dispo dans un dépôt ? Je peux regarder pour le support SVN si ça t'interesse ... (sans engagement, hein :megasmile:)

Heero_Yuy
07/12/2010, 11h11
Non, non, mes sources ne sont pas encore dispo dans un dépôt (j'aimerais avoir mon propre dépôt avec mon propre site web :p ).
Mais je mettrais ce soir la dernière version non actualisée (en version alpha, donc juste pour du dev). Si tu veux regarder pour SVN, y a pas de souci :)
Et si tu arrives à quelque chose avec les API Subversion, j'aimerais bien que tu m'expliques :p

Ah oui, une dernière chose, mon prog est en Qt, j'espère que tu connais un peu :D

Silfax
07/12/2010, 11h18
Je connais un peu .. Mais je ne regarderai pas la partie graphique ... uniquement l'accès/création/update à un dépôt svn ...

Heero_Yuy
07/12/2010, 12h14
De toute façon, y a rien en graphique (tout se fait en ligne de commandes).

Et puis, je n'ai pas implémenté la partie SVN - j'ai essayé de lire le code trouvé dans les sources de Subversion, mais je ne vois pas à quoi peuvent servir certaines parties du code.

Il me faut juste l'import. La création du dépôt devra être faite manuellement et existé avant de faire l'import du projet.

Silfax
07/12/2010, 12h35
Pas de soucis.. Je verrai ce que je peux faire dès que tu auras mis le code source à disposition ;)

Heero_Yuy
07/12/2010, 15h42
Ok.

Dès ce soir, je les mets en ligne ici sur Alionet.

Heero_Yuy
07/12/2010, 19h53
Comme convenu, je poste le code source de mon programme.
C'est une version alpha (mais tout à fait utilisable).

Silfax
07/12/2010, 20h35
Ok. Je vais regarder si je peux ajouter un support à svn ....Je te tiens au courant ;)

Heero_Yuy
07/12/2010, 21h18
Ok :cool:

Merci ;)

Heero_Yuy
11/05/2011, 21h44
Salux à tous,

Je me rends compte que ça fait un moment que je n'ai pas donné de nouvelles de ce projet. Faut dire que je n'ai pas eu beaucoup de temps pour bosser dessus, mais le projet n'est pas mort :D
Je retrouve petit à petit du temps pour coder, et il va y avoir du changement ! :)

Déjà, le nom : "ProjectTree est mort ! Vive ProjectManager !". Et oui, comme vous l'aurez compris, le projet s'appelle désormais ProjectManager, et se lancera en ligne de commandes (ça, ça n'a pas changé :gloups: ) avec la commande :



pm


Des nouveautés, je vous disais, il y en a d'autres. Non seulement, il sera toujours possible de créer l'arborescence d'un projet (ce qui était le but initial), mais désormais, il sera possible de lister les différents projets créés, et de voir le détail d'un projet particulier. Pour cela, une "mini" base de données SQLite sera utilisée, et remplie à chaque création de projets.

Certains y verront peut-être comme finalité une interface graphique, et ils auront raison - c'est bien pour cela que j'ai utilisé Qt depuis le début ;) . Je ne donne pas de date butoire, je vais juste faire comme le projet Debian : elle sera disponible, dès qu'elle sera prête :megasmile: .

Actuellement, j'en suis à la phase de réécriture du code. Malgré le changement de nom, la numérotation de version ne repassera pas à 0.1, mais sera la 0.4.
Concernant une possible création d'un dépôt Subversion lors de la création du projet, pour le moment c'est en standby. Si cette fonctionnalité vous intéresse, dites-le moi ;)

Voili voilou.

Des suggestions ? N'hésitez pas à me les communiquer.

elleaime
11/05/2011, 22h45
Oui, j'ai une question, on peut la télécharger à quelle adresse ?

Heero_Yuy
12/05/2011, 09h08
Malheureusement, la nouvelle version n'est pas encore prête. Mais dès qu'elle le sera, je la mettrais en ligne sur Alionet ;)

Silfax
12/05/2011, 09h34
"Concernant une possible création d'un dépôt Subversion lors de la création du projet, pour le moment c'est en standby. Si cette fonctionnalité vous intéresse, dites-le moi" --> tjrs à l'étude ;D j'ai fais quelques tests (sur l'ancienne version) mais comme toi, je n'ai pas trop le temps pour l'instant ... L'idéal serait de mettre le code sur un repository accessible genre googlecode ou sourceforge pour pouvoir travailler collectivement :-)

Un repository est dispo ici --> http://subversion.assembla.com/svn/alio-test-svn/
si tu es interessé, on peut voir à mettre le code dedans (lecture pour tout le monde, écriture pour les membres)

Heero_Yuy
12/05/2011, 09h54
T'inquiètes Silfax, y a pas de souci :) - je te remercie d'y avoir jeter un oeil.

Pour le repo, pourquoi pas. Ca pourrait être sympa, et l'idée me plait bien.
Je regarderais cela ce soir ou la semaine prochaine.

Heero_Yuy
18/05/2011, 14h12
Un repository est dispo ici --> http://subversion.assembla.com/svn/alio-test-svn/


Petite question concernant ce dépôt. Y a-t-il des comptes créés (par exemple pour les développeurs et pour le reste du monde) ? Si oui, pourrais-tu me fournir les identifiants ?

D'avance merci.

Silfax
18/05/2011, 20h10
Pour l'instant, non :-) Mais si tu es interessé, je te rajoute comme membre et admin du repository (il suffit que tu me donnes ton email). Par défaut, le repository est en lecture seul pour tout le monde et en lecture/écriture pour les membres identifiés.

Heero_Yuy
19/05/2011, 13h48
Je suis fortement intéressé ;)
Mon email : angel59 <at> alionet.org
S'il te faut aussi un identifiant , tu peux mettre Heero_Yuy :)

D'avance merci.

Silfax
19/05/2011, 14h16
Je viens de t'envoyer une invit' par mail ...

Heero_Yuy
19/05/2011, 15h05
ok merci.
Je regarde cela ce soir ;)

Merci.

Heero_Yuy
19/05/2011, 19h11
Bon ça y est, mon compte est créé.
J'importerais le code ce week end.
Je vais continuer à bosser dessus ce soir, notamment la partie Base de données SQLite. Et ce week end, ce sera la présentation que je soignerais :)

Heero_Yuy
21/05/2011, 15h51
Salux,

Voilà, le code source est chez assembla. J'ai fait un import puis un export et ça a l'air de fonctionner.
J'ai déjà un peu bosser sur la base de données, me reste encore quelques fonctionnalités à développer.

Silfax
21/05/2011, 22h08
super !!
Ce sera plus simple pour le suivi des dév ...et les tests pour ceux qui seraient intéressés :-)

Heero_Yuy
22/05/2011, 11h06
Bon, faut vraiment que je bosse sur cette base de données pour qu'elle soit bien comme il faut.
Mais, entre la création d'une unique table ou de plusieurs, mon coeur balance :
* une table : facile, simple voire trop simpliste
* plusieurs tables : une véritable base de données relationnelle, mais comment la créer avec tous les éléments adéquats ? Lire une première fois le fichier XML, et compléter la base en conséquence ? Et ensuite, relire ce même fichier pour configurer le projet ? C'est ridicule à mon avis.

Si quelqu'un a une idée, je suis preneur.

Silfax
22/05/2011, 12h10
Salut,

Quelles sont les infos que tu dois stocker ? Et est-il nécessaire d'avoir une DB ?

Heero_Yuy
22/05/2011, 12h48
Y a pas beaucoup d'infos à stocker : le nom du projet, son type, sa licence et éventuellement l'url de la licence.

J'avais pensé à un fichier XML, mais si on crée énormément de projet, je crains l'explosion combinatoire. En même temps, une base de données SQLite, c'est juste un fichier aussi. Donc bon, la question se pose.
Sinon, pour commencer, je ferais une seule table. Et on verra à l'usage.

Silfax
22/05/2011, 13h19
ça fait +/- 5 infos à garder par projet ... Avant d'arriver à un fichier ingérable, il y a (beaucoup) de marges ... Sur un autre projet, j'ai fais des tests avec des fichiers XML de plusieurs méga sans aucun souci de performance .. Je vais tester avec un fichier XML type de 1000 projets ...
C'est juste pour tester hein .. :-)

Bon .. un fichier XML de 1021 projets fait +/- 180 Ko

Heero_Yuy
22/05/2011, 15h24
Ok, je vais étudier cela ;)
Pour le moment, j'ai un petit problème d'insertion dans la base de données que je vais résoudre dans les jours qui viennent :p

Heero_Yuy
31/05/2011, 22h36
Problème d'insertion dans la base de données résolu, mais je rencontre un autre bug concernant les options du style -t ou -l .
Je pense migrer vers le namespace AQP (http://www.qtrac.eu/aqpbook.html) - en passant, le bouquin est sympa, j'ai commencé à le lire, et certains points sont bien abordés - plutôt que d'utiliser getopt et getoptlong de chez GNU.