mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-28 13:44:12 +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``.
|
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
|
ENVIRONMENT
|
||||||
===========
|
===========
|
||||||
|
|
|
@ -39,6 +39,7 @@ libnotmuch_c_srcs = \
|
||||||
$(dir)/message-file.c \
|
$(dir)/message-file.c \
|
||||||
$(dir)/messages.c \
|
$(dir)/messages.c \
|
||||||
$(dir)/sha1.c \
|
$(dir)/sha1.c \
|
||||||
|
$(dir)/built-with.c \
|
||||||
$(dir)/tags.c
|
$(dir)/tags.c
|
||||||
|
|
||||||
libnotmuch_cxx_srcs = \
|
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
|
void
|
||||||
notmuch_filenames_destroy (notmuch_filenames_t *filenames);
|
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
|
NOTMUCH_END_DECLS
|
||||||
|
|
|
@ -750,6 +750,8 @@ _item_split (char *item, char **group, char **key)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define BUILT_WITH_PREFIX "built_with."
|
||||||
|
|
||||||
static int
|
static int
|
||||||
notmuch_config_command_get (notmuch_config_t *config, char *item)
|
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);
|
tags = notmuch_config_get_new_tags (config, &length);
|
||||||
for (i = 0; i < length; i++)
|
for (i = 0; i < length; i++)
|
||||||
printf ("%s\n", tags[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 {
|
} else {
|
||||||
char **value;
|
char **value;
|
||||||
size_t i, length;
|
size_t i, length;
|
||||||
|
@ -804,6 +809,11 @@ notmuch_config_command_set (notmuch_config_t *config, char *item, int argc, char
|
||||||
{
|
{
|
||||||
char *group, *key;
|
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))
|
if (_item_split (item, &group, &key))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
@ -830,6 +840,18 @@ notmuch_config_command_set (notmuch_config_t *config, char *item, int argc, char
|
||||||
return notmuch_config_save (config);
|
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
|
static int
|
||||||
notmuch_config_command_list (notmuch_config_t *config)
|
notmuch_config_command_list (notmuch_config_t *config)
|
||||||
{
|
{
|
||||||
|
@ -865,6 +887,7 @@ notmuch_config_command_list (notmuch_config_t *config)
|
||||||
|
|
||||||
g_strfreev (groups);
|
g_strfreev (groups);
|
||||||
|
|
||||||
|
_notmuch_config_list_built_with ();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ test_expect_equal "$(notmuch config get foo.nonexistent)" ""
|
||||||
|
|
||||||
test_begin_subtest "List all items"
|
test_begin_subtest "List all items"
|
||||||
notmuch config set database.path "/canonical/path"
|
notmuch config set database.path "/canonical/path"
|
||||||
output=$(notmuch config list)
|
output=$(notmuch config list | notmuch_built_with_sanitize)
|
||||||
test_expect_equal "$output" "\
|
test_expect_equal "$output" "\
|
||||||
database.path=/canonical/path
|
database.path=/canonical/path
|
||||||
user.name=Notmuch Test Suite
|
user.name=Notmuch Test Suite
|
||||||
|
@ -56,7 +56,9 @@ search.exclude_tags=
|
||||||
maildir.synchronize_flags=true
|
maildir.synchronize_flags=true
|
||||||
crypto.gpg_path=gpg
|
crypto.gpg_path=gpg
|
||||||
foo.string=this is another string value
|
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"
|
test_begin_subtest "Top level --config=FILE option"
|
||||||
cp "${NOTMUCH_CONFIG}" alt-config
|
cp "${NOTMUCH_CONFIG}" alt-config
|
||||||
|
|
|
@ -19,7 +19,7 @@ another.suite@example.com
|
||||||
foo bar
|
foo bar
|
||||||
baz
|
baz
|
||||||
EOF
|
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" "\
|
test_expect_equal "$output" "\
|
||||||
database.path=/path/to/maildir
|
database.path=/path/to/maildir
|
||||||
user.name=Test Suite
|
user.name=Test Suite
|
||||||
|
@ -29,6 +29,8 @@ new.tags=foo;bar;
|
||||||
new.ignore=
|
new.ignore=
|
||||||
search.exclude_tags=baz;
|
search.exclude_tags=baz;
|
||||||
maildir.synchronize_flags=true
|
maildir.synchronize_flags=true
|
||||||
crypto.gpg_path=gpg"
|
crypto.gpg_path=gpg
|
||||||
|
built_with.compact=something
|
||||||
|
built_with.field_processor=something"
|
||||||
|
|
||||||
test_done
|
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'
|
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
|
# End of notmuch helper functions
|
||||||
|
|
||||||
# Use test_set_prereq to tell that a particular prerequisite is available.
|
# Use test_set_prereq to tell that a particular prerequisite is available.
|
||||||
|
|
Loading…
Reference in a new issue