Jago

(Journal Auto-Géré d'Edition d'iDées ou le Journal d'Alain, Gestion d'Edition Dynamique ou aJout Atipique de paGEs d'iDées)  conçu par Alain Adelmar
alain Adelmar
aadelmar@numericable.fr beuuh c est quoi ca

Journalise vos notes sur la console, sauvegarde et gé automatiquement aussi. Il place les notes dans un répertoire ~/jrnl_perso/ et créé un journal ~/jrnl_perso/journal.html qui indique la date le sujet et un lien permettant d'y accéder.
Vous pouvez trouver:

  • le script plus bas et jagola aussi
  • le manuel aj.1
  • le script aj2.pl et aj
  • une nouvelle versionet son script aj2.pl et son manuel aj.1
  • Voilà



    Ce script est un dérivé de alEd (mon petit éditeur de console), qui, tant qu'à éditer simplement les idées ou les remarques, maintenant les sauvent dans un répértoire qu'il créé ~/jrnl_perso/.
    Il place dans un journal appelé journal.html des liens dynamiques classés par rubriques et chronologiquement:
    Programmation | Gestion | Divers
    Je l'ai rendu äpte à reconnaitre les options et arguments suivant:  -cdgp --h  nom_de_fichier ou repertoire(a ouvrir ou a voir)
    usage: jaged [-cdgp][--h --heure][nom_du_fichier]
    les options:
     
    -c pour complet, sert à afficher totalement le texte ouvert par nom_de_fichier,  par defaut il n'affichera que 8 lignes (les 4premiéres  et les 4dernières) pour ne pas surcharger l'écran et pouvoir faire la soudure.
    -dgp pour réspectivement: divers, gestion, programmation.   Ainsi un lien dans journal sera créé et ira ce positionné sous la rubriques désignée gestion programmation ou divers (divers étant la rubrique par defaut). Bien sûr l'heure et la date de ce fichier seront aussi afficher en bas de pages (chronologiquement en récapitulatif).
    --h ou --heure pour heure sert à marquer l'heure complette (accés, modif et création ou changement d'inode) du fichier ouvert, pour pouvoir la conserver en tant que remarque dans le fichier ainsi transformé et à l'écran.
    nom_de_fichier à ouvrir qui peut être un nom_de_répertoire (ce qui aura pour consequance d'afficher le contenu de ce-dit répértoire, afin de ce raffraichir la mémoire et de pouvoir bien ortaugrafié le fichier à ouvrir).

    Ce petit éditeur à aussi un menu qui vous permettra de lancer plusieurs éditions sans être obligé de le réouvrir. Pour le moment il est en mode texte, quand je métriserai plus le tk je le referai en GUI.  Il est intéressant avec l'outils :
    quoi (l'alias grep) et quoi+ (son grand frère Perl) ainsi que taf (traduct uk-fr) et vide (script videur, de contenu et de fichiers suivant regexp) et vlink (verificateur réparateur de liens pour répértoire, site, page_perso) et autre r2cp, Compile ,  html2rap, all2csv etc...
    Ces scripts m'aides tout les jours et sont accessible directement à la console, mais surtout je me suis régalé à les écrire.
    en noir et blanc: fonctionne
    En couleur : Roule bien

    Alain Adelmar


    Ci dessous le script jago         (pour le rendre executable lire voir )



    #!/usr/bin/perl -w
    # remd: Mon editeur alEd avec un menu. (ce programme tourne a merveille)    *
    # fait partie de GEAI (Gestion d'Edition Automatique Interactif) l'editeur  *
    # place les sauvegardes de votre travail dans ~/journal/trav_date.log  puis *
    # ajoute une lien dynamique dans la rubrique voulu du fichier Journal.html  *
    # rubriques défini pour le moment: (programmation, gestionnaire de file et  *
    # divers) appelé réspéctivement par l'option -p -g -d (par defaut) donc :   *
    #                                                                           *
    # usage: geai [-cdgp][--h --heure][nom_du_fichier]                          *
    #      -c (complet) affiche l'intégralité du contenu de file au lieu d'un   *
    #         récapitulatif (debut ...fin) => 8lignes - par defaut.             *
    #      --h (heure) change l'affichage horaire aaaammjj hhmmss => aaammjjccc *
    # Il accepte les noms de fichiers en arguments et s'utilise depuis le shell *
    # alain adelmar vers: 2.03  13 Decembre 2003 Pessac  (for UNIX-Like ENV)    *
    #****************************************************************************
    # Il tourne de manière satisfaisante Editeur/journal sur ~/jrnl_perso/journal
    #system ("clear");
    use Cwd;

    $dir = cwd;
    $path1="";
    $somedate = '<A NAME="sum_date"><BR>';
    @debut = @interm = @somd;
    $prems = $travail = $argv = $deb = 0;

    # les différantes variables ***************
    $x = ("x*" x 34) . "\n";

    $prompt = "Entrer votre choix: (0)nouveau, (1)ouvrir, (2)sauvegarder\n(q)quitter ou (Enter) pour continuez\.\.\.\n";
    # initialisé à

    undef $choix;
    $filename = "";
    #------- format de date pour file (normal = aaammjj | complet = aaammjj:%%%)

    @lsjour = qw(
            Dimanche
            Lundi
            Mardi
            Mercredi
            Jeudi
            Vendredi
            Samedi
            )
    ;

    for $i(0 ..6) {
      
    $fj{$i} = $lsjour[$i];
    }

    $min =(localtime(time()))[1];
    $h =(localtime(time()))[2];
    $an =(localtime(time()))[5];
    $sjour =(localtime(time()))[6];
    $fjour = $fj{$sjour};
    $datos = localtime (time);
    @lstnow = localtime (time());
    $j = $lstnow[3];
    $m = $lstnow[4]+1;
    if ($min <= 9) {
      
    $min = "0" . $min;
    }
    if ($h <= 9) {
      
    $h= "0" . $h;
    }
    if ($j <= 9) {
      
    $j= "0" . $j;
    }
    if ($m <= 9) {
      
    $m = "0" . $m;
    }
    if ($an >= 100) {
      
    $an=~ s/1()/20/;
    }
    else {
      
    $an= "1" . $an;
    }
    #----------- pour centieme de journée exp: 25 = 25% de journée ou 25 quart d'heures (99 = 1440min = 24h)
    $tmp_h2m = ($h * 60) + $min;

    # ---- pour $qdh (quantité de jour exprimé de 01~99) ------
    $qdh = int ($tmp_h2m/14.5); # pour avoir le centieme de journée sur 2chiffres de 01 à 99
    if ($qdh <= 9) {
      
    $qdh = "0" . "$qdh";
    }

    # ---------- pour $qdh (quantité de jour exprimé de 01~99) ------- uncomment

    if ($qdh <= 9) {
      
    $qdh = "0" . "$qdh";
    }
    # ---------- pour $qdm (quantité de jour exprimé de 001~999)------ 

    $qdm = int ($tmp_h2m/1.44); # pour avoir le milliéme de journée sur 3chiffres de 1 à 999
    if ($qdm <= 9) {
      
    $qdm = "00" . "$qdm";
    }
    elsif ($qdm <= 99) {
      
    $qdm = "0" . "$qdm";
    }

    #---------------------------------------------------------------------------------
    $ma_date_v = "$fjour  $j\/" . "$m\/" . "$an" . ":" . "$h" . ":$min"; # Mercredi 30/07/2003 17:30
    $ma_date = "$an" . "$m" . "$j" . ":" . "$qdh";                       # 20030730:72
    $ma_date_h = "$an" . "$m" . "$j" . ":" . "$qdm";                       # 20030730:726
    $dt = $ma_date_v;

    #print "ma_date = $ma_date | ma_date_v = $ma_date_v | qdh = $qdh | dt = $dt\n";

    &verifj;

    #-- arg & option possible usage: alEd [-dgp] [--h,--heure] [nom_de_fichier]
    if (defined $ARGV[0]) {
      
    foreach $_ (@ARGV) {
        
    ($arg = $_ and &traite_mode($arg)) if /^-\w/;
        
    ($ma_date = $ma_date_h) if /^--h/;
        
    if ($_ =~ /\w{3,}.*?$/) {
          
    $filename = $_;
          
    $argv++;
          
    &ouvrir($filename);
        
    } 
      
    }
    }
    else {
      
    print "Usage:\tjago [-pgd] [nom_de_fichier]\n";
      
    $argv = 0;
    }

    $bienvenu = "$x\tx $dt x\n$x\nBienvenu sur l'éditeur aled\n   editeur alain A_d_e_l_m_a_r\nTaper Ctr-D pour sortir\n\n$x\n\n";
    &menu;

    sub menu {
      
    &verifj;
      
    print "$prompt";
      
    chomp($choix = <STDIN>);
      
    #-----------------
      
    while($choix ne "q") {
        
    if($choix eq "1") {
          
    &watarg;
          
    undef $choix;
          
    &ouvrir;
        
    } 
        
    elsif($choix eq "2"){
          
    undef $choix;
          
    &sauv;
        
    }
        
    else {
          
    &watarg;
          
    undef $choix;
          
    &nouveau;
        
    }
      
    }
      
    die "$x\nTchao !!! s'eut été un plaisir\n$x\n";
    }



    sub nouveau {
      
    print "$bienvenu";
      
    @contenu = <STDIN>;
      
    print "si vous ne sauver pas votre travail\nou il le sera (par defaut) en tant que trav_" . "$ma_date\n";
      
    $filetmp = "$dir_journal" . "\/trav_" . "$ma_date" . "\.log";
      
    $file = "\~\/trav_" . "$ma_date" . "\.log";
      
    &lbling;
      
    #-----ajout a journal.html---
      
    &ajout_lnk($filetmp);
      
    open FTMP, ">$filetmp" or die "Ouverture impossible $!";
      
    print "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n";
      
    print FTMP @contenu;
      
    close FTMP or die "fermeture a l'os gros_caca $!";
      
    $travail++;
      
    &menu;
    }

    sub ouvrir {
      
    print "ouverture de $filename\n";
      
    if ($argv == 0) {
        
    &lequel;
      
    }
      
    $argv = 0 ;
      
    unless (-e $filename) {
        
    &lequel;
      
    }
      
    # sortir le path du fichier ouvert
      
    @rep = split(/\//, $filename);
      
    $file = pop @rep;           # nom du fichier seul
      
    $path1 = join('/', @rep);   # rep de travail
      
    #------------------------------------
      
    print "alEd va ouvrir $filename pour vous\n";
      
    open FO, "<$filename" or die "Ouverture impossible $!";
      
    @contenu = <FO>;
      
    &lbling;
      
    close FO or die "fermeture impossible $!";

      
    # printer le fichier a completer suivant l'option
      
    if ($argv =~ /^c/) {
        
    my $u = my $fin = 0;
        
    my $pl;
        
    my $numel;
        
    foreach $ligne(@contenu) {
          
    next if ($ligne eq "");
          
    if ($u <= 3) {
       
    print $ligne;
       
    $u++;
          
    }
          
    elsif ($u == 4 & $fin == 0) {
       
    $pl = "\." x 15;
       
    print "$pl" . "\n";
       
    for ($i = 3; $i == 0; $i--) {
         
    $numel = $#contenuf;
         
    $dl = $contenuf[$numel - $i];
         
    print "$dl" . "\n";
       
    }
          
    }
        
    }
      
    }
      
    else {
        
    foreach $ligne(@contenu) {
          
    print $ligne;
        
    }
      
    }

      
    print "\n";
      
    print $bienvenu;
      
    @nwcontenu = <STDIN>;
      
    push @contenu, @nwcontenu;
      
    # ---on sauvegarde quand même dans journal
      
    $filetmp = "$dir_journal\/" . "trav_" . "$ma_date" . "\.log";
      
    open FTMP, ">$filetmp" or die "Ouverture impossible $!";
      
    print "$x\nsup à $file édite automatiquement par alEd le: $dt --\>\n$x\n";
      
    print FTMP @contenu;
      
    close FTMP or die "Makash Oualou pour fermer $file \non\nl\'a\ndans\nl\'os\n$x\n $!";
      
    #---------------------------------------et on demande si on veut aussi sauver sur l'original
      
    print "voulez vous sauver l\'ensemble du travail sur:\n [Oui] le fichier d\'origine $filename\n[Non] (par defaut) sur un fichier temporaire\n [nom_du_fichier] donner un nom pour sauvegarder ce fichier\n Récapitulation :\[Oui-Non-nom_du_nouveau_fichier]?\n";
      
    chomp($respond = <STDIN>);
      
    if($respond =~ /^o|oui/i) {
        
    print "$filename\n";
        
    &ajout_lnk($filename);
        
    open FO, ">$filename" or die "Ouverture impossible $!";
        
    print FO @contenu;
        
    close FO or die "fermeture impossible $!";
        
    # placer ici le moyen de copier $filename dans jrnl_perso et effacer trav_date ($filtmp)
        
    # $newdir = "$dir\/jrnl_perso\/";
      
    }
      
    elsif ($respond =~ /^n|non/i) {
        
    $filetmp = "$dir_journal\/" . "trav_" . "$ma_date" . "\.log";
        
    print "Votre travail a été sauver dans $filetmp\n";
        
    #-----ajout a journal.html---
        
    &ajout_lnk($filetmp);
      
    }
      
    else {
        
    if ($respond !~ /^"\.\/\w"|\w{4,}/) {
          
    s/\.\/()/$1/;
          
    $respond = "$dir" . "\/" . "$respond";
        
    }
        
    while (-e $respond) {
          
    print "attention, un fichier existe déjà sous ce nom de fichier,\nVeuillez changer de nom\n";
          
    chomp ($respond = <STDIN>);
        
    }
        
    $filename = $respond;
        
    #-----ajout a journal.html---
        
    &ajout_lnk($filetmp);
      
    }
      
    &menu;
    }

    sub sauv {
      
    system ('clear');
      
    print "\nentrez un nom pour votre travail\n";
      
    #-----ici tronquer le debut du fichier deux lignes pour ce rappeller
      
    #---plutot que @ (voir sysread ou troncate ou (seek et pop)
      
    print "\n" . @contenu . "\nPour ce travail\nnom du fichier:\t";
      
    $filename = <STDIN>;
      
    chomp $filename;
      
    if (path1 ne "") {
        
    print "voulez vous le sauver sur $path1\/$filename\n";
        
    $yes = <STDIN>;
        
    chomp $yes;
        
    if($yes =~ /^y|o/i) {
          
    $filename = "$path1" . "\/$filename";
        
    }
        
    else {
          
    $filename = "$dir_journal" . "\/$filename";
        
    }
      
    }
      
    # controler si un fichier n'a pas le meme nom
      
    if (-e $filename) {
        
    ($file, $ext)= split(/./, $filename);
        
    $filename = "$file" . "_" . "$ma_date" . "\.$ext";
        
    $filetmp = $filename;
        
    #-----ajout a journal.html---
        
    &ajout_lnk($filetmp);
        
    print "Votre travail sera sauvegarder sous $filename\n";
        
    open(FO, ">$filename") or die "Ouverture impossible $!";
        
    print "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n";
        
    print FO @contenu;
        
        
    close FO || die "fermeture impossible $!";
        
    $travail--;
        
    &menu;
      
    }
      
    else {
        
    print "Votre travail sera sauvegarder sous $filename\n";
        
    $filetmp = $filename;
        
    #-----ajout a journal.html---
        
    &ajout_lnk($filetmp);
        
    open(F, ">$filetmp") or die "Ouverture impossible $!";
        
    print F "$x\nEdite automatiquement par alEd le: $dt --\>\n$x\n\n";
        
    print F @contenu;
        
    close F || die "fermeture impossible $!";
        
    $travail--;
      
    }
      
    &menu;
    }

    sub lequel {
      
    #--- permettre l'ouverture d'un fichier sans le path pour HOME et ~/journal
      
    print "cacaouette\n";
      
    if ($filename !~ /^\//) {
        
    if (!( -e "$dir\/$filename")) {
          
    $filename = "$dir_journal" . "\/$filename";
        
    }
        
    else {
          
    $filename = "$dir" . "\/$filename";
        
    }
      
    }
      
    while (!(-e $filename)) {
        
    print "Quel fichier desirez vous ouvrir:\n";
        
    $filename = <STDIN>;
        
    chomp $filename;
      
    }

    }

    sub eb_sauve_alors {
      
    print "Sauvegarder votre travail d'abord\n";
      
    &sauv;
    }

     
    # Ce petit programme est une petite merveille 
     
    # alain Adelmar, 12 Mai 2003, aadelmar@free.fr


    sub ajout_lnk($filetmp) {
      
    my($filetmp)= @_;
      
    @rep = split(/\//, $filetmp);
      
    $file = pop @rep;
      
    $path1 = join('/', @rep);
      
      
    $ajout_jrnl = "<A HREF=\"$filetmp\"\>$filetmp<\/A\>\t =\>\t <font color=\"#666666\"\><I\>fait le<\/I\> $dt<\/font color=\"#666666\"\>\n<BR\>";
      
    $recap_date = "<A HREF=\"$filetmp\"\>$file<\/A\>\t" . '.....' . "Date : $datos\n<BR\>";
     
    # $somedate = "<A NAME=\"sum_date\"";

      
    open OLD, "<$old" or die "Ouverture de $old impossible $!";
      
    @contenu_jrnl = <OLD>;
      
    close OLD || die "Fermeture de $old impossible $!";

      
    #open NEW, ">$new" or die "Ouverture de $journal impossible $!";

      
    if ($arg eq "p") {
        
    $mode = "<A NAME=\"end_puuu\"\><BR\>";
        
    &coupe;
      
    }
      
    elsif ($arg eq "g") {
        
    $mode = "<A NAME=\"end_guuu\"\><BR\>";
        
    &coupe;
      
    }
      
    else {
        
    $mode = "<A NAME=\"end_duuu\"\><BR\>";
        
    &coupe;
      
    }

      
    #  print NEW "@debut\n";
      
    #  print NEW "$ajout_jrnl\n";
      
    #  print NEW "@interm\n";
      
    #  print NEW "$recap_date\n";
      
    #  print NEW "@somd\n";

      
    #  close NEW || die "Fermeture de $journal impossible $!";

      
    rename($old, $bak) or die "can't rename $old to $bak: $!";
      
    rename($new, $old) or die "can't rename $new to $old: $!";
    }

    #--------------si nouveau au dessus pas marcher oter et uncommente dessous

    #system ('clear'); 
    # remet une page blanche au shell.

    sub lbling {
      
    $rem = "# remd: $filename";
      
    $ajout = "\n$rem\n#== ajout a $file éffectué par alEd le :$dt ==\>\n";
       
    push @contenu, $ajout;
    }

    sub traite_mode($arg) {
      
    $arg = $_;
      
    $arg =~ s/-//;
      
    print "votre choix $arg\n";
    }

    #--------ici création du fichier journal. html
    sub init_journal {  
      
    unless (-e $dir_journal) {
        
    mkdir $dir_journal || die "Ouverture du repertoire $journal impossible $!";
      
    }

      
    $lbl = "<HTML\>\n<HEAD\>\n<TITLE\>Journal des modifications</TITLE\>\n\t<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text\/html\; charset=ISO\-8859\-1\"\>\n\t<LINK REV=\"made\" HREF=\"mailto:aadelmar\@free.fr\"\>\n</HEAD\>\n<BODY\>\n<A NAME=\"_top\"\><H1\><U\><CENTER\>Journal &eacute;dit&eacute; par alEd</CENTER\><\/U\><\/H1\>\n<BR\><hr WIDTH=\"100%\"\>Ce journal a &eacute;dit&eacute; automatiquement par <I\><B\>jago<\/I\><\/B\> (<I\>le script Perl<\/I\>). Il vous permet d\'acc&eacuteder &aeacute tout les documents &eacute;dit&eacute;s.\n<BR\>Qui ce veux &ecirc;tre un &eacute;diteur style \"<I\>carnet de note<\/I\>\" ou \"<I\>pense b&ecirc;te<\/I\>\".<BR\>Grace à son jeu d\'options (<B\>-p<\/B\> (pour programmation), <B\>-g<\/B\> (pour gestion) et <B\>-d<\/B\> (pour divers (<I\>par defaut<\/I\>))) il classe vos notes par rubriques suivant <a href=\"#prog\"\>Programmation<\/a\> | <a href=\"#gest\"\>Gestion<\/a\> | <a href=\"#div\"\>Divers<\/a\> que vous trouverez ci-dessous.<BR\>usage : alEd [-pgd] [--h, --heure] [nom_de_fichier]<BR\>\t<U\><BLOCKQUOTE\>Made by <A HREF=\"mailto:aadelmar\@free.fr\"\>Alain Adelmar<\/A\><\/BLOCKQUOTE\><\/U\>\n" . "\tdebuter le [$dt]<BR\>\n\tdernier acc&eacute;s le [" . "$dt]\n";
      
    $lbl_p = "\n<hr WIDTH=\"100%\"\>\n<A NAME=\"prog\"\><H3\>Programmation :<\/H3\>\n<BR\>\n<BLOCKQUOTE\>\n<A NAME=\"end_puuu\"\><BR\>\n";
      
    $lbl_g = "<\/BLOCKQUOTE\>\n<hr WIDTH=\"100%\"\>\n<A NAME=\"gest\"\><H3\>Gestion de fichiers :<\/H3\>\n<BR\>\n<BLOCKQUOTE\>\n<A NAME=\"end_guuu\"\><BR\>\n";
      
    $lbl_d = "<\/BLOCKQUOTE\>\n<hr WIDTH=\"100%\"\>\n<A NAME=\"div\"\><H3\>Divers :<\/H3\>\n<BR\>\n<BLOCKQUOTE\>\n<A NAME=\"end_duuu\"\><BR\>\n";
      
    $lbl_down = "<\/BLOCKQUOTE\>\n<hr WIDTH=\"100%\"\>\n<A NAME=\"recap\"\><H3\>récapitulatif par date :</H3\>\n<BR\>\n<A NAME=\"sum_date\"\><BR\>\n<hr WIDTH=\"100%\"\>aal<BR\>\n</BODY\>\n<\/HTML\>\n"; 
      
    open FJ, ">$journal" or die "Ouverture de $journal impossible $!";
      
    print FJ "$lbl\n$lbl_p\n$lbl_g\n$lbl_d\n$lbl_down\n";
      
    close FJ || die "Fermeture de $journal impossible $!";
    }

    sub coupe {
      
    $dac = "\tdernier accés le \[(..)\]\n";
      
    foreach $l(@contenu_jrnl) {
        
    if ($l =~ /$dac/) {
          
    print "$x you win \n";
          
    $ld = "\tdernier acc" . '&eacute;s le [' . "$dt\]\n";
    #      s/"$l"/"$ld"/;   #ou $l = $ld;
          
    push @debut, $ld
        
    }
        
    if ($deb == 0) {
          
    if ($l =~ /$mode/) {
       
    $deb++;
          
    }
          
    push @debut, $l;
        
    }
        
    else {
          
    if ($prems == 0) {
       
    if ($l =~ /$somedate/) {
         
    push @interm, $l;
         
    $prems++;
       
    }
       
    else {
         
    push @interm, $l;
       
    }
          
    }
          
    else {
       
    push @somd, $l;
          
    }
        
    }
      
    }

      
    open NEW, ">$new" or die "Ouverture de $journal impossible $!";
      
    print NEW "@debut\n";
      
    print NEW "$ajout_jrnl\n";
      
    print NEW "@interm\n";
      
    print NEW "$recap_date\n";
      
    print NEW "@somd\n";
      
    close NEW || die "Fermeture de $journal impossible $!";

    }

    #-----------vérifier si ~/journal/journal.html existe sinon le créer
    sub verifj {
      
    $dir_journal = "$dir" . "\/jrnl_perso";
      
    $journal = "$dir\/jrnl_perso\/journal.html";
      
    $old = $journal;
      
    $new = "$journal.tmp.$$";
      
    $bak = "$journal.bak";
      
      
    if (!(-e $journal)) {
        
    &init_journal;
      
    }
    }

    sub watarg {
      
    print "votre travail ce classera dans:\n[p] pour programmation\n[g] pour gestion de fichier\n[d] pour divers (qui est la mention par defaut)\n";
      
    chomp ($arg = <STDIN>);
    }

    # ce merveilleux script vous à été offert par alain Adelmar (celui qui fait du Perl en se curant le nez);
    END;

    Al script
    # Adelmar Alain l'homme qui reste égal à lui même, et vice-versa.

    précédant | suivant | sommaire