Skip to content

Commit

Permalink
Merge branch 'pr/589' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
AlCalzone committed Sep 28, 2020
2 parents ff3daea + 0f34a9d commit 9caaab8
Show file tree
Hide file tree
Showing 12 changed files with 94 additions and 96 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
## __WORK IN PROGRESS__
(at the beginning of a new line )
-->

## __WORK IN PROGRESS__
* (UncleSamSwiss) Remove rsync from parcel devcontainer (#589) · [Migration guide](docs/updates/20200924_devcontainer_parcel.md)
* (AlCalzone) Fix TypeError resulting from CI answer change (fixes #590)

## 1.29.0 (2020-09-22)
Expand Down
62 changes: 62 additions & 0 deletions docs/updates/20200924_devcontainer_parcel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Remove rsync from parcel devcontainer

This migration is **only relevant** if you're using a **React UI** for Admin.

Since the introduction of [VSCode devcontainers](./20200902_vscode_devcontainers.md) we were using our own file system polling for the `parcel` container.
Because parcel (or rather Chokidar) supports polling, the container setup can be simplified.

## Simple migration

- Recreate the `.devcontainer` folder or copy it from the template on GitHub
- Replace the `parcel` container definition in `./.devcontainers/docker-compose.yml` with the newly created
- Delete the folder `./.devcontainers/parcel` and replace it with the newly generated folder of the same name
- Rebuild the remote container with the following command in VS Code:
`Remote-Containers: Rebuild Container`

## Manual migration

- Change the `parcel` section of `./.devcontainers/docker-compose.yml` to the following (add the environment variable `CHOKIDAR_USEPOLLING`):

```yml
parcel:
container_name: parcel-<YOUR_ADAPTER_NAME>
build: ./parcel
expose:
- 1234
ports:
- "1235:1235"
volumes:
- ..:/workspace:cached
environment:
- CHOKIDAR_USEPOLLING=1
```
- Remove the following two scripts in `./.devcontainers/parcel/`
- `run-sync.sh`
- `sync.sh`
- Change `./.devcontainers/parcel/run.sh` to contain the following:

```bash
#!/bin/bash
cd /workspace
echo "Installing all dependencies..."
npm install
npm run watch:parcel
```

- Change `./.devcontainers/parcel/Dockerfile` to contain the following:

```Dockerfile
FROM node:12
RUN mkdir -p /usr/app
COPY *.sh /usr/app/
CMD /bin/bash -c "/usr/app/run.sh"
```

- Rebuild the remote container with the following command in VS Code:
`Remote-Containers: Rebuild Container`
2 changes: 2 additions & 0 deletions templates/_devcontainer/docker-compose.yml.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ ${needsParcel ? (`
- '1235:1235'
volumes:
- ..:/workspace:cached
environment:
- CHOKIDAR_USEPOLLING=1
`) : ""}
# Reverse proxy to load up-to-date admin sources from the repo
nginx:
Expand Down
3 changes: 0 additions & 3 deletions templates/_devcontainer/parcel/_Dockerfile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,7 @@ const templateFunction: TemplateFunction = answers => {
const template = `
FROM node:12
RUN apt-get update && apt-get install -y rsync
RUN mkdir -p /usr/app
RUN mkdir -p /usr/workspace
COPY *.sh /usr/app/
Expand Down
21 changes: 0 additions & 21 deletions templates/_devcontainer/parcel/run-sync.sh.ts

This file was deleted.

10 changes: 2 additions & 8 deletions templates/_devcontainer/parcel/run.sh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,12 @@ const templateFunction: TemplateFunction = answers => {

const template = `
#!/bin/bash
echo "Starting initial sync..."
/usr/app/sync.sh
cd /usr/workspace
cd /workspace
echo "Installing all dependencies..."
npm install
# run the following two commands in parallel (honoring Ctrl-C)
# - npm run watch:parcel
# - /usr/app/run-sync.sh
(echo "npm run watch:parcel"; echo "/usr/app/run-sync.sh") | xargs -I{} -n 1 -P 2 /bin/bash -c "{}"
npm run watch:parcel
`;
return template.trim();
};
Expand Down
17 changes: 0 additions & 17 deletions templates/_devcontainer/parcel/sync.sh.ts

This file was deleted.

52 changes: 25 additions & 27 deletions templates/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,6 @@
import { TemplateFunction } from "../src/lib/createAdapter";

const templates: { name: string, templateFunction: TemplateFunction }[] = [
{ name: "LICENSE.ts", templateFunction: require("./LICENSE") },
{ name: "README.md.ts", templateFunction: require("./README.md") },
{ name: "_babelrc.ts", templateFunction: require("./_babelrc") },
{ name: "_create-adapter.json.ts", templateFunction: require("./_create-adapter.json") },
{ name: "_devcontainer/README.md.ts", templateFunction: require("./_devcontainer/README.md") },
{ name: "_devcontainer/devcontainer.json.ts", templateFunction: require("./_devcontainer/devcontainer.json") },
{ name: "_devcontainer/docker-compose.yml.ts", templateFunction: require("./_devcontainer/docker-compose.yml") },
{ name: "_devcontainer/iobroker/_Dockerfile.ts", templateFunction: require("./_devcontainer/iobroker/_Dockerfile") },
{ name: "_devcontainer/nginx/nginx.conf.ts", templateFunction: require("./_devcontainer/nginx/nginx.conf") },
{ name: "_devcontainer/parcel/_Dockerfile.ts", templateFunction: require("./_devcontainer/parcel/_Dockerfile") },
{ name: "_devcontainer/parcel/run-sync.sh.ts", templateFunction: require("./_devcontainer/parcel/run-sync.sh") },
{ name: "_devcontainer/parcel/run.sh.ts", templateFunction: require("./_devcontainer/parcel/run.sh") },
{ name: "_devcontainer/parcel/sync.sh.ts", templateFunction: require("./_devcontainer/parcel/sync.sh") },
{ name: "_eslintrc_javascript.json.ts", templateFunction: require("./_eslintrc_javascript.json") },
{ name: "_eslintrc_typescript.js.ts", templateFunction: require("./_eslintrc_typescript.js") },
{ name: "_github/ISSUE_TEMPLATE/bug_report.md.ts", templateFunction: require("./_github/ISSUE_TEMPLATE/bug_report.md") },
{ name: "_github/auto-merge.yml.ts", templateFunction: require("./_github/auto-merge.yml") },
{ name: "_github/dependabot.yml.ts", templateFunction: require("./_github/dependabot.yml") },
{ name: "_github/workflows/dependabot-auto-merge.yml.ts", templateFunction: require("./_github/workflows/dependabot-auto-merge.yml") },
{ name: "_github/workflows/test-and-release.yml.ts", templateFunction: require("./_github/workflows/test-and-release.yml") },
{ name: "_gitignore.ts", templateFunction: require("./_gitignore") },
{ name: "_npmignore.ts", templateFunction: require("./_npmignore") },
{ name: "_prettierignore.ts", templateFunction: require("./_prettierignore") },
{ name: "_prettierrc.js.ts", templateFunction: require("./_prettierrc.js") },
{ name: "_travis.yml.ts", templateFunction: require("./_travis.yml") },
{ name: "_vscode/extensions.json.ts", templateFunction: require("./_vscode/extensions.json") },
{ name: "_vscode/settings.json.ts", templateFunction: require("./_vscode/settings.json") },
{ name: "admin/admin.d.ts.ts", templateFunction: require("./admin/admin.d.ts") },
{ name: "admin/custom_m.html.ts", templateFunction: require("./admin/custom_m.html") },
{ name: "admin/icon.png.ts", templateFunction: require("./admin/icon.png") },
Expand All @@ -47,10 +20,12 @@ const templates: { name: string, templateFunction: TemplateFunction }[] = [
{ name: "io-package.json.ts", templateFunction: require("./io-package.json") },
{ name: "lib/adapter-config.d.ts.ts", templateFunction: require("./lib/adapter-config.d.ts") },
{ name: "lib/tools.js.ts", templateFunction: require("./lib/tools.js") },
{ name: "LICENSE.ts", templateFunction: require("./LICENSE") },
{ name: "main.es6.js.ts", templateFunction: require("./main.es6.js") },
{ name: "main.js.ts", templateFunction: require("./main.js") },
{ name: "main.test.js.ts", templateFunction: require("./main.test.js") },
{ name: "package.json.ts", templateFunction: require("./package.json") },
{ name: "README.md.ts", templateFunction: require("./README.md") },
{ name: "src/lib/tools.ts.ts", templateFunction: require("./src/lib/tools.ts") },
{ name: "src/main.es6.ts", templateFunction: require("./src/main.es6") },
{ name: "src/main.test.ts.ts", templateFunction: require("./src/main.test.ts") },
Expand All @@ -66,5 +41,28 @@ const templates: { name: string, templateFunction: TemplateFunction }[] = [
{ name: "widgets/style.css.ts", templateFunction: require("./widgets/style.css") },
{ name: "widgets/template.html.ts", templateFunction: require("./widgets/template.html") },
{ name: "widgets/template.js.ts", templateFunction: require("./widgets/template.js") },
{ name: "_babelrc.ts", templateFunction: require("./_babelrc") },
{ name: "_create-adapter.json.ts", templateFunction: require("./_create-adapter.json") },
{ name: "_devcontainer/devcontainer.json.ts", templateFunction: require("./_devcontainer/devcontainer.json") },
{ name: "_devcontainer/docker-compose.yml.ts", templateFunction: require("./_devcontainer/docker-compose.yml") },
{ name: "_devcontainer/iobroker/_Dockerfile.ts", templateFunction: require("./_devcontainer/iobroker/_Dockerfile") },
{ name: "_devcontainer/nginx/nginx.conf.ts", templateFunction: require("./_devcontainer/nginx/nginx.conf") },
{ name: "_devcontainer/parcel/run.sh.ts", templateFunction: require("./_devcontainer/parcel/run.sh") },
{ name: "_devcontainer/parcel/_Dockerfile.ts", templateFunction: require("./_devcontainer/parcel/_Dockerfile") },
{ name: "_devcontainer/README.md.ts", templateFunction: require("./_devcontainer/README.md") },
{ name: "_eslintrc_javascript.json.ts", templateFunction: require("./_eslintrc_javascript.json") },
{ name: "_eslintrc_typescript.js.ts", templateFunction: require("./_eslintrc_typescript.js") },
{ name: "_github/auto-merge.yml.ts", templateFunction: require("./_github/auto-merge.yml") },
{ name: "_github/dependabot.yml.ts", templateFunction: require("./_github/dependabot.yml") },
{ name: "_github/ISSUE_TEMPLATE/bug_report.md.ts", templateFunction: require("./_github/ISSUE_TEMPLATE/bug_report.md") },
{ name: "_github/workflows/dependabot-auto-merge.yml.ts", templateFunction: require("./_github/workflows/dependabot-auto-merge.yml") },
{ name: "_github/workflows/test-and-release.yml.ts", templateFunction: require("./_github/workflows/test-and-release.yml") },
{ name: "_gitignore.ts", templateFunction: require("./_gitignore") },
{ name: "_npmignore.ts", templateFunction: require("./_npmignore") },
{ name: "_prettierignore.ts", templateFunction: require("./_prettierignore") },
{ name: "_prettierrc.js.ts", templateFunction: require("./_prettierrc.js") },
{ name: "_travis.yml.ts", templateFunction: require("./_travis.yml") },
{ name: "_vscode/extensions.json.ts", templateFunction: require("./_vscode/extensions.json") },
{ name: "_vscode/settings.json.ts", templateFunction: require("./_vscode/settings.json") },
];
export = templates;
3 changes: 0 additions & 3 deletions test/baselines/devcontainer/.devcontainer/parcel/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
FROM node:12

RUN apt-get update && apt-get install -y rsync

RUN mkdir -p /usr/app
RUN mkdir -p /usr/workspace

COPY *.sh /usr/app/

Expand Down
6 changes: 0 additions & 6 deletions test/baselines/devcontainer/.devcontainer/parcel/run-sync.sh

This file was deleted.

10 changes: 2 additions & 8 deletions test/baselines/devcontainer/.devcontainer/parcel/run.sh
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
#!/bin/bash
echo "Starting initial sync..."
/usr/app/sync.sh

cd /usr/workspace
cd /workspace

echo "Installing all dependencies..."
npm install

# run the following two commands in parallel (honoring Ctrl-C)
# - npm run watch:parcel
# - /usr/app/run-sync.sh
(echo "npm run watch:parcel"; echo "/usr/app/run-sync.sh") | xargs -I{} -n 1 -P 2 /bin/bash -c "{}"
npm run watch:parcel
2 changes: 0 additions & 2 deletions test/baselines/devcontainer/.devcontainer/parcel/sync.sh

This file was deleted.

0 comments on commit 9caaab8

Please sign in to comment.