WshDotEnv
DotEnv-like module for WSH (Windows Script Host) that reads/writes environment values in a .env file.
tuckn/WshModeJs basic applications structure
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.
Operating environment
Works on JScript in Windows.
Installation
(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).
Usage
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" }
To Change Env-Path
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'
Together with another WshModeJs Apps
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.
Dependency 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
Documentation
See all specifications here and also below.
License
MIT
Copyright (c) 2020 Tuckn