@@ -27,32 +27,52 @@ doctest = false
27
27
[features ]
28
28
default = [" max" ]
29
29
30
- max = [" fast" , " pretty-cli" , " http-client-curl" , " gitoxide-core-tools" , " gitoxide-core-blocking-client" ,
31
- " prodash-render-line" , " prodash-render-tui" ,
32
- " prodash/render-line-autoconfigure" ]
30
+ # # Makes the crate execute as fast as possible by supporting parallel computation of otherwise long-running functions
31
+ # # as well as fast, hardware accelerated hashing, along with a faster zlib backend.
32
+ # # If disabled, the binary will be visibly smaller.
33
+ fast = [" git-features/parallel" , " git-features/fast-sha1" , " git-features/zlib-ng-compat" ]
34
+
35
+ # # Use `clap` 3.0 to build the prettiest, best documented and most user-friendly CLI at the expense of binary size.
36
+ # # Provides a terminal user interface for detailed and exhaustive progress.
37
+ # # Provides a line renderer for leaner progress display, without the need for a full-blown TUI.
38
+ pretty-cli = [ " gitoxide-core/serde1" , " prodash/progress-tree" , " prodash/progress-tree-log" , " prodash/local-time" , " gitoxide-core/local-time-support" , " env_logger" ]
39
+
40
+ # # The `--verbose` flag will be powered by an interactive progress mechanism that doubles as log as well as interactive progress
41
+ # # that appears after a short duration.
42
+ prodash-render-line-crossterm = [" prodash-render-line" , " prodash/render-line-crossterm" , " atty" , " crosstermion" ]
43
+
33
44
34
- lean = [" fast" , " pretty-cli" , " http-client-curl" , " gitoxide-core-tools" , " gitoxide-core-blocking-client" ,
35
- " prodash-render-line" ]
36
- lean-async = [" fast" , " pretty-cli" , " gitoxide-core-tools" , " gitoxide-core-async-client" ,
37
- " prodash-render-line" ]
45
+ # ! ### Convenience Features
46
+ # ! These combine common choices of the above features to represent typical builds
38
47
48
+ # # *fast* + *prodash-render-tui-crossterm* + *prodash-render-line-crossterm* + *http* + *gitoxide-core-tools* + *client-networking*
49
+ max = [" fast" , " pretty-cli" , " http-client-curl" , " gitoxide-core-tools" , " gitoxide-core-blocking-client" , " prodash-render-line" , " prodash-render-tui" , " prodash/render-line-autoconfigure" ]
50
+
51
+ # # *fast* + *prodash-render-line-crossterm* + *gitoxide-core-tools* + *client-networking*.
52
+ lean = [" fast" , " pretty-cli" , " http-client-curl" , " gitoxide-core-tools" , " gitoxide-core-blocking-client" , " prodash-render-line" ]
53
+ # # fast* + *prodash-render-line-crossterm* + *gitoxide-core-tools* + *client-async-networking*.
54
+ # # Due to async client-networking not being implemented for most transports, this one supports only the 'git' transport.
55
+ # # It uses, however, a fully asynchronous networking implementation which can serve a real-world example on how to implement custom async transports.
56
+ lean-async = [" fast" , " pretty-cli" , " gitoxide-core-tools" , " gitoxide-core-async-client" , " prodash-render-line" ]
57
+
58
+ # # As small as it can possibly be, no threading, no fast sha1, log based progress only, rust based zlib implementation.
59
+ # # no networking, local operations only.
39
60
small = [" pretty-cli" , " git-features/rustsha1" , " git-features/zlib-rust-backend" , " prodash/progress-log" , " atty" ]
40
61
62
+ # ! ### `gitoxide-core` Configuration
63
+
64
+ # # A way to enable all `gitoxide-core` tools found in `gix tools`
41
65
gitoxide-core-tools = [" gitoxide-core/organize" , " gitoxide-core/estimate-hours" ]
42
- gitoxide-core-blocking-client = [" gitoxide-core/blocking-client" ]
43
- gitoxide-core-async-client = [" gitoxide-core/async-client" , " futures-lite" ]
44
- http-client-curl = [" git-transport-for-configuration-only/http-client-curl" ]
45
- fast = [" git-features/parallel" , " git-features/fast-sha1" , " git-features/zlib-ng-compat" ]
46
66
47
- pretty-cli = [
48
- " gitoxide-core/serde1" ,
49
- " prodash/progress-tree" ,
50
- " prodash/progress-tree-log" ,
51
- " prodash/local-time" ,
52
- " gitoxide-core/local-time-support" ,
53
- " env_logger" ]
67
+ # ! #### Mutually Exclusive Networking
68
+ # ! If both are set a compile error is triggered. This also means that `cargo … --all-features` will fail.
54
69
55
- prodash-render-line-crossterm = [" prodash-render-line" , " prodash/render-line-crossterm" , " atty" , " crosstermion" ]
70
+ # # Use blocking client networking.
71
+ gitoxide-core-blocking-client = [" gitoxide-core/blocking-client" ]
72
+ # # Support synchronous 'http' and 'https' transports (e.g. for clone, fetch and push) at the expense of compile times and binary size.
73
+ http-client-curl = [" git-transport-for-configuration-only/http-client-curl" ]
74
+ # # Use async client networking.
75
+ gitoxide-core-async-client = [" gitoxide-core/async-client" , " futures-lite" ]
56
76
57
77
# internal
58
78
prodash-render-tui = [" prodash/render-tui" , " prodash/render-tui-crossterm" , " prodash/progress-tree" , " futures-lite" ]
@@ -75,6 +95,8 @@ env_logger = { version = "0.9.0", optional = true, default-features = false, fea
75
95
crosstermion = { version = " 0.9.0" , optional = true , default-features = false }
76
96
futures-lite = { version = " 1.12.0" , optional = true , default-features = false , features = [" std" ] }
77
97
98
+ document-features = { version = " 0.1.0" , optional = true }
99
+
78
100
[profile .dev .package ]
79
101
git-object = { opt-level = 3 }
80
102
git-ref = { opt-level = 3 }
@@ -140,3 +162,6 @@ members = [
140
162
exclude = [" cargo-smart-release/tests/fixtures/tri-depth-workspace/a" ,
141
163
" cargo-smart-release/tests/fixtures/tri-depth-workspace/b" ,
142
164
" cargo-smart-release/tests/fixtures/tri-depth-workspace/c" ]
165
+
166
+ [package .metadata .docs .rs ]
167
+ features = [" document-features" , " max" ]
0 commit comments