Skip to content

Commit

Permalink
refactor: change .env to be dotenv (#1341)
Browse files Browse the repository at this point in the history
  • Loading branch information
jef authored Dec 11, 2020
1 parent 0683430 commit 9b3906c
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 23 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug-report.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ assignees: jef
## Environment

**OS:**
**.env file:**
**dotenv file:**

```dotenv
Expand Down
5 changes: 2 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,8 @@
build/
node_modules/

.env*
.*env
!.env-example
.env
dotenv
success-*.png

*.wav
Expand Down
12 changes: 6 additions & 6 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ You do not need any computer skills, smarts, or anything of that nature. You are
- To checkout a particular reference, use `git checkout <ref name>` after cloning.
- Navigate to this project by entering `cd streetmerchant`.
- Run `npm install`.
- Make a copy of `.env-example` and name it `.env`.
- Edit the `.env` file to your liking using a text editor (like [vscode](https://code.visualstudio.com/)).
- Make a copy of `dotenv-example` and name it `dotenv`.
- Edit the `dotenv` file to your liking using a text editor (like [vscode](https://code.visualstudio.com/)).
- Run `npm run start` to start.

At any point you want the program to stop, use ++ctrl+c++.
Expand All @@ -40,22 +40,22 @@ Available via GitHub Container Registry.
```sh
# to run docker nightly
docker run --cap-add=SYS_ADMIN \
-it --rm --env-file ./.env \
-it --rm --env-file ./dotenv \
ghcr.io/jef/streetmerchant:nightly

# to test notifications
docker run --cap-add=SYS_ADMIN \
-it --rm --env-file ./.env \
-it --rm --env-file ./dotenv \
ghcr.io/jef/streetmerchant:nightly test:notification:production
```

## Customization

To customize streetmerchant, make a copy of `.env-example` as `.env` and make any changes to your liking. View [Reference](reference/application.md) for more information on variables and their usage.
To customize streetmerchant, make a copy of `dotenv-example` as `dotenv` and make any changes to your liking. View [Reference](reference/application.md) for more information on variables and their usage.

???+ tip
All environment variables are optional.

## For developers

The command `npm run start:dev` can be used instead of `npm run start` to automatically restart the project when filesystem changes are detected in the `src/` folder or `.env` file.
The command `npm run start:dev` can be used instead of `npm run start` to automatically restart the project when filesystem changes are detected in the `src/` folder or `dotenv` file.
2 changes: 1 addition & 1 deletion docs/help/troubleshoot.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ As a last case scenario, use `PUPPETEER_EXECUTABLE_PATH`. This will use your com
For example:

`.env`:
`dotenv`:

```
PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome-stable
Expand Down
5 changes: 3 additions & 2 deletions .env-example → dotenv-example
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# ** All configuration variables are optional **
# Read https://github.com/jef/streetmerchant#customization for help on customizing this file
#############################################################################################
# Copy this file and name it as `dotenv` (without backticks)
# Read https://jef.codes/streetmerchant/getting-started/#customization for help on customizing this file
########################################################################################################

ASCII_BANNER=""
ASCII_COLOR=""
Expand Down
2 changes: 1 addition & 1 deletion nodemon.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
"ext": "ts",
"watch": [
"src/",
".env"
"dotenv"
]
}
16 changes: 10 additions & 6 deletions src/config.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
import {banner} from './banner';

import {config as config_} from 'dotenv';
import dotenv from 'dotenv';
import path from 'path';
import {readFileSync} from 'fs';

config_({path: path.resolve(__dirname, '../.env')});
if (path.resolve(__dirname, '../dotenv').length > 0) {
dotenv.config({path: path.resolve(__dirname, '../dotenv')});
} else {
dotenv.config({path: path.resolve(__dirname, '../.env')});
}

console.info(
banner.render(
Expand Down Expand Up @@ -66,8 +70,8 @@ function envOrNumber(environment: string | undefined, number?: number): number {

/**
* Returns environment variable, given number, or default number,
* while handling .env input errors for a Min/Max pair.
* .env errors handled:
* while handling dotenv input errors for a Min/Max pair.
* dotenv errors handled:
* - Min/Max swapped (Min larger than Max, Max smaller than Min)
* - Min larger than default Max when no Max defined
* - Max smaller than default Min when no Min defined
Expand Down Expand Up @@ -106,8 +110,8 @@ function envOrNumberMin(

/**
* Returns environment variable, given number, or default number,
* while handling .env input errors for a Min/Max pair.
* .env errors handled:
* while handling dotenv input errors for a Min/Max pair.
* dotenv errors handled:
* - Min/Max swapped (Min larger than Max, Max smaller than Min)
* - Min larger than default Max when no Max defined
* - Max smaller than default Min when no Min defined
Expand Down
4 changes: 2 additions & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {startAPIServer, stopAPIServer} from './web';
import {config} from './config'; // Needs to be loaded first
import {startAPIServer, stopAPIServer} from './web'; // eslint-disable-line sort-imports
import {Browser} from 'puppeteer';
import {config} from './config';
import {getSleepTime} from './util';
import {logger} from './logger';
import puppeteer from 'puppeteer-extra';
Expand Down
2 changes: 1 addition & 1 deletion src/notification/mqtt.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ function generateTopic(link: Link, store: Store, topic: string): string {

/**
* Basic protection against sending credentials in the clear over public networks.
* - Returns 'true' if password is supplied in .env but address/URL is not part of a private network
* - Returns 'true' if password is supplied in dotenv but address/URL is not part of a private network
* - Private networks evaluated: Class A, B, or C private IP's or linklocal URL ("*.local")
* - TLS could be implemented, however, the majority of MQTT services on the internet do not require user authentication.
* - If you find a 'cloud' MQTT broker requiring authentication for publishing alerts, consider using another MQTT service (for now).
Expand Down

0 comments on commit 9b3906c

Please sign in to comment.