PoshCode Archive  Hex Artifact Content

Artifact 2221eec54cda505ecb9cf28ab8beafb844b34a48dc40995da5bf2c9a3734cebb:

  • File WhatIs.ps1 — part of check-in [dc05543776] at 2018-06-10 13:42:18 on branch trunk — UNIX which and whatis tools analog. (user: greg zakharov size: 1231)

0000: 23 20 65 6e 63 6f 64 69 6e 67 3a 20 61 73 63 69  # encoding: asci
0010: 69 0d 0a 23 20 61 70 69 3a 20 63 73 68 61 72 70  i..# api: csharp
0020: 0d 0a 23 20 74 69 74 6c 65 3a 20 57 68 61 74 49  ..# title: WhatI
0030: 73 0d 0a 23 20 64 65 73 63 72 69 70 74 69 6f 6e  s..# description
0040: 3a 20 55 4e 49 58 20 77 68 69 63 68 20 61 6e 64  : UNIX which and
0050: 20 77 68 61 74 69 73 20 74 6f 6f 6c 73 20 61 6e   whatis tools an
0060: 61 6c 6f 67 2e 0d 0a 23 20 76 65 72 73 69 6f 6e  alog...# version
0070: 3a 20 30 2e 31 0d 0a 23 20 74 79 70 65 3a 20 63  : 0.1..# type: c
0080: 6c 61 73 73 0d 0a 23 20 61 75 74 68 6f 72 3a 20  lass..# author: 
0090: 67 72 65 67 20 7a 61 6b 68 61 72 6f 76 0d 0a 23  greg zakharov..#
00a0: 20 6c 69 63 65 6e 73 65 3a 20 43 43 30 0d 0a 23   license: CC0..#
00b0: 20 78 2d 70 6f 73 68 63 6f 64 65 2d 69 64 3a 20   x-poshcode-id: 
00c0: 34 35 31 35 0d 0a 23 20 78 2d 61 72 63 68 69 76  4515..# x-archiv
00d0: 65 64 3a 20 32 30 31 33 2d 31 30 2d 31 36 54 32  ed: 2013-10-16T2
00e0: 30 3a 32 32 3a 35 38 0d 0a 23 20 78 2d 70 75 62  0:22:58..# x-pub
00f0: 6c 69 73 68 65 64 3a 20 32 30 31 33 2d 31 30 2d  lished: 2013-10-
0100: 31 30 54 31 36 3a 34 35 3a 30 30 0d 0a 23 0d 0a  10T16:45:00..#..
0110: 23 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 3b  #..using System;
0120: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 49  ..using System.I
0130: 4f 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d  O;..using System
0140: 2e 52 65 66 6c 65 63 74 69 6f 6e 3b 0d 0a 75 73  .Reflection;..us
0150: 69 6e 67 20 53 79 73 74 65 6d 2e 44 69 61 67 6e  ing System.Diagn
0160: 6f 73 74 69 63 73 3b 0d 0a 75 73 69 6e 67 20 53  ostics;..using S
0170: 79 73 74 65 6d 2e 47 6c 6f 62 61 6c 69 7a 61 74  ystem.Globalizat
0180: 69 6f 6e 3b 0d 0a 0d 0a 5b 61 73 73 65 6d 62 6c  ion;....[assembl
0190: 79 3a 20 41 73 73 65 6d 62 6c 79 56 65 72 73 69  y: AssemblyVersi
01a0: 6f 6e 28 22 32 2e 30 2e 30 2e 30 22 29 5d 0d 0a  on("2.0.0.0")]..
01b0: 0d 0a 6e 61 6d 65 73 70 61 63 65 20 57 68 61 74  ..namespace What
01c0: 49 73 54 6f 6f 6c 20 7b 0d 0a 20 20 69 6e 74 65  IsTool {..  inte
01d0: 72 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73  rnal sealed clas
01e0: 73 20 50 72 6f 67 72 61 6d 20 7b 0d 0a 20 20 20  s Program {..   
01f0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 5b 5d   static string[]
0200: 20 53 70 6c 69 74 56 61 72 69 61 62 6c 65 28 73   SplitVariable(s
0210: 74 72 69 6e 67 20 65 56 61 72 29 20 7b 0d 0a 20  tring eVar) {.. 
0220: 20 20 20 20 20 72 65 74 75 72 6e 20 45 6e 76 69       return Envi
0230: 72 6f 6e 6d 65 6e 74 2e 45 78 70 61 6e 64 45 6e  ronment.ExpandEn
0240: 76 69 72 6f 6e 6d 65 6e 74 56 61 72 69 61 62 6c  vironmentVariabl
0250: 65 73 28 65 56 61 72 29 2e 53 70 6c 69 74 28 6e  es(eVar).Split(n
0260: 65 77 20 43 68 61 72 5b 5d 20 7b 27 3b 27 7d 29  ew Char[] {';'})
0270: 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 0d 0a  ;..    }..    ..
0280: 20 20 20 20 73 74 61 74 69 63 20 76 6f 69 64 20      static void 
0290: 4d 61 69 6e 28 73 74 72 69 6e 67 5b 5d 20 61 72  Main(string[] ar
02a0: 67 73 29 20 7b 0d 0a 20 20 20 20 20 20 73 74 72  gs) {..      str
02b0: 69 6e 67 20 71 75 65 72 79 2c 20 64 65 73 63 3b  ing query, desc;
02c0: 0d 0a 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20  ..      ..      
02d0: 69 66 20 28 61 72 67 73 2e 4c 65 6e 67 74 68 20  if (args.Length 
02e0: 3d 3d 20 31 29 20 7b 0d 0a 20 20 20 20 20 20 20  == 1) {..       
02f0: 20 66 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67   foreach (string
0300: 20 70 61 74 68 20 69 6e 20 53 70 6c 69 74 56 61   path in SplitVa
0310: 72 69 61 62 6c 65 28 22 25 50 41 54 48 25 22 29  riable("%PATH%")
0320: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 66  ) {..          f
0330: 6f 72 65 61 63 68 20 28 73 74 72 69 6e 67 20 65  oreach (string e
0340: 78 74 20 69 6e 20 53 70 6c 69 74 56 61 72 69 61  xt in SplitVaria
0350: 62 6c 65 28 22 25 50 41 54 48 45 58 54 25 22 29  ble("%PATHEXT%")
0360: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
0370: 20 71 75 65 72 79 20 3d 20 70 61 74 68 20 2b 20   query = path + 
0380: 40 22 5c 22 20 2b 20 61 72 67 73 5b 30 5d 20 2b  @"\" + args[0] +
0390: 20 65 78 74 2e 54 6f 4c 6f 77 65 72 28 43 75 6c   ext.ToLower(Cul
03a0: 74 75 72 65 49 6e 66 6f 2e 43 75 72 72 65 6e 74  tureInfo.Current
03b0: 43 75 6c 74 75 72 65 29 3b 0d 0a 20 20 20 20 20  Culture);..     
03c0: 20 20 20 20 20 20 20 69 66 20 28 46 69 6c 65 2e         if (File.
03d0: 45 78 69 73 74 73 28 71 75 65 72 79 29 29 20 7b  Exists(query)) {
03e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
03f0: 64 65 73 63 20 3d 20 46 69 6c 65 56 65 72 73 69  desc = FileVersi
0400: 6f 6e 49 6e 66 6f 2e 47 65 74 56 65 72 73 69 6f  onInfo.GetVersio
0410: 6e 49 6e 66 6f 28 71 75 65 72 79 29 2e 46 69 6c  nInfo(query).Fil
0420: 65 44 65 73 63 72 69 70 74 69 6f 6e 3b 0d 0a 20  eDescription;.. 
0430: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e               Con
0440: 73 6f 6c 65 2e 57 72 69 74 65 4c 69 6e 65 28 22  sole.WriteLine("
0450: 7b 30 7d 20 2d 20 7b 31 7d 22 2c 20 71 75 65 72  {0} - {1}", quer
0460: 79 2c 20 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  y, String.IsNull
0470: 4f 72 45 6d 70 74 79 28 64 65 73 63 29 20 3f 20  OrEmpty(desc) ? 
0480: 22 6e 2f 61 22 20 3a 20 64 65 73 63 29 3b 0d 0a  "n/a" : desc);..
0490: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
04a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
04b0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 7d 0d 0a      }..      }..
04c0: 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 7d 0d 0a         }..  }..}..