squelette de script ruby pour command line
Depuis que je fais de la programmation Ruby, je n’arrête pas d’apprendre plein de petits trucs vraiment intéressants. Propulsé par un désir de partager, voici un « squelette » de script que je réutilise à chaque fois que l’occasion se présente. Je n’oserais jamais prendre le mérite d’avoir bâti ce script. J’ai pris le du code sur le site suivant. J’ai changé quelques parties, mais j’ai surtout fait la version française. Si vous avez du crédit à donner en utilisant le script, donnez-le au développeur original.
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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | #!/usr/bin/env ruby # == Synopsis # TODO: Entrer la description de l'application ou du script. # # == Examples # TODO: Cette commande fait... # ruby_cl_skeleton foo.txt # # Autres exemples: # ruby_cl_skeleton -q bar.doc # ruby_cl_skeleton --verbose foo.html # # == Usage # ruby_cl_skeleton [options] source_file # # For help use: ruby_cl_skeleton -h # # == Options # -h, --help Affiche l'aide # -v, --version Affiche la version courante # -q, --quiet Affiche le minimum possible, surpasse verbose # -V, --verbose Affiche détaillé # TODO: Ajouter les options que vous avez besoin # # == Author # Votre_nom # # == Copyright # Copyright (c) 2007 YourName. Licensed under the MIT License: # http://www.opensource.org/licenses/mit-license.php # TODO: remplacer toute les mentions ruby_cl_skeleton avec le nom de votre applicatoin # TODO: Remplacer Votre_nom avec votre vrai nom # TODO: Mettre à jour le Synopsis, Examples, etc # TODO: Changer la license si nécessaire require 'optparse' require 'rdoc/usage' require 'ostruct' require 'date' class App VERSION= '0.0.1' attr_reader :options def initialize(arguments, stdin) @arguments = arguments @stdin = stdin # On affecte les valeurs par défaut @options = OpenStruct.new @options.verbose = false @options.quiet = false #TODO: - Si vous avez d'autre option(s) vous devez les initialiser içi end # Parse options, check arguments, then process the command def run if parsed_options? && arguments_valid? puts "Start at #{DateTime.now}\n\n" if @options.verbose output_options if @options.verbose # [Optional] process_arguments process_command puts "\nFinished at #{DateTime.now}" if @options.verbose else output_usage end end protected def parsed_options? # Specify options opts = OptionParser.new opts.on('-v', '--version') { output_version ; exit 0 } opts.on('-h', '--help') { output_help } opts.on('-V', '--verbose') { @options.verbose = true } opts.on('-q', '--quiet') { @options.quiet = true } # TO DO - add additional options opts.parse!(@arguments) rescue return false process_options true end # Performs post-parse processing on options def process_options @options.verbose = false if @options.quiet end def output_options puts "Options:\n" @options.marshal_dump.each do |name, val| puts " #{name} = #{val}" end end # True if required arguments were provided def arguments_valid? # TO DO - implement your real logic here true if @arguments.length == 1 end # Setup the arguments def process_arguments # TO DO - place in local vars, etc end def output_help output_version RDoc::usage() #exits app end def output_usage RDoc::usage('usage') # gets usage from comments above end def output_version puts "#{File.basename(__FILE__)} version #{VERSION}" end def process_command # TO DO - do whatever this app does #process_standard_input # [Optional] end def process_standard_input input = @stdin.read # TO DO - process input # [Optional] # @stdin.each do |line| # # TO DO - process each line #end end end # Lance le script app = App.new(ARGV, STDIN) app.run |
