001    // Copyright (c) 2001 Hursh Jain (http://www.mollypages.org) 
002    // The Molly framework is freely distributable under the terms of an
003    // MIT-style license. For details, see the molly pages web site at:
004    // http://www.mollypages.org/. Use, modify, have fun !
005    
006    package fc.util;
007    
008    import java.util.*;
009    import fc.io.*;
010    
011    /**
012    Prints a welcome message along with some class loading and env. information.
013    
014    If this runs properly, then you have molly!
015    */
016    public final class Version 
017    {
018    //these are/should be filled in by the build (bash) script when this is copied to the build area
019    public static final String build_version = "1.0.27";
020    public static final String build_time  = "2020-05-13 01:48";
021    
022    public static void main(String args[]) 
023      {
024      Args myargs = new Args(args);
025      myargs.setUsage("java fc.util.Version [-full]");
026      boolean full = myargs.flagExists("full");
027      
028      System.out.println("----------------------------http://mollypages.org -----------------------");
029      System.out.println("Welcome to molly - punching your ticket to happiness!");
030      System.out.println("This class loaded from: " + ClassUtil.getLoadedFromPath(Version.class));
031      if (! build_version.startsWith("REPLACE_")) {
032        System.out.println("Framework version: " + build_version + "; source compiled at: " + build_time);
033        }
034      System.out.println("-------------------------------------------------------------------------");
035      System.out.println("Use the -full flag to print out all the Java environment variables!");
036      
037      if (full) {
038        printSystemInfo();
039        }
040      }
041    
042    /**
043    Prints system env info to the console
044    */
045    static void printSystemInfo() 
046      { 
047      System.out.println();
048      System.out.println("Environment information");
049      TablePrinter.PrintConfig config = new TablePrinter.PrintConfig();
050      config.setCellWidthForColumn(0, 34);
051      config.setCellWidthForColumn(1, 61);
052      TablePrinter printer = new TablePrinter(2, System.out, config);
053      config.setHeader(new String[] {"Key", "Value"});
054    
055      printer.startTable();
056      
057      Properties p = System.getProperties();
058      Enumeration e = p.propertyNames();
059      while (e.hasMoreElements()) {
060        printer.startRow();
061        String name = (String) e.nextElement();   
062        printer.printCell(name);
063        printer.printCell(StringUtil.viewableAscii(p.getProperty(name)));
064        printer.endRow(); 
065        } 
066        
067      printer.endTable();
068      }
069    
070    }