Parcourir la source

Add command to list commands from rc file

 - Update CHANGELOG, TODO
 - Add module for this feature
 - Update command line interface
Leo il y a 10 ans
Parent
commit
0a68aa1d4c
4 fichiers modifiés avec 62 ajouts et 4 suppressions
  1. 1 0
      CHANGELOG.md
  2. 2 3
      TODO.md
  3. 50 0
      src/list_rc.ml
  4. 9 1
      src/oclaunch.ml

+ 1 - 0
CHANGELOG.md

@@ -3,6 +3,7 @@
 ## v0.2.0
  + Add new command line option.
    + “-r” can now take a number to start from.
+   + “-l” list commands of the configuration file with its number.
  + Improve some messages.
  + New tmp file
    + Biniou format instead of JSON

+ 2 - 3
TODO.md

@@ -11,7 +11,6 @@
 
 ### Commands
  + Add command to modify configuration file
- + Allow to list all available commands
 
 ### Configuration value
  + Make displaying command before launching configurable
@@ -23,14 +22,14 @@
     + easy : one entry on each call
     + confirm : ask before launching each entry
     + proportionate : launch by percent.
- + Relaunch the terminal detached after (possible ?)
+ + Relaunch the terminal detached after (possible -> use $TERM &; it resists to
+   program exit)
  + Allow to tag entry and do things according to tags
  + Display text before and after, maybe in color (For example
    "================================================")
 
 ### Misc
  + Documentation ;-)
- + Reuse atdgen for tmp file
  + Handle errors in reading rc file
  + Add build info in binary for 0install
 

+ 50 - 0
src/list_rc.ml

@@ -0,0 +1,50 @@
+(******************************************************************************)
+(* Copyright © Joly Clément, 2014                                             *)
+(*                                                                            *)
+(*  leowzukw@vmail.me                                                         *)
+(*                                                                            *)
+(*  Ce logiciel est un programme informatique servant à exécuter              *)
+(*  automatiquement des programmes à l'ouverture du terminal.                 *)
+(*                                                                            *)
+(*  Ce logiciel est régi par la licence CeCILL soumise au droit français et   *)
+(*  respectant les principes de diffusion des logiciels libres. Vous pouvez   *)
+(*  utiliser, modifier et/ou redistribuer ce programme sous les conditions    *)
+(*  de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA    *)
+(*  sur le site "http://www.cecill.info".                                     *)
+(*                                                                            *)
+(*  En contrepartie de l'accessibilité au code source et des droits de copie, *)
+(*  de modification et de redistribution accordés par cette licence, il n'est *)
+(*  offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons, *)
+(*  seule une responsabilité restreinte pèse sur l'auteur du programme,  le   *)
+(*  titulaire des droits patrimoniaux et les concédants successifs.           *)
+(*                                                                            *)
+(*  A cet égard  l'attention de l'utilisateur est attirée sur les risques     *)
+(*  associés au chargement,  à l'utilisation,  à la modification et/ou au     *)
+(*  développement et à la reproduction du logiciel par l'utilisateur étant    *)
+(*  donné sa spécificité de logiciel libre, qui peut le rendre complexe à     *)
+(*  manipuler et qui le réserve donc à des développeurs et des professionnels *)
+(*  avertis possédant  des  connaissances  informatiques approfondies.  Les   *)
+(*  utilisateurs sont donc invités à charger  et  tester  l'adéquation  du    *)
+(*  logiciel à leurs besoins dans des conditions permettant d'assurer la      *)
+(*  sécurité de leurs systèmes et ou de leurs données et, plus généralement,  *)
+(*  à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.        *)
+(*                                                                            *)
+(*  Le fait que vous puissiez accéder à cet en-tête signifie que vous avez    *)
+(*  pris connaissance de la licence CeCILL, et que vous en avez accepté les   *)
+(*  termes.                                                                   *)
+(******************************************************************************)
+
+open Core.Std;;
+
+(* This modules contains function to list the content of the rc file *)
+
+(* Display the command with its number *)
+let disp_cmd_num number command =
+    printf "%i: %s\n" number command
+;;
+
+(* Function which list *)
+let run ~(rc:File_com.t) =
+    let open File_com in
+    List.iteri rc.progs ~f:disp_cmd_num
+;;

+ 9 - 1
src/oclaunch.ml

@@ -56,12 +56,20 @@ let commands =
     ~readme:(fun () -> "See https://gitlab.com/WzukW/oclaunch for help.")
     (* TODO if number is out of the mist, return error message *)
     Command.Spec.(empty
+    (* Flag to reset tmp file *)
     +> flag "-r" no_arg
         ~aliases:["-reset-tmp" ; "--reset-tmp"]
         ~doc:"Reinitialises launches by setting a new number in temporal file.
         If nothing is given, reinitialises to 0 and delete tmp file."
+    (* Flag to list each commands with its number *)
+    +> flag "-l" no_arg
+    ~aliases:["-list" ; "--list"]
+    ~doc:"Print a list of all command with its number. Useful to launch with number"
     +> anon (maybe ("Command number" %: int)))
-    (fun reset_tmp num_cmd () ->
+    (fun reset_tmp list_commands num_cmd () ->
+       (* First try to list *)
+       if list_commands then List_rc.run ~rc:rc_content
+       else
        match reset_tmp with
          | true -> (* Reset temp file, if nothing is given, put 0 value *)
                  Tmp_file.reset (Option.value ~default:0 num_cmd)