DotEnv-like module for WSH (Windows Script Host) that reads/writes environment values in a .env file.
WshBasicApps
├─ WshCommander (./dist/module.js)
├─ WshConfigStore (./dist/module.js)
├─ WshDotEnv - This repository (./dist/module.js)
├─ WshLogger (./dist/module.js)
└─ WshModeJs (./dist/bundle.js)
WshBasicApps can use all the above modules.
Works on JScript in Windows.
(1) Create a directory of your WSH project.
D:\> mkdir MyWshProject
D:\> cd MyWshProject
(2) Download this ZIP and unzip or Use the following git
command.
> git clone https://github.com/tuckn/WshDotEnv.git ./WshModules/WshDotEnv
or
> git submodule add https://github.com/tuckn/WshDotEnv.git ./WshModules/WshDotEnv
(3) Create your JScript (.js) file. For Example,
D:\MyWshProject\
├─ MyScript.js <- Your JScript code will be written in this.
└─ WshModules\
└─ WshDotEnv\
└─ dist\
└─ bundle.js
I recommend JScript (.js) file encoding to be UTF-8 [BOM, CRLF].
(4) Create your WSF packaging scripts file (.wsf).
D:\MyWshProject\
├─ Run.wsf <- WSH entry file
├─ MyScript.js
└─ WshModules\
└─ WshDotEnv\
└─ dist\
└─ bundle.js
And you should include .../dist/bundle.js into the WSF file. For Example, The content of the above Run.wsf is
<package>
<job id = "run">
<script language="JScript" src="./WshModules/WshDotEnv/dist/bundle.js"></script>
<script language="JScript" src="./MyScript.js"></script>
</job>
</package>
I recommend this WSH file (.wsf) encoding to be UTF-8 [BOM, CRLF].
Awesome! This WSH configuration allows you to use the following functions in JScript (.\MyScript.js).
Now the above .\MyScript.js (JScript) can handle .env file. If the contents of .env file are following...
# Lines beginning with # are threated as comments,
EMPTY=
JSON={ foo: "bar" }
WHITE_SPACE= some value
SINGLE_QUOTE=' some value '
DOUBLE_QUOTE=" Some Value "
MULTILINE="new
line"
DIR_7ZIP=C:\Program Files\7-Zip
PATH_CONFIG=.\.config\office-smb-resources.json
var dotenv = Wsh.DotEnv;
dotenv.config(); // Default: Reads the current directory .env file
console.dir(process.env);
// Outputs: {
// ALLUSERSPROFILE: "C:\ProgramData",
// APPDATA: "C:\Users\UserName\AppData\Roaming",
// CommonProgramFiles: "C:\Program Files\Common Files",
// CommonProgramFiles(x86): "C:\Program Files (x86)\Common Files",
// CommonProgramW6432: "C:\Program Files\Common Files",
// ..
// ...
// EMPTY: "",
// JSON: { foo: "bar" },
// WHITE_SPACE: "some value",
// SINGLE_QUOTE: " some value ",
// DOUBLE_QUOTE: " Some Value ",
// MULTILINE: "new
// line",
// DIR_7ZIP: "C:\Program Files\7-Zip",
// PATH_CONFIG: ".\.config\office-smb-resources.json" }
var dotenv = Wsh.DotEnv;
// Ex 1. Default: Reads the current directory .env file
dotenv.config();
// Ex 2. Reads the WSH script directory .env file
dotenv.config({ path: 'portable' });
// Ex 3. Reads the user's directory (%USERPROFILE%) .env file. e.g. C:\Users\<Name>\.env
dotenv.config({ path: 'userProfile' });
// Ex 4. Reads the custom file
dotenv.config({ path: 'D:\\temp\\myValue.txt' });
// Can use the date literal
dotenv.config({ path: 'D:\\#{yyyy}\\#{MM}\\#{dd}.env', parsesDate: true });
// Will convert the path to 'D:\\2020\\08\\10.env'
If you want to use it together with other WshModeJs Apps, install as following
> git clone https://github.com/tuckn/WshModeJs.git ./WshModules/WshModeJs
> git clone https://github.com/tuckn/WshCommander.git ./WshModules/WshCommander
> git clone https://github.com/tuckn/WshDotEnv.git ./WshModules/WshDotEnv
or
> git submodule add https://github.com/tuckn/WshModeJs.git ./WshModules/WshModeJs
> git submodule add https://github.com/tuckn/WshCommander.git ./WshModules/WshCommander
> git submodule add https://github.com/tuckn/WshDotEnv.git ./WshModules/WshDotEnv
The definition in the WSF packaging scripts file (.wsf) is as follows.
<package>
<job id = "run">
<script language="JScript" src="./WshModules/WshModeJs/dist/bundle.js"></script>
<script language="JScript" src="./WshModules/WshCommander/dist/module.js"></script>
<script language="JScript" src="./WshModules/WshDotEnv/dist/module.js"></script>
<script language="JScript" src="./MyScript.js"></script>
</job>
</package>
Please note the difference between .../dist/bundle.js
and .../dist/module.js
.
I recommend using WshBasicApps. That includes all modules.
You can also use the following helper functions in your JScript (.\MyScript.js).
- tuckn/WshPolyfill
- tuckn/WshUtil
- tuckn/WshPath
- tuckn/WshOS
- tuckn/WshFileSystem
- tuckn/WshProcess
- tuckn/WshChildProcess
- tuckn/WshNet
- tuckn/WshModeJs
See all specifications here and also below.
MIT
Copyright (c) 2020 Tuckn