home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / boot / i386 / root / usr / share / YaST2 / modules / Mode.ycp < prev    next >
Text File  |  2006-11-29  |  4KB  |  233 lines

  1. /**
  2.  * File:    modules/Mode.ycp
  3.  * Module:    yast2
  4.  * Summary:    Installation mode
  5.  * Authors:    Klaus Kaempf <kkaempf@suse.de>
  6.  * Flags:    Stable
  7.  *
  8.  * $Id: Mode.ycp 31242 2006-06-01 12:59:16Z locilka $
  9.  *
  10.  * Provide installation mode information.
  11.  * Mostly values from /etc/install.inf
  12.  * See linuxrc documentation for detailed docs about this.
  13.  */
  14.  
  15. {
  16.  
  17. module "Mode";
  18.  
  19. textdomain "base";
  20.  
  21. /**
  22.  * Current mode
  23.  */
  24. string _mode = nil;
  25.  
  26. /**
  27.  * Current testing mode
  28.  */
  29. string _test = nil;
  30.  
  31. /**
  32.  * Current UI mode
  33.  */
  34. string _ui = "dialog";
  35.  
  36.  
  37. /**
  38.  * initialize everything from command-line of y2base
  39.  */
  40. global void Initialize () {
  41.     _mode = "normal";
  42.     _test = "none";
  43.     integer arg_count = size(WFM::Args());
  44.     integer arg_no = 0;
  45.     while ( arg_no < arg_count )
  46.     {
  47.     // parsing for main mode
  48.     if (WFM::Args(arg_no) == "initial"
  49.         || WFM::Args(arg_no) == "continue"
  50.         || WFM::Args(arg_no) == "firstboot")
  51.         {
  52.         _mode = "installation";
  53.         }
  54.     // parsing for test mode
  55.     else if (WFM::Args(arg_no) == "test" || WFM::Args(arg_no) == "demo")
  56.     {
  57.         _test = "test";
  58.         y2warning("***** Test mode enabled *****");
  59.     }
  60.     else if (WFM::Args(arg_no) == "screenshots"  )
  61.     {
  62.         _test = "screenshot";
  63.         y2warning("***** Screen shot mode enabled *****");
  64.     }
  65.  
  66.     arg_no = arg_no + 1;
  67.     }
  68.  
  69.     // only use the /etc/install.inf agent when file is present
  70.     // and installation is being processed
  71.     // FIXME remove the part below and let it be set in clients
  72.     if (_mode == "installation"
  73.     && SCR::Read (.target.size, "/etc/install.inf") != -1)
  74.     {
  75.     boolean autoinst = SCR::Read (.etc.install_inf.AutoYaST) != nil;
  76.         if (autoinst)
  77.         {
  78.         _mode="autoinstallation";
  79.         }
  80.  
  81.     boolean repair = SCR::Read (.etc.install_inf.Repair ) != nil;
  82.         if (repair)
  83.         {
  84.         _mode ="repair";
  85.         }
  86.     }
  87. }
  88.  
  89. // main mode definitions
  90.  
  91. global string mode () {
  92.     if (_mode == nil)
  93.     {
  94.     Initialize ();
  95.     }
  96.  
  97.     return _mode;
  98. }
  99.  
  100. global void SetMode (string new_mode) {
  101.     if (_mode == nil)
  102.     Initialize ();
  103.  
  104.     if (! contains (
  105.     [ "installation", "update", "normal", "repair",
  106.         "autoinstallation", "autoinst_config",
  107.     ],
  108.     new_mode))
  109.     {
  110.     y2error ("Unknown mode %1", new_mode);
  111.     }
  112.  
  113.     y2milestone ("setting mode to %1", new_mode);
  114.     _mode = new_mode;
  115. }
  116.  
  117. // test mode definitions
  118.  
  119. global string testMode () {
  120.     if (_test == nil)
  121.     Initialize ();
  122.  
  123.     return _test;
  124. }
  125.  
  126. global void SetTest (string new_test_mode) {
  127.     if (_test == nil)
  128.     Initialize ();
  129.  
  130.     if (! contains (
  131.     [ "none", "test", "demo", "screenshot", "testsuite", ],
  132.     new_test_mode))
  133.     {
  134.     y2error ("Unknown test mode %1", new_test_mode);
  135.     }
  136.     _test = new_test_mode;
  137. }
  138.  
  139. // UI mode definitions
  140.  
  141. global string ui () {
  142.     return _ui;
  143. }
  144.  
  145. global void SetUI (string new_ui) {
  146.     if (! contains (
  147.     [ "commandline", "dialog", "none", ],
  148.     new_ui))
  149.     {
  150.     y2error ("Unknown UI mode %1", new_ui);
  151.     }
  152.     _ui = new_ui;
  153. }
  154.  
  155. // main mode wrappers
  156.  
  157. /**
  158.  * we're doing a fresh installation
  159.  */
  160. global boolean installation () {
  161.     return mode () == "installation" || mode () == "autoinstallation";
  162. }
  163.  
  164. /**
  165.  * we're doing an update
  166.  */
  167. global boolean update () {
  168.     return mode () == "update";
  169. }
  170.  
  171. /**
  172.  * normal, running system
  173.  */
  174. global boolean normal () {
  175.     return mode () == "normal";
  176. }
  177.  
  178. /**
  179.  * start repair module
  180.  */
  181. global boolean repair () {
  182.     return mode () == "repair";
  183. }
  184.  
  185. /**
  186.  * do auto-installation
  187.  */
  188. global boolean autoinst () {
  189.     return mode () == "autoinstallation";
  190. }
  191.  
  192. /**
  193.  * configuration for auto-installation, only in running system
  194.  */
  195. global boolean config () {
  196.     return mode () == "autoinst_config";
  197. }
  198.  
  199. // test mode wrappers
  200.  
  201. /**
  202.  * Just testing.
  203.  * See installation/Test-Scripts/doit*
  204.  */
  205. global boolean test () {
  206.     return testMode () == "test" || testMode () == "screenshot"
  207.         || testMode () == "testsuite";
  208. }
  209.  
  210. /**
  211.  * dump screens to /tmp. Implies @ref #demo .
  212.  * See installation/Test-Scripts/yast2-screen-shots*
  213.  */
  214. global boolean screen_shot () {
  215.     return testMode () == "screenshot";
  216. }
  217.  
  218. global boolean testsuite () {
  219.     return testMode () == "testsuite";
  220. }
  221.  
  222. // UI mode wrappers
  223.  
  224. /**
  225.  * we're running in command line interface
  226.  * @return true if command-line is running
  227.  */
  228. global boolean commandline () {
  229.     return ui () == "commandline";
  230. }
  231.  
  232. } // EOF
  233.