Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: change .env to be dotenv #1341

Merged
merged 2 commits into from
Dec 11, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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