Commit fda6126d7cc955f2ae3342fa8bbcdc036bb76f48

Authored by Henry Fredrick Schreiner
Committed by Henry Schreiner
1 parent 8ecce8fd

Adding pre-commit

.clang-format
@@ -19,7 +19,7 @@ BasedOnStyle: LLVM @@ -19,7 +19,7 @@ BasedOnStyle: LLVM
19 # AlwaysBreakTemplateDeclarations: false 19 # AlwaysBreakTemplateDeclarations: false
20 BinPackArguments: false 20 BinPackArguments: false
21 BinPackParameters: false 21 BinPackParameters: false
22 -# BraceWrapping: 22 +# BraceWrapping:
23 # AfterClass: false 23 # AfterClass: false
24 # AfterControlStatement: false 24 # AfterControlStatement: false
25 # AfterEnum: false 25 # AfterEnum: false
@@ -69,7 +69,7 @@ IndentWidth: 4 @@ -69,7 +69,7 @@ IndentWidth: 4
69 # PenaltyReturnTypeOnItsOwnLine: 60 69 # PenaltyReturnTypeOnItsOwnLine: 60
70 # PointerAlignment: Right 70 # PointerAlignment: Right
71 # ReflowComments: true 71 # ReflowComments: true
72 -SortIncludes: false 72 +SortIncludes: true
73 # SpaceAfterCStyleCast: false 73 # SpaceAfterCStyleCast: false
74 # SpaceAfterTemplateKeyword: true 74 # SpaceAfterTemplateKeyword: true
75 # SpaceBeforeAssignmentOperators: true 75 # SpaceBeforeAssignmentOperators: true
azure-pipelines.yml
@@ -15,7 +15,24 @@ variables: @@ -15,7 +15,24 @@ variables:
15 15
16 jobs: 16 jobs:
17 17
18 -- job: ClangFormatTidy 18 +- job: Formatting
  19 + pool:
  20 + vmImage: 'ubuntu-16.04'
  21 + steps:
  22 + - task: UsePythonVersion@0
  23 + inputs:
  24 + versionSpec: '3.7'
  25 + architecture: 'x64'
  26 + - script: python -m pip install pre-commit
  27 + displayName: Install pre-commit
  28 + - script: pre-commit run --all
  29 + displayName: Run pre-commit
  30 + - script: git diff --exit-code
  31 + displayName: Display format changes
  32 + condition: always()
  33 +
  34 +
  35 +- job: ClangTidy
19 variables: 36 variables:
20 CXX_FLAGS: "-Werror -Wcast-align -Wfloat-equal -Wimplicit-atomic-properties -Wmissing-declarations -Woverlength-strings -Wshadow -Wstrict-selector-match -Wundeclared-selector -Wunreachable-code -std=c++11" 37 CXX_FLAGS: "-Werror -Wcast-align -Wfloat-equal -Wimplicit-atomic-properties -Wmissing-declarations -Woverlength-strings -Wshadow -Wstrict-selector-match -Wundeclared-selector -Wunreachable-code -std=c++11"
21 cli11.options: -DCLANG_TIDY_FIX=ON 38 cli11.options: -DCLANG_TIDY_FIX=ON
@@ -26,8 +43,6 @@ jobs: @@ -26,8 +43,6 @@ jobs:
26 vmImage: 'ubuntu-16.04' 43 vmImage: 'ubuntu-16.04'
27 container: silkeh/clang:5 44 container: silkeh/clang:5
28 steps: 45 steps:
29 - - script: scripts/check_style.sh  
30 - displayName: Check format  
31 - template: .ci/azure-cmake.yml 46 - template: .ci/azure-cmake.yml
32 - template: .ci/azure-build.yml 47 - template: .ci/azure-build.yml
33 - script: git diff --exit-code --color 48 - script: git diff --exit-code --color
book/chapters/config.md
@@ -44,10 +44,10 @@ std::vector<CLI::ConfigItem> from_config(std::istream &input) const; @@ -44,10 +44,10 @@ std::vector<CLI::ConfigItem> from_config(std::istream &input) const;
44 44
45 The `CLI::ConfigItem`s that you return are simple structures with a name, a vector of parents, and a vector of results. A optionally customizable `to_flag` method on the formatter lets you change what happens when a ConfigItem turns into a flag. 45 The `CLI::ConfigItem`s that you return are simple structures with a name, a vector of parents, and a vector of results. A optionally customizable `to_flag` method on the formatter lets you change what happens when a ConfigItem turns into a flag.
46 46
47 -Finally, set your new class as new config formatter: 47 +Finally, set your new class as new config formatter:
48 48
49 ```cpp 49 ```cpp
50 app.config_formatter(std::make_shared<NewConfig>()); 50 app.config_formatter(std::make_shared<NewConfig>());
51 ``` 51 ```
52 52
53 -See [`examples/json.cpp`](https://github.com/CLIUtils/CLI11/blob/master/examples/json.cpp) for a complete JSON config example. 53 +See [`examples/json.cpp`](https://github.com/CLIUtils/CLI11/blob/master/examples/json.cpp) for a complete JSON config example.
book/chapters/flags.md
@@ -73,7 +73,7 @@ The values would be used like this: @@ -73,7 +73,7 @@ The values would be used like this:
73 73
74 [include:"usage"](../code/flags.cpp) 74 [include:"usage"](../code/flags.cpp)
75 75
76 -[Source code](https://gitlab.com/CLIUtils/CLI11Tutorial/blob/master/code/flags.cpp) 76 +[Source code](https://gitlab.com/CLIUtils/CLI11Tutorial/blob/master/code/flags.cpp)
77 77
78 If you compile and run: 78 If you compile and run:
79 79
book/chapters/formatting.md
@@ -51,7 +51,7 @@ This is a normal printout, with `&lt;&gt;` indicating the methods used to produce each @@ -51,7 +51,7 @@ This is a normal printout, with `&lt;&gt;` indicating the methods used to produce each
51 <make_group(app, "Option Group 2"), false, filter> 51 <make_group(app, "Option Group 2"), false, filter>
52 ... 52 ...
53 <make_subcommands(app)> 53 <make_subcommands(app)>
54 - <make_subcommand(sub1, Mode::Normal)> 54 + <make_subcommand(sub1, Mode::Normal)>
55 <make_subcommand(sub2, Mode::Normal)> 55 <make_subcommand(sub2, Mode::Normal)>
56 <make_footer(app)> 56 <make_footer(app)>
57 ``` 57 ```
@@ -61,10 +61,10 @@ This is a normal printout, with `&lt;&gt;` indicating the methods used to produce each @@ -61,10 +61,10 @@ This is a normal printout, with `&lt;&gt;` indicating the methods used to produce each
61 The `make_groups` print the group name then call `make_option(o)` on the options listed in that group. The normal printout for an option looks like this: 61 The `make_groups` print the group name then call `make_option(o)` on the options listed in that group. The normal printout for an option looks like this:
62 62
63 ``` 63 ```
64 - make_option_opts(o)  
65 - โ”Œโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”  
66 - -n,--name (REQUIRED) This is a description  
67 -โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ 64 + make_option_opts(o)
  65 + โ”Œโ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”
  66 + -n,--name (REQUIRED) This is a description
  67 +โ””โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
68 make_option_name(o,p) make_option_desc(o) 68 make_option_name(o,p) make_option_desc(o)
69 ``` 69 ```
70 70
book/chapters/installation.md
1 -# Installation 1 +# Installation
2 2
3 ## Single file edition 3 ## Single file edition
4 4
@@ -50,7 +50,7 @@ root:build # cmake .. @@ -50,7 +50,7 @@ root:build # cmake ..
50 root:build # make 50 root:build # make
51 Scanning dependencies ... 51 Scanning dependencies ...
52 root:build # make test 52 root:build # make test
53 -[warning]Running tests... 53 +[warning]Running tests...
54 Test project /CLI11/build 54 Test project /CLI11/build
55 Start 1: HelpersTest 55 Start 1: HelpersTest
56 1/10 Test #1: HelpersTest ...................... Passed 0.01 sec 56 1/10 Test #1: HelpersTest ...................... Passed 0.01 sec
book/chapters/options.md
@@ -20,7 +20,7 @@ You can use any C++ int-like type, not just `int`. CLI11 understands the followi @@ -20,7 +20,7 @@ You can use any C++ int-like type, not just `int`. CLI11 understands the followi
20 20
21 | Type | CLI11 | 21 | Type | CLI11 |
22 |-------------|-------| 22 |-------------|-------|
23 -| int-like | Integer conversion up to 64-bit, can be unsigned | 23 +| int-like | Integer conversion up to 64-bit, can be unsigned |
24 | float-like | Floating point conversions | 24 | float-like | Floating point conversions |
25 | string-like | Anything else that can be shifted into a StringStream | 25 | string-like | Anything else that can be shifted into a StringStream |
26 | vector-like | A vector of the above three types (see below) | 26 | vector-like | A vector of the above three types (see below) |
@@ -54,7 +54,7 @@ If you use a vector instead of a plain option, you can accept more than one valu @@ -54,7 +54,7 @@ If you use a vector instead of a plain option, you can accept more than one valu
54 |-------------------|-----------------| 54 |-------------------|-----------------|
55 | `--vec 1 --vec 2` | `--vec 1 2` | 55 | `--vec 1 --vec 2` | `--vec 1 2` |
56 56
57 -The original version did allow the option system to access information on the grouping of options received, but was removed for simplicity. 57 +The original version did allow the option system to access information on the grouping of options received, but was removed for simplicity.
58 58
59 An example of setting up a vector option: 59 An example of setting up a vector option:
60 60
book/chapters/toolkits.md
@@ -27,4 +27,4 @@ You can call anything you would like to configure in the constructor, like `opti @@ -27,4 +27,4 @@ You can call anything you would like to configure in the constructor, like `opti
27 27
28 # Virtual functions provided 28 # Virtual functions provided
29 29
30 -You are given a few virtual functions that you can change (only on the main App). `pre_callback` runs right before the callbacks run, letting you print out custom messages at the top of your app. 30 +You are given a few virtual functions that you can change (only on the main App). `pre_callback` runs right before the callbacks run, letting you print out custom messages at the top of your app.
cmake/CodeCoverage.cmake
@@ -170,7 +170,7 @@ function(SETUP_TARGET_FOR_COVERAGE) @@ -170,7 +170,7 @@ function(SETUP_TARGET_FOR_COVERAGE)
170 DEPENDS ${Coverage_DEPENDENCIES} 170 DEPENDS ${Coverage_DEPENDENCIES}
171 COMMENT "Resetting code coverage counters to zero.\nProcessing code coverage counters and generating report." 171 COMMENT "Resetting code coverage counters to zero.\nProcessing code coverage counters and generating report."
172 ) 172 )
173 - 173 +
174 # Show where to find the lcov info report 174 # Show where to find the lcov info report
175 add_custom_command(TARGET ${Coverage_NAME} POST_BUILD 175 add_custom_command(TARGET ${Coverage_NAME} POST_BUILD
176 COMMAND ; 176 COMMAND ;
conanfile.py
@@ -2,6 +2,7 @@ from conans import ConanFile, CMake @@ -2,6 +2,7 @@ from conans import ConanFile, CMake
2 from conans.tools import load 2 from conans.tools import load
3 import re 3 import re
4 4
  5 +
5 def get_version(): 6 def get_version():
6 try: 7 try:
7 content = load("include/CLI/Version.hpp") 8 content = load("include/CLI/Version.hpp")
@@ -10,6 +11,7 @@ def get_version(): @@ -10,6 +11,7 @@ def get_version():
10 except Exception: 11 except Exception:
11 return None 12 return None
12 13
  14 +
13 class CLI11Conan(ConanFile): 15 class CLI11Conan(ConanFile):
14 name = "CLI11" 16 name = "CLI11"
15 version = get_version() 17 version = get_version()
@@ -21,9 +23,17 @@ class CLI11Conan(ConanFile): @@ -21,9 +23,17 @@ class CLI11Conan(ConanFile):
21 license = "BSD-3-Clause" 23 license = "BSD-3-Clause"
22 24
23 settings = "os", "compiler", "arch", "build_type" 25 settings = "os", "compiler", "arch", "build_type"
24 - exports_sources = "LICENSE", "README.md", "include/*", "extern/*", "cmake/*", "CMakeLists.txt", "tests/*" 26 + exports_sources = (
  27 + "LICENSE",
  28 + "README.md",
  29 + "include/*",
  30 + "extern/*",
  31 + "cmake/*",
  32 + "CMakeLists.txt",
  33 + "tests/*",
  34 + )
25 35
26 - def build(self): # this is not building a library, just tests 36 + def build(self): # this is not building a library, just tests
27 cmake = CMake(self) 37 cmake = CMake(self)
28 cmake.definitions["CLI11_EXAMPLES"] = "OFF" 38 cmake.definitions["CLI11_EXAMPLES"] = "OFF"
29 cmake.definitions["CLI11_SINGLE_FILE"] = "OFF" 39 cmake.definitions["CLI11_SINGLE_FILE"] = "OFF"
include/CLI/Validators.hpp
@@ -474,9 +474,10 @@ template &lt;typename T&gt; std::string generate_set(const T &amp;set) { @@ -474,9 +474,10 @@ template &lt;typename T&gt; std::string generate_set(const T &amp;set) {
474 using element_t = typename detail::element_type<T>::type; 474 using element_t = typename detail::element_type<T>::type;
475 using iteration_type_t = typename detail::pair_adaptor<element_t>::value_type; // the type of the object pair 475 using iteration_type_t = typename detail::pair_adaptor<element_t>::value_type; // the type of the object pair
476 std::string out(1, '{'); 476 std::string out(1, '{');
477 - out.append(detail::join(detail::smart_deref(set),  
478 - [](const iteration_type_t &v) { return detail::pair_adaptor<element_t>::first(v); },  
479 - ",")); 477 + out.append(detail::join(
  478 + detail::smart_deref(set),
  479 + [](const iteration_type_t &v) { return detail::pair_adaptor<element_t>::first(v); },
  480 + ","));
480 out.push_back('}'); 481 out.push_back('}');
481 return out; 482 return out;
482 } 483 }
@@ -486,17 +487,18 @@ template &lt;typename T&gt; std::string generate_map(const T &amp;map, bool key_only = fal @@ -486,17 +487,18 @@ template &lt;typename T&gt; std::string generate_map(const T &amp;map, bool key_only = fal
486 using element_t = typename detail::element_type<T>::type; 487 using element_t = typename detail::element_type<T>::type;
487 using iteration_type_t = typename detail::pair_adaptor<element_t>::value_type; // the type of the object pair 488 using iteration_type_t = typename detail::pair_adaptor<element_t>::value_type; // the type of the object pair
488 std::string out(1, '{'); 489 std::string out(1, '{');
489 - out.append(detail::join(detail::smart_deref(map),  
490 - [key_only](const iteration_type_t &v) {  
491 - std::string res{detail::to_string(detail::pair_adaptor<element_t>::first(v))};  
492 -  
493 - if(!key_only) {  
494 - res.append("->");  
495 - res += detail::to_string(detail::pair_adaptor<element_t>::second(v));  
496 - }  
497 - return res;  
498 - },  
499 - ",")); 490 + out.append(detail::join(
  491 + detail::smart_deref(map),
  492 + [key_only](const iteration_type_t &v) {
  493 + std::string res{detail::to_string(detail::pair_adaptor<element_t>::first(v))};
  494 +
  495 + if(!key_only) {
  496 + res.append("->");
  497 + res += detail::to_string(detail::pair_adaptor<element_t>::second(v));
  498 + }
  499 + return res;
  500 + },
  501 + ","));
500 out.push_back('}'); 502 out.push_back('}');
501 return out; 503 return out;
502 } 504 }
@@ -657,9 +659,10 @@ class IsMember : public Validator { @@ -657,9 +659,10 @@ class IsMember : public Validator {
657 /// You can pass in as many filter functions as you like, they nest (string only currently) 659 /// You can pass in as many filter functions as you like, they nest (string only currently)
658 template <typename T, typename... Args> 660 template <typename T, typename... Args>
659 IsMember(T &&set, filter_fn_t filter_fn_1, filter_fn_t filter_fn_2, Args &&... other) 661 IsMember(T &&set, filter_fn_t filter_fn_1, filter_fn_t filter_fn_2, Args &&... other)
660 - : IsMember(std::forward<T>(set),  
661 - [filter_fn_1, filter_fn_2](std::string a) { return filter_fn_2(filter_fn_1(a)); },  
662 - other...) {} 662 + : IsMember(
  663 + std::forward<T>(set),
  664 + [filter_fn_1, filter_fn_2](std::string a) { return filter_fn_2(filter_fn_1(a)); },
  665 + other...) {}
663 }; 666 };
664 667
665 /// definition of the default transformation object 668 /// definition of the default transformation object
@@ -717,9 +720,10 @@ class Transformer : public Validator { @@ -717,9 +720,10 @@ class Transformer : public Validator {
717 /// You can pass in as many filter functions as you like, they nest 720 /// You can pass in as many filter functions as you like, they nest
718 template <typename T, typename... Args> 721 template <typename T, typename... Args>
719 Transformer(T &&mapping, filter_fn_t filter_fn_1, filter_fn_t filter_fn_2, Args &&... other) 722 Transformer(T &&mapping, filter_fn_t filter_fn_1, filter_fn_t filter_fn_2, Args &&... other)
720 - : Transformer(std::forward<T>(mapping),  
721 - [filter_fn_1, filter_fn_2](std::string a) { return filter_fn_2(filter_fn_1(a)); },  
722 - other...) {} 723 + : Transformer(
  724 + std::forward<T>(mapping),
  725 + [filter_fn_1, filter_fn_2](std::string a) { return filter_fn_2(filter_fn_1(a)); },
  726 + other...) {}
723 }; 727 };
724 728
725 /// translate named items to other or a value set 729 /// translate named items to other or a value set
@@ -793,9 +797,10 @@ class CheckedTransformer : public Validator { @@ -793,9 +797,10 @@ class CheckedTransformer : public Validator {
793 /// You can pass in as many filter functions as you like, they nest 797 /// You can pass in as many filter functions as you like, they nest
794 template <typename T, typename... Args> 798 template <typename T, typename... Args>
795 CheckedTransformer(T &&mapping, filter_fn_t filter_fn_1, filter_fn_t filter_fn_2, Args &&... other) 799 CheckedTransformer(T &&mapping, filter_fn_t filter_fn_1, filter_fn_t filter_fn_2, Args &&... other)
796 - : CheckedTransformer(std::forward<T>(mapping),  
797 - [filter_fn_1, filter_fn_2](std::string a) { return filter_fn_2(filter_fn_1(a)); },  
798 - other...) {} 800 + : CheckedTransformer(
  801 + std::forward<T>(mapping),
  802 + [filter_fn_1, filter_fn_2](std::string a) { return filter_fn_2(filter_fn_1(a)); },
  803 + other...) {}
799 }; 804 };
800 805
801 /// Helper function to allow ignore_case to be passed to IsMember or Transform 806 /// Helper function to allow ignore_case to be passed to IsMember or Transform
scripts/ExtractVersion.py
@@ -3,15 +3,15 @@ @@ -3,15 +3,15 @@
3 import os 3 import os
4 import re 4 import re
5 5
6 -base_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))  
7 -config_h = os.path.join(base_path, 'include', 'CLI', 'Version.hpp')  
8 -data = {'MAJOR': 0, 'MINOR': 0, 'PATCH': 0}  
9 -reg = re.compile(r'^\s*#define\s+CLI11_VERSION_([A-Z]+)\s+([0-9]+).*$') 6 +base_path = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
  7 +config_h = os.path.join(base_path, "include", "CLI", "Version.hpp")
  8 +data = {"MAJOR": 0, "MINOR": 0, "PATCH": 0}
  9 +reg = re.compile(r"^\s*#define\s+CLI11_VERSION_([A-Z]+)\s+([0-9]+).*$")
10 10
11 -with open(config_h, 'r') as fp:  
12 - for l in fp:  
13 - m = reg.match(l)  
14 - if m:  
15 - data[m.group(1)] = int(m.group(2)) 11 +with open(config_h, "r") as fp:
  12 + for l in fp:
  13 + m = reg.match(l)
  14 + if m:
  15 + data[m.group(1)] = int(m.group(2))
16 16
17 -print('{}.{}.{}'.format(data['MAJOR'], data['MINOR'], data['PATCH'])) 17 +print("{}.{}.{}".format(data["MAJOR"], data["MINOR"], data["PATCH"]))
scripts/MakeSingleHeader.py
@@ -24,11 +24,13 @@ CLI11:verbatim # The tag @@ -24,11 +24,13 @@ CLI11:verbatim # The tag
24 [^\n]* # Up to end of line 24 [^\n]* # Up to end of line
25 $ # End of a line 25 $ # End of a line
26 """ 26 """
27 -verbatim_all = re.compile(verbatim_tag_str + "(.*)" + verbatim_tag_str,  
28 - re.MULTILINE | re.DOTALL | re.VERBOSE) 27 +verbatim_all = re.compile(
  28 + verbatim_tag_str + "(.*)" + verbatim_tag_str, re.MULTILINE | re.DOTALL | re.VERBOSE
  29 +)
29 30
30 DIR = os.path.dirname(os.path.abspath(__file__)) 31 DIR = os.path.dirname(os.path.abspath(__file__))
31 32
  33 +
32 class HeaderFile(object): 34 class HeaderFile(object):
33 TAG = "Unknown git revision" 35 TAG = "Unknown git revision"
34 LICENSE = "// BSD 3 clause" 36 LICENSE = "// BSD 3 clause"
@@ -43,7 +45,7 @@ class HeaderFile(object): @@ -43,7 +45,7 @@ class HeaderFile(object):
43 self.__class__.VERSION = version.groups()[0] 45 self.__class__.VERSION = version.groups()[0]
44 46
45 # add self.verbatim 47 # add self.verbatim
46 - if 'CLI11:verbatim' in inner: 48 + if "CLI11:verbatim" in inner:
47 self.verbatim = ["\n\n// Verbatim copy from {0}:".format(inc)] 49 self.verbatim = ["\n\n// Verbatim copy from {0}:".format(inc)]
48 self.verbatim += verbatim_all.findall(inner) 50 self.verbatim += verbatim_all.findall(inner)
49 inner = verbatim_all.sub("", inner) 51 inner = verbatim_all.sub("", inner)
@@ -52,7 +54,7 @@ class HeaderFile(object): @@ -52,7 +54,7 @@ class HeaderFile(object):
52 54
53 self.headers = set(includes_system.findall(inner)) 55 self.headers = set(includes_system.findall(inner))
54 56
55 - self.body = '\n// From {0}:\n\n'.format(inc) + inner[inner.find('namespace'):] 57 + self.body = "\n// From {0}:\n\n".format(inc) + inner[inner.find("namespace") :]
56 58
57 self.namespace = None 59 self.namespace = None
58 60
@@ -65,11 +67,11 @@ class HeaderFile(object): @@ -65,11 +67,11 @@ class HeaderFile(object):
65 67
66 @property 68 @property
67 def header_str(self): 69 def header_str(self):
68 - return '\n'.join('#include <'+h+'>' for h in sorted(self.headers)) 70 + return "\n".join("#include <" + h + ">" for h in sorted(self.headers))
69 71
70 @property 72 @property
71 def verbatim_str(self): 73 def verbatim_str(self):
72 - return '\n'.join(self.verbatim) 74 + return "\n".join(self.verbatim)
73 75
74 def insert_namespace(self, namespace): 76 def insert_namespace(self, namespace):
75 self.namespace = namespace 77 self.namespace = namespace
@@ -79,7 +81,7 @@ class HeaderFile(object): @@ -79,7 +81,7 @@ class HeaderFile(object):
79 self.body = self.body.replace(before, after) 81 self.body = self.body.replace(before, after)
80 82
81 def __str__(self): 83 def __str__(self):
82 - result = '''\ 84 + result = """\
83 #pragma once 85 #pragma once
84 86
85 // CLI11: Version {self.VERSION} 87 // CLI11: Version {self.VERSION}
@@ -96,21 +98,27 @@ class HeaderFile(object): @@ -96,21 +98,27 @@ class HeaderFile(object):
96 // Standard combined includes: 98 // Standard combined includes:
97 99
98 {self.header_str} 100 {self.header_str}
99 -'''.format(self=self) 101 +""".format(
  102 + self=self
  103 + )
100 104
101 if self.namespace: 105 if self.namespace:
102 - result += '\nnamespace ' + self.namespace + ' {\n\n'  
103 - result += '{self.verbatim_str}\n{self.body}\n'.format(self=self) 106 + result += "\nnamespace " + self.namespace + " {\n\n"
  107 + result += "{self.verbatim_str}\n{self.body}\n".format(self=self)
104 if self.namespace: 108 if self.namespace:
105 - result += '} // namespace ' + self.namespace + '\n\n' 109 + result += "} // namespace " + self.namespace + "\n\n"
106 110
107 return result 111 return result
108 112
109 113
110 -def MakeHeader(output, main_header, include_dir = '../include', namespace=None, macro=None): 114 +def MakeHeader(
  115 + output, main_header, include_dir="../include", namespace=None, macro=None
  116 +):
111 # Set tag if possible to class variable 117 # Set tag if possible to class variable
112 try: 118 try:
113 - proc = Popen(['git', 'describe', '--tags', '--always'], cwd=str(DIR), stdout=PIPE) 119 + proc = Popen(
  120 + ["git", "describe", "--tags", "--always"], cwd=str(DIR), stdout=PIPE
  121 + )
114 out, _ = proc.communicate() 122 out, _ = proc.communicate()
115 except OSError: 123 except OSError:
116 pass 124 pass
@@ -120,10 +128,10 @@ def MakeHeader(output, main_header, include_dir = &#39;../include&#39;, namespace=None, @@ -120,10 +128,10 @@ def MakeHeader(output, main_header, include_dir = &#39;../include&#39;, namespace=None,
120 128
121 base_dir = os.path.abspath(os.path.join(DIR, include_dir)) 129 base_dir = os.path.abspath(os.path.join(DIR, include_dir))
122 main_header = os.path.join(base_dir, main_header) 130 main_header = os.path.join(base_dir, main_header)
123 - licence_file = os.path.abspath(os.path.join(DIR, '../LICENSE')) 131 + licence_file = os.path.abspath(os.path.join(DIR, "../LICENSE"))
124 132
125 with open(licence_file) as f: 133 with open(licence_file) as f:
126 - HeaderFile.LICENSE = ''.join('// ' + line for line in f) 134 + HeaderFile.LICENSE = "".join("// " + line for line in f)
127 135
128 with open(main_header) as f: 136 with open(main_header) as f:
129 header = f.read() 137 header = f.read()
@@ -134,7 +142,7 @@ def MakeHeader(output, main_header, include_dir = &#39;../include&#39;, namespace=None, @@ -134,7 +142,7 @@ def MakeHeader(output, main_header, include_dir = &#39;../include&#39;, namespace=None,
134 single_header = reduce(add, headers) 142 single_header = reduce(add, headers)
135 143
136 if macro is not None: 144 if macro is not None:
137 - before = 'CLI11_' 145 + before = "CLI11_"
138 print("Converting macros", before, "->", macro) 146 print("Converting macros", before, "->", macro)
139 single_header.macro_replacement(before, macro) 147 single_header.macro_replacement(before, macro)
140 148
@@ -142,19 +150,25 @@ def MakeHeader(output, main_header, include_dir = &#39;../include&#39;, namespace=None, @@ -142,19 +150,25 @@ def MakeHeader(output, main_header, include_dir = &#39;../include&#39;, namespace=None,
142 print("Adding namespace", namespace) 150 print("Adding namespace", namespace)
143 single_header.insert_namespace(namespace) 151 single_header.insert_namespace(namespace)
144 152
145 - with open(output, 'w') as f: 153 + with open(output, "w") as f:
146 f.write(str(single_header)) 154 f.write(str(single_header))
147 155
148 print("Created", output) 156 print("Created", output)
149 157
150 -if __name__ == '__main__':  
151 - parser = ArgumentParser(usage='Convert source to single header include. Can optionally add namespace and search-replace replacements (for macros).') 158 +
  159 +if __name__ == "__main__":
  160 + parser = ArgumentParser(
  161 + usage="Convert source to single header include. Can optionally add namespace and search-replace replacements (for macros)."
  162 + )
152 parser.add_argument("output", help="Single header file output") 163 parser.add_argument("output", help="Single header file output")
153 - parser.add_argument("--main", default='CLI/CLI.hpp', help="The main include file that defines the other files")  
154 - parser.add_argument("--include", default='../include', help="The include directory") 164 + parser.add_argument(
  165 + "--main",
  166 + default="CLI/CLI.hpp",
  167 + help="The main include file that defines the other files",
  168 + )
  169 + parser.add_argument("--include", default="../include", help="The include directory")
155 parser.add_argument("--namespace", help="Add an optional namespace") 170 parser.add_argument("--namespace", help="Add an optional namespace")
156 parser.add_argument("--macro", help="Replaces CLI11_ with NEW_PREFIX_") 171 parser.add_argument("--macro", help="Replaces CLI11_ with NEW_PREFIX_")
157 args = parser.parse_args() 172 args = parser.parse_args()
158 173
159 MakeHeader(args.output, args.main, args.include, args.namespace, args.macro) 174 MakeHeader(args.output, args.main, args.include, args.namespace, args.macro)
160 -  
scripts/UpdateDownloadProj.py
@@ -5,20 +5,25 @@ from __future__ import print_function, division @@ -5,20 +5,25 @@ from __future__ import print_function, division
5 from plumbum import local, cli, FG 5 from plumbum import local, cli, FG
6 from plumbum.cmd import curl 6 from plumbum.cmd import curl
7 7
8 -FILES = [ 'https://raw.githubusercontent.com/Crascit/DownloadProject/master/DownloadProject.cmake',  
9 - 'https://raw.githubusercontent.com/Crascit/DownloadProject/master/DownloadProject.CMakeLists.cmake.in'] 8 +FILES = [
  9 + "https://raw.githubusercontent.com/Crascit/DownloadProject/master/DownloadProject.cmake",
  10 + "https://raw.githubusercontent.com/Crascit/DownloadProject/master/DownloadProject.CMakeLists.cmake.in",
  11 +]
10 12
11 DIR = local.path(__file__).dirname 13 DIR = local.path(__file__).dirname
12 14
  15 +
13 def download_file(path): 16 def download_file(path):
14 - name = path.split('/')[-1] 17 + name = path.split("/")[-1]
15 (curl[path] > name) & FG 18 (curl[path] > name) & FG
16 19
  20 +
17 class UpdateDownloadProj(cli.Application): 21 class UpdateDownloadProj(cli.Application):
18 def main(self): 22 def main(self):
19 - with local.cwd(DIR / '../cmake'): 23 + with local.cwd(DIR / "../cmake"):
20 for f in FILES: 24 for f in FILES:
21 download_file(f) 25 download_file(f)
22 26
  27 +
23 if __name__ == "__main__": 28 if __name__ == "__main__":
24 UpdateDownloadProj() 29 UpdateDownloadProj()
test_package/conanfile.py
1 from conans import ConanFile, CMake 1 from conans import ConanFile, CMake
2 import os 2 import os
3 3
  4 +
4 class HelloTestConan(ConanFile): 5 class HelloTestConan(ConanFile):
5 settings = "os", "compiler", "build_type", "arch" 6 settings = "os", "compiler", "build_type", "arch"
6 generators = "cmake" 7 generators = "cmake"
tests/OptionalTest.cpp
@@ -162,7 +162,8 @@ TEST_F(TApp, BoostOptionalEnumTest) { @@ -162,7 +162,8 @@ TEST_F(TApp, BoostOptionalEnumTest) {
162 162
163 TEST_F(TApp, BoostOptionalVector) { 163 TEST_F(TApp, BoostOptionalVector) {
164 boost::optional<std::vector<int>> opt; 164 boost::optional<std::vector<int>> opt;
165 - app.add_option_function<std::vector<int>>("-v,--vec", [&opt](const std::vector<int> &v) { opt = v; }, "some vector") 165 + app.add_option_function<std::vector<int>>(
  166 + "-v,--vec", [&opt](const std::vector<int> &v) { opt = v; }, "some vector")
166 ->expected(3); 167 ->expected(3);
167 run(); 168 run();
168 EXPECT_FALSE(opt); 169 EXPECT_FALSE(opt);