File: README.md

package info (click to toggle)
feature-check 0.2.2-3%2Bdeb10u1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 292 kB
  • sloc: perl: 944; python: 525; makefile: 91; sh: 42
file content (56 lines) | stat: -rw-r--r-- 2,190 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
feature-check - query a program for supported features
======================================================

The `feature_check` library obtains the list of supported features from
a program via various methods and allows programs to check for the presence
and, possibly, versions of specific features.

The `feature_check` library is fully typed.

Obtaining the features supported by a program
---------------------------------------------

The `obtain_features()` function in the `feature_check` module runs
a program with the appropriate option to obtain its list of features;
the default is to pass the `--features` option, but this may be overridden.
The `obtain_features()` function then examines the output to find a line
that matches the specified prefix (or the default `Features: ` prefix) and
expects the rest of the line to be a whitespace-separated list of either
feature names or `name=version` pairs.  It returns a dictionary of
the features obtained with their versions (or `1.0` if only a feature name
was found in the program's output).

    import feature_check
    
    data = feature_check.obtain_features("timelimit")
    print(data.get("subsecond", "not supported"))
    
For programs that need a different command-line option to list features:

    import feature_check
    
    print("SSL" in feature_check.obtain_features("curl", option="--version"))

Testing for feature versions
----------------------------

The `feature_check` library also provides a simple expression evaluation
mechanism for examining feature versions - the `expr` module defines
several `Expr` and `Result` classes and also provides the `parse_simple()`
function (also exported by `feature_check()` itself) for creating simple
version comparisons:

    import feature_check
    
    data = feature_check.obtain_features("timelimit")
    expr = feature_check.parse_simple("subsecond >= 1")
    print(expr.evaluate(data).value)

Contact the author
------------------

For more information, please see the `feature_check` library's
[homepage][ringlet] or contact the author, [Peter Pentchev][roam].

[ringlet]: https://devel.ringlet.net/misc/feature-check/
[roam]: <mailto:roam@ringlet.net>