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 / clients / bootloader.ycp < prev    next >
Text File  |  2006-11-29  |  7KB  |  269 lines

  1. /**
  2.  * File:
  3.  *      bootloader.ycp
  4.  *
  5.  * Module:
  6.  *      Bootloader installation and configuration
  7.  *
  8.  * Summary:
  9.  *      Main file of bootloader configuration
  10.  *
  11.  * Authors:
  12.  *      Jiri Srain <jsrain@suse.cz>
  13.  *
  14.  * $Id: bootloader.ycp 24999 2005-08-17 11:15:06Z jsrain $
  15.  *
  16.  */
  17. {
  18.     textdomain "bootloader";
  19.     import "BootCommon";
  20.     import "Bootloader";
  21.     import "CommandLine";
  22.     import "Mode";
  23.     import "RichText";
  24.  
  25.     include "bootloader/routines/wizards.ycp";
  26.  
  27. // --------------------------------------------------------------------------
  28. // --------------------------------- cmd-line handlers
  29.  
  30.     /**
  31.       * CommandLine handler for running GUI
  32.       * @return boolean true if settings were saved
  33.       */
  34.     define boolean GuiHandler () ``{
  35.         symbol ret = nil;
  36.     ret = BootloaderSequence ();
  37.  
  38.         if (ret == `abort || ret == `back || ret == `nil)
  39.             return false;
  40.         return true;
  41.     }
  42.  
  43.     /**
  44.      * Print summary of basic options
  45.      * @param options a list of parameters passed as args
  46.      * @return boolean false
  47.      */
  48.     define boolean BootloaderSummaryHandler (map options ) ``{
  49.         CommandLine::Print (RichText::Rich2Plain(
  50.             "<br>"+mergestring (Bootloader::Summary (), "<br>")));
  51.         return false; // do not call Write...
  52.     }
  53.  
  54.     /**
  55.      * Modify the boot laoder section
  56.      * @param section string the section name
  57.      * @param key string the key to modify
  58.      * @param value string the value to set
  59.      * @return boolean true on success
  60.      */
  61.     define boolean BootloaderModifySection (string section,
  62.     string key, string value)
  63.     ``{
  64.     if (section == nil)
  65.     {
  66.         BootCommon::globals[key] = value;
  67.         return true;
  68.     }
  69.     else
  70.     {
  71.         integer index = BootCommon::getSectionIndex (section);
  72.         if (index != nil)
  73.         {
  74.         BootCommon::sections[index, key] = value;
  75.         return true;
  76.         }
  77.         else
  78.         {
  79.         // command line error report, %1 is section name
  80.         CommandLine::Print (sformat (_("Section %1 not found."),
  81.             section));
  82.         return false;
  83.         }
  84.     }
  85.     return false;
  86.  
  87.  
  88.     }
  89.  
  90.     /**
  91.      * Set specified option in specified section
  92.      * @param options a list of parameters passed as args
  93.      * @return boolean true on success
  94.      */
  95.     define boolean BootloaderSetHandler (map options) ``{
  96.     string section = (string)(options["section"]:nil);
  97.     string option = (string)(options["option"]:nil);
  98.     any value = options["value"]:nil;
  99.     if (value == nil)
  100.     {
  101.         // command line error report
  102.         CommandLine::Print (_("Value was not specified."));
  103.         return false;
  104.     }
  105.     return BootloaderModifySection (section, option, (string)value);
  106.     }
  107.  
  108.     /**
  109.      * Delete specified option in specified section
  110.      * @param options a list of parameters passed as args
  111.      * @return boolean true on success
  112.      */
  113.     define boolean BootloaderDeleteHandler (map options) ``{
  114.     string section = (string)(options["section"]:nil);
  115.     if (! haskey (options, "option"))
  116.     {
  117.         integer index = BootCommon::getSectionIndex (section);
  118.         if (index == nil)
  119.         {
  120.         // command line error report, %1 is section name
  121.         CommandLine::Print (sformat (_("Section %1 not found."),
  122.             section));
  123.         return false;
  124.         }
  125.         BootCommon::sections[index] = nil;
  126.         BootCommon::sections = filter (map<string,any> s, BootCommon::sections, ``(
  127.         s != nil
  128.         ));
  129.         return true;
  130.     }
  131.     string option = (string)(options["option"]:nil);
  132.     return BootloaderModifySection (section, option, nil);
  133.     }
  134.  
  135.     /**
  136.      * Add a new bootloader section with specified name
  137.      * @param options a list of parameters passed as args
  138.      * @return boolean true on success
  139.      */
  140.     define boolean BootloaderAddHandler (map options) ``{
  141.     string section = (string)(options["section"]:nil);
  142.     if (section == nil)
  143.     {
  144.         // command line error report
  145.         CommandLine::Print (_("Section name must be specified."));
  146.         return false;
  147.     }
  148.     BootCommon::sections = add (BootCommon::sections,
  149.         $[
  150.         "name" : section
  151.         ]);
  152.     }
  153.  
  154.     /**
  155.      * Print the value of specified option of specified section
  156.      * @param options a list of parameters passed as args
  157.      * @return boolean true on success
  158.      */
  159.     define boolean BootloaderPrintHandler (map options) ``{
  160.     string section = (string)(options["section"]:nil);
  161.     string option = (string)(options["option"]:nil);
  162.     if (option == nil)
  163.     {
  164.         // command line error report
  165.         CommandLine::Print (_("Option was not specified."));
  166.         return false;
  167.     }
  168.     any value = nil;
  169.     if (section == nil)
  170.     {
  171.         value = BootCommon::globals[option]:nil;
  172.     }
  173.     else
  174.     {
  175.         integer index = BootCommon::getSectionIndex (section);
  176.         if (index != nil)
  177.         {
  178.         value = BootCommon::sections[index,option]:nil;
  179.         }
  180.     }
  181.     if (value == nil)
  182.         // command line error report
  183.         CommandLine::Print (_("Specified option does not exist."));
  184.     else
  185.         // command line, %1 is the value of bootloader option
  186.         CommandLine::Print (sformat (_("Value: %1"), value));
  187.     return false;
  188.     }
  189.  
  190.     /* the command line description map */
  191.     map cmdline = $[
  192.     "id"        : "bootloader",
  193.     // command line help text for Bootloader module
  194.     "help"        : _("Boot loader configuration module"),
  195.     "guihandler"    : GuiHandler,
  196.     "initialize"    : Bootloader::Read,
  197.     "finish"    : Bootloader::Write,
  198.     "actions"    : $[
  199.         "summary"    : $[
  200.         "handler"    : BootloaderSummaryHandler,
  201.         // command line help text for summary action
  202.         "help"        : _("Configuration summary of boot loader")
  203.         ],
  204.         "delete"    : $[
  205.         "handler"    : BootloaderDeleteHandler,
  206.         // command line help text for delete action
  207.         "help"        : _("Delete a global option or option of a section"),
  208.         ],
  209.         "set"    : $[
  210.         "handler"    : BootloaderSetHandler,
  211.         // command line help text for set action
  212.         "help"        : _("Set a global option or option of a section"),
  213.         ],
  214.         "add"    : $[
  215.         "handler"    : BootloaderAddHandler,
  216.         // command line help text for add action
  217.         "help"        : _("Add a new section"),
  218.         ],
  219.         "print"    : $[
  220.         "handler"    : BootloaderPrintHandler,
  221.         // command line help text for print action
  222.         "help"        : _("Print value of specified option"),
  223.         ],
  224.     ],
  225.         "options"    : $[
  226.         "section"    : $[
  227.         // command line help text for an option
  228.         "help"        : _("The name of the section"),
  229.         "type"        : "string",
  230.             ],
  231.         "option"    : $[
  232.         // command line help text for an option
  233.         "help"        : _("The key of the option"),
  234.         "type"        : "string",
  235.             ],
  236.         "value"    : $[
  237.         // command line help text for an option
  238.         "help"        : _("The value of the option"),
  239.         "type"        : "string",
  240.             ],
  241.     ],
  242.         "mappings"    : $[
  243.             "summary"        : [],
  244.         "delete"        : [ "section", "option" ],
  245.         "set"        : [ "section", "option", "value" ],
  246.         "add"        : [ "section" ],
  247.         "print"        : [ "section", "option" ],
  248.     ],
  249.     ];
  250.  
  251.     y2milestone ("Starting bootloader configuration module");
  252.     boolean skip_io = false;
  253.     integer i = 0;
  254.     while (i < size ((list)WFM::Args()))
  255.     {
  256.     if (.noio == WFM::Args (i) || ".noio" == WFM::Args (i))
  257.     {
  258.         skip_io = true;
  259.         BootCommon::save_on_finish = false;
  260.     }
  261.     i = i + 1;
  262.     }
  263.  
  264.     any ret = CommandLine::Run (cmdline);
  265. //    boolean ret = GuiHandler ();
  266.     y2milestone ("Finishing bootloader configuration module");
  267.     return ret;
  268. }
  269.