Glib::OptionGroup(3)

🌸 NAME 🌸

hii bestie, welcome to Glib::OptionGroup(3), straight out of the User Contributed Perl Documentation! This page is literally about Glib::OptionGroup β€” a group of options for command line option parsing. That’s the whole vibe. πŸŽ€


✨ SYNOPSIS ✨

okay so here’s the iconic little setup from the page, copied exactly:

  my ($verbose, $source, $filenames) = ('', undef, []);

  my $entries = [
    { long_name => 'verbose',
      short_name => 'v',
      arg_type => 'none',
      arg_value => \$verbose,
      description => 'be verbose' },

    { long_name => 'source',
      short_name => 's',
      arg_type => 'string',
      arg_value => \$source,
      description => 'set the source',
      arg_description => 'source' },

    [ 'filenames', 'f', 'filename-array', \$filenames ],
  ];

  my $context = Glib::OptionContext->new ('- urgsify your life');
  $context->add_main_entries ($entries, 'C');
  $context->parse ();

  # $verbose, $source, and $filenames are now updated according to the
  # command line options given

like… the way that $verbose, $source, and $filenames get updated from the command line options given? main character energy fr fr. πŸ’…


πŸ¦‹ HIERARCHY πŸ¦‹

the family tree is giving:

  Glib::Boxed
  +----Glib::OptionGroup

so yes bestie, it inherits from <purple>Glib::Boxed</purple>. slay. ✨


πŸ’… METHODS πŸ’…

πŸ› οΈ optioncontext = Glib::OptionContext->new ($parameter_string)

  • $parameter_string (string)

🧚 optiongroup = Glib::OptionGroup->new (key => value, ...)

Creates a new option group from the given key-value pairs. The valid keys are name, description, help_description, and entries. The first three specify strings while the last one, entries, specifies an array reference of option entries. Example:

  my $group = Glib::OptionGroup->new (
                name => 'urgs',
                description => 'Urgs Urgs Urgs',
                help_description => 'Help with Urgs',
                entries => \@entries);

An option entry is a hash reference like this:

  { long_name => 'verbose',
    short_name => 'v',
    flags => [qw/reverse hidden in-main/],
    arg_type => 'none',
    arg_value => \$verbose,
    description => 'verbose desc.',
    arg_description => 'verbose arg desc.' }

Of those keys only long_name, arg_type, and arg_value are required. So this is a valid option entry too:

  { long_name => 'package-names',
    arg_type => 'string-array',
    arg_value => \$package_names }

For convenience, option entries can also be specified as array references containing long_name, short_name, arg_type, and arg_value:

  [ 'filenames', 'f', 'filename-array', \$filenames ]

If you don’t want an option to have a short name, specify undef for it:

  [ 'filenames', undef, 'filename-array', \$filenames ]

not me being obsessed with how clean that undef trick is 😭🫢

πŸŽ€ $context->add_group ($group)

  • $group (Glib::OptionGroup)

🌟 $context->add_main_entries ($entries, $translation_domain)

  • $entries (scalar) reference to an array of option entries
  • $translation_domain (string)

πŸ’– boolean = $context->get_help_enabled + $context->set_help_enabled ($help_enabled)

  • $help_enabled (boolean)

πŸ¦‹ boolean = $context->get_ignore_unknown_options + $context->set_ignore_unknown_options ($ignore_unknown)

  • $ignore_unknown (boolean)

πŸ‘‘ optiongroup = $context->get_main_group + $context->set_main_group ($group)

  • $group (Glib::OptionGroup)

πŸ”₯ boolean = $context->parse

This method works directly on @ARGV.

⚠️ May croak with a Glib::Error in $@ on failure. so like… handle your errors, bestie, no cap.

πŸ’œ $group->set_translate_func ($func, $data=undef)

  • $func (scalar)
  • $data (scalar)

πŸ“ $group->set_translation_domain ($domain)

  • $domain (string)

🌈 ENUMS AND FLAGS 🌈

🧚 enum Glib::OptionArg

  • 'none' / 'G_OPTION_ARG_NONE'
  • 'string' / 'G_OPTION_ARG_STRING'
  • 'int' / 'G_OPTION_ARG_INT'
  • 'callback' / 'G_OPTION_ARG_CALLBACK'
  • 'filename' / 'G_OPTION_ARG_FILENAME'
  • 'string-array' / 'G_OPTION_ARG_STRING_ARRAY'
  • 'filename-array' / 'G_OPTION_ARG_FILENAME_ARRAY'
  • 'double' / 'G_OPTION_ARG_DOUBLE'
  • 'int64' / 'G_OPTION_ARG_INT64'

πŸ¦‹ flags Glib::OptionFlags

  • 'none' / 'G_OPTION_FLAG_NONE'
  • 'hidden' / 'G_OPTION_FLAG_HIDDEN'
  • 'in-main' / 'G_OPTION_FLAG_IN_MAIN'
  • 'reverse' / 'G_OPTION_FLAG_REVERSE'
  • 'no-arg' / 'G_OPTION_FLAG_NO_ARG'
  • 'filename' / 'G_OPTION_FLAG_FILENAME'
  • 'optional-arg' / 'G_OPTION_FLAG_OPTIONAL_ARG'
  • 'noalias' / 'G_OPTION_FLAG_NOALIAS'

periodt. every single one is here, iykyk πŸ’…βœ¨


πŸŽ€ SEE ALSO πŸŽ€

  • Glib
  • Glib::Boxed

go read those too bestie, it’s giving required reading. πŸ“šπŸ’–


Copyright (C) 2003-2011 by the gtk2-perl team.

This software is licensed under the LGPL. See Glib for a full notice.


mwah πŸ’‹ that’s the whole page β€” signed off with perl v5.42.0, 2023-09-05, and Glib::OptionGroup(3). slay and goodbye, bestie! 🫢✨

πŸ“¦ where this page comes from