@smbcloud / cli / commits / f0a4aa3

add dotenv_codegen

Seto committed Dec 30, 2025 at 22:01 UTC f0a4aa33bf7965b1b6b3875f132240ed745b442f
11 files changed +102 -7
.env.example new
+6
@@ -0,0 +1,6 @@
1 +CLI_CLIENT_ID=
2 +SIGIT_CLIENT_ID=
3 +WEB_CONSOLE_CLIENT_ID=
4 +CLI_CLIENT_SECRET=
5 +SIGIT_CLIENT_SECRET=
6 +WEB_CONSOLE_CLIENT_SECRET=
.github/workflows/ci.yml
+12
@@ -20,4 +20,16 @@ jobs:
20 steps:
21 - uses: actions/checkout@v3
22 - uses: dtolnay/rust-toolchain@stable
23 +
24 + - name: Create .env file
25 + run: |
26 + touch .env
27 + echo CLI_CLIENT_ID=${{ secrets.CLI_CLIENT_ID }} >> .env
28 + echo SIGIT_CLIENT_ID=${{ secrets.SIGIT_CLIENT_ID }} >> .env
29 + echo WEB_CONSOLE_CLIENT_ID=${{ secrets.WEB_CONSOLE_CLIENT_ID }} >> .env
30 + echo CLI_CLIENT_SECRET=${{ secrets.CLI_CLIENT_SECRET }} >> .env
31 + echo SIGIT_CLIENT_SECRET=${{ secrets.SIGIT_CLIENT_SECRET }} >> .env
32 + echo WEB_CONSOLE_CLIENT_SECRET=${{ secrets.WEB_CONSOLE_CLIENT_SECRET }} >> .env
33 + cat .env
34 +
35 - run: cargo test --all-features
.github/workflows/release-crate.yml
+11
@@ -25,6 +25,17 @@ jobs:
25 - name: Setup Rust toolchain
26 uses: dtolnay/rust-toolchain@stable
27
28 + - name: Create .env file
29 + run: |
30 + touch .env
31 + echo CLI_CLIENT_ID=${{ secrets.CLI_CLIENT_ID }} >> .env
32 + echo SIGIT_CLIENT_ID=${{ secrets.SIGIT_CLIENT_ID }} >> .env
33 + echo WEB_CONSOLE_CLIENT_ID=${{ secrets.WEB_CONSOLE_CLIENT_ID }} >> .env
34 + echo CLI_CLIENT_SECRET=${{ secrets.CLI_CLIENT_SECRET }} >> .env
35 + echo SIGIT_CLIENT_SECRET=${{ secrets.SIGIT_CLIENT_SECRET }} >> .env
36 + echo WEB_CONSOLE_CLIENT_SECRET=${{ secrets.WEB_CONSOLE_CLIENT_SECRET }} >> .env
37 + cat .env
38 +
39 - name: Publish to crates.io
40 uses: katyo/publish-crates@v2
41 with:
.github/workflows/release-github.yml
+11
@@ -47,6 +47,17 @@ jobs:
47 - name: Setup Cache
48 uses: Swatinem/rust-cache@v2
49
50 + - name: Create .env file
51 + run: |
52 + touch .env
53 + echo CLI_CLIENT_ID=${{ secrets.CLI_CLIENT_ID }} >> .env
54 + echo SIGIT_CLIENT_ID=${{ secrets.SIGIT_CLIENT_ID }} >> .env
55 + echo WEB_CONSOLE_CLIENT_ID=${{ secrets.WEB_CONSOLE_CLIENT_ID }} >> .env
56 + echo CLI_CLIENT_SECRET=${{ secrets.CLI_CLIENT_SECRET }} >> .env
57 + echo SIGIT_CLIENT_SECRET=${{ secrets.SIGIT_CLIENT_SECRET }} >> .env
58 + echo WEB_CONSOLE_CLIENT_SECRET=${{ secrets.WEB_CONSOLE_CLIENT_SECRET }} >> .env
59 + cat .env
60 +
61 - name: Build Binary
62 run: cargo build --verbose --locked --release --target ${{ matrix.target }}
63
.github/workflows/release-npm.yml
+11
@@ -74,6 +74,17 @@ jobs:
74 targets: ${{ matrix.build.TARGET }}
75 toolchain: ${{ matrix.build.TOOLCHAIN}}
76
77 + - name: Create .env file
78 + run: |
79 + touch .env
80 + echo CLI_CLIENT_ID=${{ secrets.CLI_CLIENT_ID }} >> .env
81 + echo SIGIT_CLIENT_ID=${{ secrets.SIGIT_CLIENT_ID }} >> .env
82 + echo WEB_CONSOLE_CLIENT_ID=${{ secrets.WEB_CONSOLE_CLIENT_ID }} >> .env
83 + echo CLI_CLIENT_SECRET=${{ secrets.CLI_CLIENT_SECRET }} >> .env
84 + echo SIGIT_CLIENT_SECRET=${{ secrets.SIGIT_CLIENT_SECRET }} >> .env
85 + echo WEB_CONSOLE_CLIENT_SECRET=${{ secrets.WEB_CONSOLE_CLIENT_SECRET }} >> .env
86 + cat .env
87 +
88 - name: Build
89 env:
90 GH_OAUTH_CLIENT_ID: ${{ secrets.GH_OAUTH_CLIENT_ID }}
.gitignore
+3
@@ -3,3 +3,6 @@
3
4 # Editor
5 .zed
6 +
7 +# Secrets
8 +.env
Cargo.lock
+37 -1
@@ -437,6 +437,35 @@ dependencies = [
437 "syn 2.0.110",
438 ]
439
440 +[[package]]
441 +name = "dotenv"
442 +version = "0.15.0"
443 +source = "registry+https://github.com/rust-lang/crates.io-index"
444 +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
445 +
446 +[[package]]
447 +name = "dotenv_codegen"
448 +version = "0.15.0"
449 +source = "registry+https://github.com/rust-lang/crates.io-index"
450 +checksum = "56966279c10e4f8ee8c22123a15ed74e7c8150b658b26c619c53f4a56eb4a8aa"
451 +dependencies = [
452 + "dotenv_codegen_implementation",
453 + "proc-macro-hack",
454 +]
455 +
456 +[[package]]
457 +name = "dotenv_codegen_implementation"
458 +version = "0.15.0"
459 +source = "registry+https://github.com/rust-lang/crates.io-index"
460 +checksum = "53e737a3522cd45f6adc19b644ce43ef53e1e9045f2d2de425c1f468abd4cf33"
461 +dependencies = [
462 + "dotenv",
463 + "proc-macro-hack",
464 + "proc-macro2",
465 + "quote",
466 + "syn 1.0.109",
467 +]
468 +
469 [[package]]
470 name = "encode_unicode"
471 version = "1.0.0"
@@ -1538,6 +1567,12 @@ dependencies = [
1567 "syn 2.0.110",
1568 ]
1569
1570 +[[package]]
1571 +name = "proc-macro-hack"
1572 +version = "0.5.20+deprecated"
1573 +source = "registry+https://github.com/rust-lang/crates.io-index"
1574 +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068"
1575 +
1576 [[package]]
1577 name = "proc-macro2"
1578 version = "1.0.103"
@@ -1599,7 +1634,7 @@ dependencies = [
1634 "once_cell",
1635 "socket2",
1636 "tracing",
1602 - "windows-sys 0.52.0",
1637 + "windows-sys 0.60.2",
1638 ]
1639
1640 [[package]]
@@ -2119,6 +2154,7 @@ dependencies = [
2154 name = "smbcloud-networking"
2155 version = "0.3.27"
2156 dependencies = [
2157 + "dotenv_codegen",
2158 "smbcloud-network",
2159 "url-builder",
2160 ]
crates/smbcloud-networking/.gitignore new
+1
@@ -0,0 +1 @@
1 +.env
crates/smbcloud-networking/Cargo.toml
+1
@@ -23,3 +23,4 @@ crate-type = ["cdylib", "rlib"]
23 [dependencies]
24 smbcloud-network = { workspace = true }
25 url-builder = { workspace = true }
26 +dotenv_codegen = "0.15"
crates/smbcloud-networking/src/lib.rs
+3
@@ -6,6 +6,9 @@ use {
6 url_builder::URLBuilder,
7 };
8
9 +#[macro_use]
10 +extern crate dotenv_codegen;
11 +
12 pub fn smb_base_url_builder(env: Environment, client: &SmbClient) -> URLBuilder {
13 let mut url_builder = URLBuilder::new();
14 url_builder
crates/smbcloud-networking/src/smb_client.rs
+6 -6
@@ -7,16 +7,16 @@ pub enum SmbClient {
7 impl SmbClient {
8 pub fn id(&self) -> &str {
9 match self {
10 - SmbClient::Cli => "CLI_CLIENT_ID",
11 - SmbClient::Sigit => "SIGIT_CLIENT_ID",
12 - SmbClient::WebConsole => "WEB_CONSOLE_CLIENT_ID",
10 + SmbClient::Cli => dotenv!("CLI_CLIENT_ID"),
11 + SmbClient::Sigit => dotenv!("SIGIT_CLIENT_ID"),
12 + SmbClient::WebConsole => dotenv!("WEB_CONSOLE_CLIENT_ID"),
13 }
14 }
15 pub fn secret(&self) -> &str {
16 match self {
17 - SmbClient::Cli => "CLI_CLIENT_SECRET",
18 - SmbClient::Sigit => "SIGIT_CLIENT_SECRET",
19 - SmbClient::WebConsole => "WEB_CONSOLE_CLIENT_SECRET",
17 + SmbClient::Cli => dotenv!("CLI_CLIENT_SECRET"),
18 + SmbClient::Sigit => dotenv!("SIGIT_CLIENT_SECRET"),
19 + SmbClient::WebConsole => dotenv!("WEB_CONSOLE_CLIENT_SECRET"),
20 }
21 }
22 }