IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

ajout d'une option (par defaut)


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Points : 35
    Points
    35
    Par défaut ajout d'une option (par defaut)
    Bonjour,

    j'ai un script perl qui s'exécute sous forme d'une commande shell avec différentes options;

    j'essai en ce moment d'ajouter une option (--defaut) qui me servira à fixer un chemin vers un répertoire (depot), pour ne pas le réécrire à chaque fois que j'exécute le script;

    le probleme est que je n'ai pas trouvé le moyen de faire entrer l'option qu'une seul fois ( la tt premiere fois) et non pas chaque fois que le scirpt est utilisé;
    merci,

  2. #2
    Rédactrice

    Avatar de stoyak
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 408
    Points : 1 491
    Points
    1 491
    Par défaut
    Comment gères-tu les options ? Peux-tu nous montrer ton code ? utilises-tu GetOptions ?
    Cela demande du courage d'en tirer du plaisir
    Quand on n'a qu'un marteau, tous les problèmes ressemblent à un clou

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    oui j'utilise getoptions, mais je ne vois pas comment je pourrai rendre le path en dur et qu'il ne change que si on le change;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    GetOptions("depot=s" =>\$depot,"depot_path=s" =>\$url,"project_name=s" =>\$ProjNom,"project_path=s" =>\$ProjChemin,"import_project" =>\$AjoutProj,"checkout=s" =>\$CopTravail,"add=s" =>\$AjoutModif,"update" =>\$MiseAJour,"commit=s" =>\$Deployer,"revert" =>\$Annul,"delete=s" =>\$Supp, "help" =>\$help, "branche=s" =>\$branche, "merge" =>\$fusion);
    my $Project = SVN::Agent->load({ path => "$ProjChemin" });
     
    	if ($depot)
    	{	
    			mkpath ["$depot", 1];
    			my $dep = "svnadmin create";
    			system "$dep $url";
    			}
     
    	elsif($branche)
    	{
    		my $brch = "svn copy";
    		system "$brch file:///$url/$ProjNom/Trunk/. file:///$url/$ProjNom/Branches/$branche/ -m \" création d'une branche pour une nouvelle version \"";
    		}	
     
    	elsif($help)
    	{
    		printf "";
    		}
     
    	elsif ($AjoutProj)
    	{
    		my $imp = "svn import";
    		system "$imp $ProjChemin file:///$url/$ProjNom -m \"Import initial\"";
     
    		}
     
    	elsif($CopTravail)
    	{
    		if($CopTravail eq "")
    		{
    		my $cho = "svn checkout";
    		system "$cho file:///$url/$ProjNom";
    				}
    		my $cho = "svn checkout";
    		system "$cho file:///$url/$ProjNom/$CopTravail";
    	}
    je n'ai pas ajouté l'option (default) car je ne sais pas quoi mettre dedans;
    merci

    ceci est une partie du code, les options marche correctement,

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    GetOptions(
      "depot=s"        => \$depot,
      "depot_path=s"   => \$url,
      "project_name=s" => \$ProjNom,
      "project_path=s" => \$ProjChemin,
      "import_project" => \$AjoutProj,
      "checkout=s"     => \$CopTravail,
      "add=s"          => \$AjoutModif,
      "update"         => \$MiseAJour,
      "commit=s"       => \$Deployer,
      "revert"         => \$Annul,
      "delete=s"       => \$Supp,
      "help"           => \$help,
      "branche=s"      => \$branche,
      "merge"          => \$fusion,
      "default"        => \$default,
    );
    my $Project = SVN::Agent->load( { path => "$ProjChemin" } );
     
    if ( defined $default ) {
      # Tu définis tes variables
      $depot = "MON/DEPOT"
      $url   = "URL/DEPOT"
    }
    elsif ($depot) {
      mkpath [ "$depot", 1 ];
      my $dep = "svnadmin create";
      system "$dep $url";
    }
    tu rajoutes une option default et si elle est mentionnée, tu met en dur tes chemins.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    MERCI !

    je l'essai tous de suite, et je te reponds;

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    J'ai essayé le script donné par djibril, le resultat est:

    il ne lis pas la variable $url;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     if ( defined $default ) 
          {
            # définir tes variables
           $DepotPath = "$url";
     
           }
    ....
     my $SCO = "svn checkout";
          system "$SCO file:///$DepotPath/$comp_nom";

    resultat :

    createcomposite --default --depot_path home/irahal/Bureau/composants/ --name compo1 --component_name TOTO


    [B]svn: Le dépôt 'file:///1/TOTO' n'a pu être ouverte

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    C'est-à-dire ? Peux tu donner ton programme complet !

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    GetOptions (
        "default"               =>\$default,
        "depot_path"            =>\$url,
        "name=s"                =>\$monreprincipal,
        "component_name=s"      =>\$comp_nom,
        "prefix_component=s"    =>\$chemin,
        "description=s"         =>\$description,
        "author=s"              =>\$auteur,
        "help"                  =>\$help,
        "full"                  =>\$infra
        );    
     
    #****************************** check out des composants nécessaires & création du makefile **********************************
     
        mkpath ("$monreprincipal/",1); #  création du repertoire composite
     
     
    #***************chemin par defaut***************
    CHECK_OUT:
     
          if ( defined $default ) 
          {
            # définir les variables
           $DepotPath = "$url";
     
           }
    if($chemin)
         {
     
           chdir $monreprincipal || die ("Erreur chdir \n");
           my $SCO = "svn checkout";
           system "$SCO file:///$chemin/$comp_nom";
           chdir $points;
           }
     
          else 
         {
          chdir $monreprincipal || die ("Erreur chdir \n");
     
          my $SCO = "svn checkout";
          system "$SCO file:///$DepotPath/$comp_nom";
     
           chdir $points;
          }
    La commande :
    createcomposite --default --depot_path home/irahal/Bureau/composants/ --name compo1 --component_name TOTO

    Le resultat:
    svn: Impossible d'ouvrir une session ra_local pour l'URL
    svn: Le dépôt 'file:///1/TOTO' n'a pu être ouvert


    je ne vois pas pourquoi il affiche un "1" à la place du depot_path ($url) ??

  9. #9
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Tu as oublié le =s
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "depot_path=s"            =>\$url,
    Cela permet de dire à perl de s'attendre à une chaine de caractères et non un booléen.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    cette partie marche, merci;

    sauf que, j'ai exécuter la commande : createcomposite --default --depot_path home/irahal/Bureau/composants/ --name compo1 --component_name TOTO


    et sa marche mais, si j'execute à nouveau, la meme commande mais cette fois ci sans preciser le "depot_path" ($url) pour voir s'il a prise par default :

    createcomposite --name compo1 --component_name TATA

    le resultat:
    svn: Impossible d'ouvrir une session ra_local pour l'URL
    svn: Le dépôt 'file:///TATA' n'a pu être ouvert

    il ne prends pas le chemin en considération;

  11. #11
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Bah c'est logique , dans ton code, tu as mis ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( defined $default ) {
      # définir les variables
      $DepotPath = "$url";
    }
    $DepotPath prend pour valeur $url, donc forcément, si $url n'existe pas, comment veux tu que Perl le sache !
    Si tu veux définir une URL par défaut, il faut la mettre en dur dans ton programme comme je te l'avais mis dans mon programme ci-dessus que tu n'as pas lu .

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    #!/usr/bin/perl
    #===============================================================================
    # Author :
    # Date   :
    # Main   :
    #===============================================================================
    use Carp;
    use strict;
    use warnings;
     
    use vars qw($VERSION);
    $VERSION = '1.00';
     
    GetOptions(
      "depot=s"        => \$depot,
      "depot_path=s"   => \$url,
      "project_name=s" => \$ProjNom,
      "project_path=s" => \$ProjChemin,
      "import_project" => \$AjoutProj,
      "checkout=s"     => \$CopTravail,
      "add=s"          => \$AjoutModif,
      "update"         => \$MiseAJour,
      "commit=s"       => \$Deployer,
      "revert"         => \$Annul,
      "delete=s"       => \$Supp,
      "help"           => \$help,
      "branche=s"      => \$branche,
      "merge"          => \$fusion,
      "default"        => \$default,
    );
    my $Project = SVN::Agent->load( { path => $ProjChemin } );
     
    # Option --default
    if ( defined $default ) {
      # URL définie
      if ( defined $url ) {
        $DepotPath = $url;
      }
      # Tu définis tes variables en dur
      else {
        $DepotPath = 'URL/DEPOT';
      }
    }
    elsif ($depot) {
      mkpath [ "$depot", 1 ];
      system "svnadmin create $url";
    }
     
     
    elsif ($branche) {
      system 'svn copy ' 
        . "file:///$url/$ProjNom/Trunk/ "
        . "file:///$url/$ProjNom/Branches/$branche/ " 
        . '-m '
        . "\" création d'une branche pour une nouvelle version \"";
    }
     
    elsif ($help) {
      print "HELP";
    }
     
    elsif ($AjoutProj) {
      system "svn import $ProjChemin file:///$url/$ProjNom -m \"Import initial\"";
    }
    elsif ($CopTravail) {
      if ( $CopTravail eq '' ) {
        system "svn checkout file:///$url/$ProjNom";
      }
      system "svn checkout file:///$url/$ProjNom/$CopTravail";
    }
     
    __END__

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    okey,

    tant que c'est le responsable perl qui dit, de mettre en dur;
    alors je mettrai en dur;

    je l'avais fais, mais je voulais essayé qq chose pour que sa soit "automatique", en qq sorte;

    merci;

  13. #13
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Qu'entends-tu par automatique ? Peut-être qu'on a du mal à se comprendre.

    Le plus simple serait que tu décrives un exemple.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    automatique:

    un ingenieur veut stocker son projet dans un depot;

    il procede à des modification sur le projet et donc il doit mettre à jour la nouvelle version ds le depot;

    si, par exemple, j'utilise qu'un seul depot sur une longue periode, je ne vois pas l'utilité de réécrire à chaque fois "depot_path" pour indiquer le chemin qui mene au depot, surtout si je vais utilisé le meme depot plusieurs fois

    pour cela, j'avais pensé à le mettre en dur (mais le mettre en dur c'est toucher au script lui meme),

    hors je voulais contourné cela par une option "default" qui permettra de "sauvegarder le chemin", et ce dernier sera changer que si je change le path;

    voila;

  15. #15
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Dans ce cas, tu peux sauvegarder ce chemin dans un fichier.
    Si l'utilisateur utilise l'option depot_path, le chemin est sauvegardé dans le fichier. Si l'utilisateur utilise l'option default, le script va chercher le chemin dans le fichier et s'il n'existe pas, averti l'utilisateur.

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 72
    Points : 35
    Points
    35
    Par défaut
    je l'ai fais en utilisant store et retrieve;
    sa marche tres bien,
    merci

  17. #17
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/10/2013, 00h05
  2. Réponses: 5
    Dernier message: 17/07/2011, 07h51
  3. Ajout d'une colonne avec une valeur par defaut
    Par Rumeurs dans le forum PL/SQL
    Réponses: 3
    Dernier message: 13/07/2009, 18h06
  4. Ajouter une valeur par defaut à un champ
    Par smooncef dans le forum Informix
    Réponses: 9
    Dernier message: 15/04/2008, 13h40
  5. [Property] Comment déclarer une chaine par defaut ?
    Par Clorish dans le forum Composants VCL
    Réponses: 8
    Dernier message: 07/09/2004, 22h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo