Skip to content

Commit 315ef1a

Browse files
committed
Define features for each varset.
1 parent 071781c commit 315ef1a

File tree

4 files changed

+173
-4
lines changed

4 files changed

+173
-4
lines changed

Rakefile

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
VERSION = File.read('VERSION').chomp
2+
3+
task default: %w(varset:list)
4+
5+
namespace :varset do
6+
task :list do
7+
varsets.each { |varset| puts varset }
8+
end
9+
10+
task :features do
11+
puts %{all = [#{varsets.map(&:to_s).map(&:inspect).join(', ')}]}
12+
varsets.each { |varset| puts "#{varset} = []" }
13+
end
14+
15+
task :'features.rs' do
16+
varsets.each do |varset|
17+
puts %{ #[cfg(feature = "#{varset}")]}
18+
puts %{ #{varset.to_s.inspect},}
19+
end
20+
end
21+
22+
task :modules do
23+
varsets.each do |varset|
24+
puts
25+
puts %{#[cfg(feature = "#{varset}")]}
26+
puts %{pub mod #{varset};}
27+
puts %{#[cfg(feature = "#{varset}")]}
28+
puts %{pub use #{varset}::*;}
29+
end
30+
end
31+
end
32+
33+
def varsets
34+
require 'pathname'
35+
result = Dir['lib/getenv/src/varsets/*.rs'].map do |p|
36+
Pathname(p).basename.sub_ext('').to_s.to_sym
37+
end
38+
result.sort
39+
end

lib/getenv/Cargo.toml

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,53 @@ publish.workspace = true
1616

1717
[features]
1818
default = ["all", "std"]
19-
all = []
2019
std = ["dogma/std"]
21-
unstable = []
20+
all = [
21+
"aws",
22+
"cargo",
23+
"conda",
24+
"cuda",
25+
"docker",
26+
"git",
27+
"go",
28+
"homebrew",
29+
"java",
30+
"locale",
31+
"macos",
32+
"near",
33+
"node",
34+
"openssl",
35+
"posix",
36+
"proxy",
37+
"python",
38+
"ruby",
39+
"rust",
40+
"ssh",
41+
"windows",
42+
"xdg",
43+
]
44+
aws = []
45+
cargo = []
46+
conda = []
47+
cuda = []
48+
docker = []
49+
git = []
50+
go = []
51+
homebrew = []
52+
java = []
53+
locale = []
54+
macos = []
55+
near = []
56+
node = []
57+
openssl = []
58+
posix = []
59+
proxy = []
60+
python = []
61+
ruby = []
62+
rust = []
63+
ssh = []
64+
windows = []
65+
xdg = []
2266

2367
[dev-dependencies]
2468

lib/getenv/src/features.rs

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,48 @@
22

33
/// The set of features that are enabled in this build of the crate.
44
pub static FEATURES: &[&str] = &[
5-
#[cfg(feature = "unstable")]
6-
"unstable",
5+
#[cfg(feature = "aws")]
6+
"aws",
7+
#[cfg(feature = "cargo")]
8+
"cargo",
9+
#[cfg(feature = "conda")]
10+
"conda",
11+
#[cfg(feature = "cuda")]
12+
"cuda",
13+
#[cfg(feature = "docker")]
14+
"docker",
15+
#[cfg(feature = "git")]
16+
"git",
17+
#[cfg(feature = "go")]
18+
"go",
19+
#[cfg(feature = "homebrew")]
20+
"homebrew",
21+
#[cfg(feature = "java")]
22+
"java",
23+
#[cfg(feature = "locale")]
24+
"locale",
25+
#[cfg(feature = "macos")]
26+
"macos",
27+
#[cfg(feature = "near")]
28+
"near",
29+
#[cfg(feature = "node")]
30+
"node",
31+
#[cfg(feature = "openssl")]
32+
"openssl",
33+
#[cfg(feature = "posix")]
34+
"posix",
35+
#[cfg(feature = "proxy")]
36+
"proxy",
37+
#[cfg(feature = "python")]
38+
"python",
39+
#[cfg(feature = "ruby")]
40+
"ruby",
41+
#[cfg(feature = "rust")]
42+
"rust",
43+
#[cfg(feature = "ssh")]
44+
"ssh",
45+
#[cfg(feature = "windows")]
46+
"windows",
47+
#[cfg(feature = "xdg")]
48+
"xdg",
749
];

lib/getenv/src/varsets.rs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,111 @@
11
// This is free and unencumbered software released into the public domain.
22

3+
#[cfg(feature = "aws")]
34
pub mod aws;
5+
#[cfg(feature = "aws")]
46
pub use aws::*;
57

8+
#[cfg(feature = "cargo")]
69
pub mod cargo;
10+
#[cfg(feature = "cargo")]
711
pub use cargo::*;
812

13+
#[cfg(feature = "conda")]
914
pub mod conda;
15+
#[cfg(feature = "conda")]
1016
pub use conda::*;
1117

18+
#[cfg(feature = "cuda")]
1219
pub mod cuda;
20+
#[cfg(feature = "cuda")]
1321
pub use cuda::*;
1422

23+
#[cfg(feature = "docker")]
1524
pub mod docker;
25+
#[cfg(feature = "docker")]
1626
pub use docker::*;
1727

28+
#[cfg(feature = "git")]
1829
pub mod git;
30+
#[cfg(feature = "git")]
1931
pub use git::*;
2032

33+
#[cfg(feature = "go")]
2134
pub mod go;
35+
#[cfg(feature = "go")]
2236
pub use go::*;
2337

38+
#[cfg(feature = "homebrew")]
2439
pub mod homebrew;
40+
#[cfg(feature = "homebrew")]
2541
pub use homebrew::*;
2642

43+
#[cfg(feature = "java")]
2744
pub mod java;
45+
#[cfg(feature = "java")]
2846
pub use java::*;
2947

48+
#[cfg(feature = "locale")]
3049
pub mod locale;
50+
#[cfg(feature = "locale")]
3151
pub use locale::*;
3252

53+
#[cfg(feature = "macos")]
3354
pub mod macos;
55+
#[cfg(feature = "macos")]
3456
pub use macos::*;
3557

58+
#[cfg(feature = "near")]
3659
pub mod near;
60+
#[cfg(feature = "near")]
3761
pub use near::*;
3862

63+
#[cfg(feature = "node")]
3964
pub mod node;
65+
#[cfg(feature = "node")]
4066
pub use node::*;
4167

68+
#[cfg(feature = "openssl")]
4269
pub mod openssl;
70+
#[cfg(feature = "openssl")]
4371
pub use openssl::*;
4472

73+
#[cfg(feature = "posix")]
4574
pub mod posix;
75+
#[cfg(feature = "posix")]
4676
pub use posix::*;
4777

78+
#[cfg(feature = "proxy")]
4879
pub mod proxy;
80+
#[cfg(feature = "proxy")]
4981
pub use proxy::*;
5082

83+
#[cfg(feature = "python")]
5184
pub mod python;
85+
#[cfg(feature = "python")]
5286
pub use python::*;
5387

88+
#[cfg(feature = "ruby")]
5489
pub mod ruby;
90+
#[cfg(feature = "ruby")]
5591
pub use ruby::*;
5692

93+
#[cfg(feature = "rust")]
5794
pub mod rust;
95+
#[cfg(feature = "rust")]
5896
pub use rust::*;
5997

98+
#[cfg(feature = "ssh")]
6099
pub mod ssh;
100+
#[cfg(feature = "ssh")]
61101
pub use ssh::*;
62102

103+
#[cfg(feature = "windows")]
63104
pub mod windows;
105+
#[cfg(feature = "windows")]
64106
pub use windows::*;
65107

108+
#[cfg(feature = "xdg")]
66109
pub mod xdg;
110+
#[cfg(feature = "xdg")]
67111
pub use xdg::*;

0 commit comments

Comments
 (0)