g.manual.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #!/usr/bin/env python
  2. ############################################################################
  3. #
  4. # MODULE: g.manual
  5. # AUTHOR(S): Markus Neteler
  6. # Converted to Python by Glynn Clements
  7. # PURPOSE: Display the HTML/MAN pages
  8. # COPYRIGHT: (C) 2003,2008 by the GRASS Development Team
  9. #
  10. # This program is free software under the GNU General Public
  11. # License (>=v2). Read the file COPYING that comes with GRASS
  12. # for details.
  13. #
  14. #############################################################################
  15. #%Module
  16. #% description: Display the HTML man pages of GRASS
  17. #% keywords: general, manual, help
  18. #%End
  19. #%flag
  20. #% key: i
  21. #% description: Display index
  22. #%End
  23. #%flag
  24. #% key: m
  25. #% description: Display as MAN text page instead of HTML page in browser
  26. #%End
  27. #%option
  28. #% key: entry
  29. #% type: string
  30. #% description: Manual entry to be displayed
  31. #% required : no
  32. #%End
  33. import sys
  34. import os
  35. import grass
  36. def start_browser(entry):
  37. path = os.path.join(gisbase, 'docs', 'html', entry + '.html')
  38. if not os.path.exists(path):
  39. grass.fatal("No HTML manual page entry for <%s>." % entry)
  40. verbose = os.getenv("GRASS_VERBOSE")
  41. if not verbose or int(verbose) > 1:
  42. grass.message("Starting browser <%s> for module %s..." % (browser_name, entry))
  43. os.execlp(browser, browser_name, "file://%s/docs/html/%s.html" % (gisbase, entry))
  44. grass.fatal("Error starting browser <%s> for HTML file <%s>" % (browser, entry))
  45. def start_man(entry):
  46. path = os.path.join(gisbase, 'man', 'man1', entry + '.1')
  47. for ext in ['', '.gz', '.bz2']:
  48. if os.path.exists(path + ext):
  49. os.execlp('man', 'man', path + ext)
  50. grass.fatal("Error starting 'man' for <%s>" % path)
  51. grass.fatal("No manual page entry for <%s>." % entry)
  52. def main():
  53. global gisbase, browser, browser_name
  54. index = flags['i']
  55. manual = flags['m']
  56. entry = options['entry']
  57. gisbase = os.environ['GISBASE']
  58. browser = os.getenv('GRASS_HTML_BROWSER')
  59. if "html_browser_mac.sh" in browser:
  60. #hack for MacOSX:
  61. browser_name = os.getenv('GRASS_HTML_BROWSER_MACOSX','..').split('.')[2]
  62. elif os.getenv('OSTYPE') == "cygwin":
  63. #hack for Cygwin:
  64. browser_name = grass.basename(browser, 'exe')
  65. else:
  66. browser_name = grass.basename(browser)
  67. #keep order!
  68. #first test for index...
  69. if index:
  70. if manual:
  71. start_man('index')
  72. else:
  73. start_browser('index')
  74. sys.exit(0)
  75. #... then for help parameter:
  76. if not entry:
  77. grass.run_command('g.manual', '--help')
  78. sys.exit(0)
  79. if manual:
  80. start_man(entry)
  81. else:
  82. start_browser(entry)
  83. if __name__ == "__main__":
  84. options, flags = grass.parser()
  85. main()