29
29
#include "libgimpbase/gimpversion.h"
36
static gchar * lookup (const gchar *help_domain,
37
const gchar *help_locales,
38
const gchar *help_id);
41
usage (const gchar *name)
30
#include "libgimpbase/gimpenv.h"
35
static void show_version (void) G_GNUC_NORETURN;
37
static gchar * lookup (const gchar *help_domain,
38
const gchar *help_locales,
39
const gchar *help_id);
42
static const gchar *help_base = NULL;
43
static gchar *help_root = NULL;
44
static const gchar *help_locales = NULL;
45
static const gchar **help_ids = NULL;
48
static const GOptionEntry entries[] =
43
g_print ("gimp-help-lookup version %s\n", GIMP_VERSION);
44
g_print ("Looks up a help-id in the GIMP user manual.\n\n"
45
"Usage: %s [options] [help-id]\n\n", name);
46
g_print ("Valid options are:\n"
47
" -h, --help Output this help.\n"
48
" -v, --version Output version info.\n"
49
" -b, --base <uri> Speficies base URI.\n"
50
" -r, --root <directory> Speficies root directory for index files.\n"
51
" -l, --lang <language-code> Specifies help language.\n"
51
G_OPTION_ARG_CALLBACK, (GOptionArgFunc) show_version,
52
"Show version information and exit", NULL
55
G_OPTION_ARG_STRING, &help_base,
56
"Speficies base URI", "URI"
59
G_OPTION_ARG_FILENAME, &help_root,
60
"Speficies root directory for index files", "DIR"
63
G_OPTION_ARG_STRING, &help_locales,
64
"Specifies help language", "LANG"
67
G_OPTION_REMAINING, 0, 0,
68
G_OPTION_ARG_STRING_ARRAY, &help_ids,
60
const gchar *help_base = g_getenv (GIMP_HELP_ENV_URI);
61
const gchar *help_locales = GIMP_HELP_DEFAULT_LOCALE;
62
const gchar *help_id = GIMP_HELP_DEFAULT_ID;
63
const gchar *help_root = DATADIR G_DIR_SEPARATOR_S GIMP_HELP_PREFIX;
67
for (i = 1; i < argc; i++)
79
GOptionContext *context;
83
help_base = g_getenv (GIMP_HELP_ENV_URI);
84
help_root = g_build_path (G_DIR_SEPARATOR_S, gimp_data_directory (), GIMP_HELP_PREFIX, NULL);
86
context = g_option_context_new ("HELP-ID");
87
g_option_context_add_main_entries (context, entries, NULL);
88
if (! g_option_context_parse (context, &argc, &argv, &error))
69
if (! strlen (argv[i]))
74
const gchar *opt = argv[i] + 1;
79
switch (g_ascii_tolower (*opt))
82
g_print ("gimp-help-lookup version %s\n", GIMP_VERSION);
88
help_base = argv[++i];
96
help_root = argv[++i];
104
help_locales = argv[++i];
115
g_printerr ("Error parsing the command-line options, try --help\n");
90
g_print ("%s\n", error->message);
127
98
uri = g_filename_to_uri (help_root, NULL, NULL);
129
domain_register (GIMP_HELP_DEFAULT_DOMAIN, uri, help_root);
100
gimp_help_register_domain (GIMP_HELP_DEFAULT_DOMAIN, uri, help_root);
132
uri = lookup (GIMP_HELP_DEFAULT_DOMAIN, help_locales, help_id);
103
uri = lookup (GIMP_HELP_DEFAULT_DOMAIN,
104
help_locales ? help_locales : GIMP_HELP_DEFAULT_LOCALE,
105
help_ids ? help_ids[0] : GIMP_HELP_DEFAULT_ID);
113
g_option_context_free (context);
140
116
return uri ? EXIT_SUCCESS : EXIT_FAILURE;
150
120
lookup (const gchar *help_domain,
151
121
const gchar *help_locales,
152
122
const gchar *help_id)
154
HelpDomain *domain = domain_lookup (help_domain);
124
GimpHelpDomain *domain = gimp_help_lookup_domain (help_domain);
158
GList *locales = locales_parse (help_locales);
159
gchar *full_uri = domain_map (domain, locales, help_id);
128
GList *locales = gimp_help_parse_locales (help_locales);
129
gchar *full_uri = gimp_help_domain_map (domain, locales, help_id,
161
132
g_list_foreach (locales, (GFunc) g_free, NULL);
162
133
g_list_free (locales);