mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
lib/cli: add library API / CLI for compile time options
This is intentionally low tech; if we have more than two options it may make sense to build up what infrastructure is provided.
This commit is contained in:
parent
bbf6069252
commit
792bea5aff
8 changed files with 82 additions and 4 deletions
|
@ -132,6 +132,11 @@ The available configuration items are described below.
|
|||
|
||||
Default: ``gpg``.
|
||||
|
||||
**built_with.<name>**
|
||||
|
||||
Compile time feature <name>. Current possibilities include
|
||||
"compact" (see **notmuch-compact(1)**)
|
||||
and "field_processor" (see **notmuch-search-terms(7)**).
|
||||
|
||||
ENVIRONMENT
|
||||
===========
|
||||
|
|
|
@ -39,6 +39,7 @@ libnotmuch_c_srcs = \
|
|||
$(dir)/message-file.c \
|
||||
$(dir)/messages.c \
|
||||
$(dir)/sha1.c \
|
||||
$(dir)/built-with.c \
|
||||
$(dir)/tags.c
|
||||
|
||||
libnotmuch_cxx_srcs = \
|
||||
|
|
34
lib/built-with.c
Normal file
34
lib/built-with.c
Normal file
|
@ -0,0 +1,34 @@
|
|||
/* notmuch - Not much of an email program, (just index and search)
|
||||
*
|
||||
* Copyright © 2016 David Bremner
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see http://www.gnu.org/licenses/ .
|
||||
*
|
||||
* Author: David Bremner <david@tethera.net>
|
||||
*/
|
||||
|
||||
#include "notmuch.h"
|
||||
#include "notmuch-private.h"
|
||||
|
||||
notmuch_bool_t
|
||||
notmuch_built_with (const char *name)
|
||||
{
|
||||
if (STRNCMP_LITERAL (name, "compact") == 0) {
|
||||
return HAVE_XAPIAN_COMPACT;
|
||||
} else if (STRNCMP_LITERAL (name, "field_processor") == 0) {
|
||||
return HAVE_XAPIAN_FIELD_PROCESSOR;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
|
@ -1838,6 +1838,11 @@ notmuch_filenames_move_to_next (notmuch_filenames_t *filenames);
|
|||
void
|
||||
notmuch_filenames_destroy (notmuch_filenames_t *filenames);
|
||||
|
||||
/**
|
||||
* interrogate the library for compile time features
|
||||
*/
|
||||
notmuch_bool_t
|
||||
notmuch_built_with (const char *name);
|
||||
/* @} */
|
||||
|
||||
NOTMUCH_END_DECLS
|
||||
|
|
|
@ -750,6 +750,8 @@ _item_split (char *item, char **group, char **key)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#define BUILT_WITH_PREFIX "built_with."
|
||||
|
||||
static int
|
||||
notmuch_config_command_get (notmuch_config_t *config, char *item)
|
||||
{
|
||||
|
@ -773,6 +775,9 @@ notmuch_config_command_get (notmuch_config_t *config, char *item)
|
|||
tags = notmuch_config_get_new_tags (config, &length);
|
||||
for (i = 0; i < length; i++)
|
||||
printf ("%s\n", tags[i]);
|
||||
} else if (STRNCMP_LITERAL (item, BUILT_WITH_PREFIX) == 0) {
|
||||
printf ("%s\n",
|
||||
notmuch_built_with (item + strlen (BUILT_WITH_PREFIX)) ? "true" : "false");
|
||||
} else {
|
||||
char **value;
|
||||
size_t i, length;
|
||||
|
@ -804,6 +809,11 @@ notmuch_config_command_set (notmuch_config_t *config, char *item, int argc, char
|
|||
{
|
||||
char *group, *key;
|
||||
|
||||
if (STRNCMP_LITERAL (item, BUILT_WITH_PREFIX) == 0) {
|
||||
fprintf (stderr, "Error: read only option: %s\n", item);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (_item_split (item, &group, &key))
|
||||
return 1;
|
||||
|
||||
|
@ -830,6 +840,18 @@ notmuch_config_command_set (notmuch_config_t *config, char *item, int argc, char
|
|||
return notmuch_config_save (config);
|
||||
}
|
||||
|
||||
static
|
||||
void
|
||||
_notmuch_config_list_built_with ()
|
||||
{
|
||||
printf("%scompact=%s\n",
|
||||
BUILT_WITH_PREFIX,
|
||||
notmuch_built_with ("compact") ? "true" : "false");
|
||||
printf("%sfield_processor=%s\n",
|
||||
BUILT_WITH_PREFIX,
|
||||
notmuch_built_with ("field_processor") ? "true" : "false");
|
||||
}
|
||||
|
||||
static int
|
||||
notmuch_config_command_list (notmuch_config_t *config)
|
||||
{
|
||||
|
@ -865,6 +887,7 @@ notmuch_config_command_list (notmuch_config_t *config)
|
|||
|
||||
g_strfreev (groups);
|
||||
|
||||
_notmuch_config_list_built_with ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ test_expect_equal "$(notmuch config get foo.nonexistent)" ""
|
|||
|
||||
test_begin_subtest "List all items"
|
||||
notmuch config set database.path "/canonical/path"
|
||||
output=$(notmuch config list)
|
||||
output=$(notmuch config list | notmuch_built_with_sanitize)
|
||||
test_expect_equal "$output" "\
|
||||
database.path=/canonical/path
|
||||
user.name=Notmuch Test Suite
|
||||
|
@ -56,7 +56,9 @@ search.exclude_tags=
|
|||
maildir.synchronize_flags=true
|
||||
crypto.gpg_path=gpg
|
||||
foo.string=this is another string value
|
||||
foo.list=this;is another;list value;"
|
||||
foo.list=this;is another;list value;
|
||||
built_with.compact=something
|
||||
built_with.field_processor=something"
|
||||
|
||||
test_begin_subtest "Top level --config=FILE option"
|
||||
cp "${NOTMUCH_CONFIG}" alt-config
|
||||
|
|
|
@ -19,7 +19,7 @@ another.suite@example.com
|
|||
foo bar
|
||||
baz
|
||||
EOF
|
||||
output=$(notmuch --config=new-notmuch-config config list)
|
||||
output=$(notmuch --config=new-notmuch-config config list | notmuch_built_with_sanitize)
|
||||
test_expect_equal "$output" "\
|
||||
database.path=/path/to/maildir
|
||||
user.name=Test Suite
|
||||
|
@ -29,6 +29,8 @@ new.tags=foo;bar;
|
|||
new.ignore=
|
||||
search.exclude_tags=baz;
|
||||
maildir.synchronize_flags=true
|
||||
crypto.gpg_path=gpg"
|
||||
crypto.gpg_path=gpg
|
||||
built_with.compact=something
|
||||
built_with.field_processor=something"
|
||||
|
||||
test_done
|
||||
|
|
|
@ -733,6 +733,12 @@ notmuch_uuid_sanitize ()
|
|||
{
|
||||
sed 's/[0-9a-f]\{8\}-[0-9a-f]\{4\}-[0-9a-f]\{4\}-[0-9a-f]\{4\}-[0-9a-f]\{12\}/UUID/g'
|
||||
}
|
||||
|
||||
notmuch_built_with_sanitize ()
|
||||
{
|
||||
sed 's/^built_with[.]\(.*\)=.*$/built_with.\1=something/'
|
||||
}
|
||||
|
||||
# End of notmuch helper functions
|
||||
|
||||
# Use test_set_prereq to tell that a particular prerequisite is available.
|
||||
|
|
Loading…
Reference in a new issue