diff --git a/.devcontainer/configuration.yaml b/.devcontainer/configuration.yaml new file mode 100644 index 00000000..9b01ded0 --- /dev/null +++ b/.devcontainer/configuration.yaml @@ -0,0 +1,4 @@ +default_config: +lovelace: + mode: yaml +demo: \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..4dc365a4 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,31 @@ +// See https://aka.ms/vscode-remote/devcontainer.json for format details. +{ + "name": "Boilerplate Card Development", + "image": "ludeeus/devcontainer:monster-stable", + "context": "..", + "appPort": ["5000:5000", "9123:8123"], + "postCreateCommand": "npm install", + "runArgs": [ + "-v", + "${env:HOME}${env:USERPROFILE}/.ssh:/tmp/.ssh" // This is added so you can push from inside the container + ], + "extensions": [ + "github.vscode-pull-request-github", + "tabnine.tabnine-vscode", + "dbaeumer.vscode-eslint", + "ms-vscode.vscode-typescript-tslint-plugin", + "esbenp.prettier-vscode", + "bierner.lit-html", + "runem.lit-plugin", + "ms-python.python" + ], + "settings": { + "files.eol": "\n", + "editor.tabSize": 4, + "terminal.integrated.shell.linux": "/bin/bash", + "editor.formatOnPaste": false, + "editor.formatOnSave": true, + "editor.formatOnType": true, + "files.trimTrailingWhitespace": true + } +} diff --git a/.devcontainer/ui-lovelace.yaml b/.devcontainer/ui-lovelace.yaml new file mode 100644 index 00000000..53e61833 --- /dev/null +++ b/.devcontainer/ui-lovelace.yaml @@ -0,0 +1,8 @@ +resources: + - url: http://127.0.0.1:5000/boilerplate-card.js + type: module +views: + - cards: + - type: "custom:boilerplate-card" + name: Boilerplate card development + entity: sun.sun diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..0acc48ee --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,20 @@ +name: "Build" + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build: + name: Test build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Build + run: | + npm install + npm run build \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..ce76682f --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,30 @@ +name: Release + +on: + release: + types: [published] + +jobs: + release: + name: Prepare release + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + + # Build + - name: Build the file + run: | + cd /home/runner/work/boilerplate-card/boilerplate-card + npm install + npm run build + + # Upload build file to the releas as an asset. + - name: Upload zip to release + uses: svenstaro/upload-release-action@v1-release + + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: /home/runner/work/boilerplate-card/boilerplate-card/dist/boilerplate-card.js + asset_name: boilerplate-card.js + tag: ${{ github.ref }} + overwrite: true \ No newline at end of file diff --git a/README.md b/README.md index 6cadd4ab..e67f8019 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ Hey dude! Help me out for a couple of :beers: or a :coffee:! ### Step 1 -Clone this repo +Clone this repository ### Step 2 @@ -61,16 +61,41 @@ Do a test lint & build on the project. You can see available scripts in the pack ### Step 4 -Search the repo for all instances of "TODO" and handle the changes/suggestions +Search the repository for all instances of "TODO" and handle the changes/suggestions ### Step 5 Customize to suit your needs and contribute it back to the community -[Troubleshooting](https://github.com/thomasloven/hass-config/wiki/Lovelace-Plugins) + +## Starting a new card from boilerplate-card with [devcontainer][devcontainer] + +1. Fork and clone the repository. +2. Open the [devcontainer][devcontainer] and run `npm start` when it's ready. +3. The compiled `.js` file will be accessible on + `http://127.0.0.1:5000/custom-header.js`. +4. On a running Home Assistant installation add this to your Lovelace + `resources:` + +```yaml +- url: "http://127.0.0.1:5000/custom-header.js" + type: module +``` + +_Change "127.0.0.1" to the IP of your development machine._ + +### Bonus + +If you need a fresh test instance you can install a fresh Home Assistant instance inside the devcontainer as well. + +1. Run the command `dc start`. +2. Home Assistant will install and will eventually be running on port `9123` + +## [Troubleshooting](https://github.com/thomasloven/hass-config/wiki/Lovelace-Plugins) [commits-shield]: https://img.shields.io/github/commit-activity/y/custom-cards/boilerplate-card.svg?style=for-the-badge [commits]: https://github.com/custom-cards/boilerplate-card/commits/master +[devcontainer]: https://code.visualstudio.com/docs/remote/containers [discord]: https://discord.gg/5e9yvq [discord-shield]: https://img.shields.io/discord/330944238910963714.svg?style=for-the-badge [forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg?style=for-the-badge diff --git a/hacs.json b/hacs.json index 5ed0ceb1..22ccbbf4 100644 --- a/hacs.json +++ b/hacs.json @@ -1,4 +1,6 @@ { "name": "Boilerplate Card", - "render_readme": true + "render_readme": true, + "filename": "boilerplate-card.js", + "zip_release": true } \ No newline at end of file diff --git a/package.json b/package.json index 88e4a7f1..95162dbc 100644 --- a/package.json +++ b/package.json @@ -35,13 +35,14 @@ "rollup": "^1.26.0", "rollup-plugin-babel": "^4.3.3", "rollup-plugin-node-resolve": "^5.2.0", + "rollup-plugin-serve": "^1.0.1", "rollup-plugin-terser": "^5.1.2", "rollup-plugin-typescript2": "^0.24.3", "rollup-plugin-uglify": "^6.0.3", "typescript": "^3.6.4" }, "scripts": { - "start": "rollup -c --watch", + "start": "rollup -c rollup.config.dev.js --watch", "build": "npm run lint && npm run rollup", "lint": "eslint src/*.ts", "rollup": "rollup -c" diff --git a/rollup.config.dev.js b/rollup.config.dev.js new file mode 100644 index 00000000..c7fe4779 --- /dev/null +++ b/rollup.config.dev.js @@ -0,0 +1,30 @@ +import resolve from 'rollup-plugin-node-resolve'; +import typescript from 'rollup-plugin-typescript2'; +import babel from 'rollup-plugin-babel'; +import serve from 'rollup-plugin-serve'; +import { terser } from 'rollup-plugin-terser'; + +export default { + input: ['src/boilerplate-card.ts'], + output: { + dir: './dist', + format: 'es', + }, + plugins: [ + resolve(), + typescript(), + babel({ + exclude: 'node_modules/**', + }), + terser(), + serve({ + contentBase: './dist', + host: '0.0.0.0', + port: 5000, + allowCrossOrigin: true, + headers: { + 'Access-Control-Allow-Origin': '*', + }, + }), + ], +}; diff --git a/rollup.config.js b/rollup.config.js index 891d8b4b..41a126ee 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,19 +1,20 @@ -import resolve from 'rollup-plugin-node-resolve'; -import typescript from 'rollup-plugin-typescript2'; -import babel from 'rollup-plugin-babel'; +import resolve from "rollup-plugin-node-resolve"; +import typescript from "rollup-plugin-typescript2"; +import babel from "rollup-plugin-babel"; import { terser } from "rollup-plugin-terser"; export default { - input: ['src/boilerplate-card.ts'], + input: ["src/boilerplate-card.ts"], output: { - dir: './dist', - format: 'es', + dir: "./dist", + format: "es" }, plugins: [ resolve(), typescript(), babel({ - exclude: 'node_modules/**' + exclude: "node_modules/**" }), - terser()] + terser(), + ] };