mirror of
https://github.com/hassio-addons/addon-vscode.git
synced 2025-05-02 18:21:23 +00:00
✨ Initial add-on code
This commit is contained in:
parent
416e586602
commit
344e8f48be
20 changed files with 810 additions and 0 deletions
280
README.md
Normal file
280
README.md
Normal file
|
@ -0,0 +1,280 @@
|
||||||
|
# Community Hass.io Add-ons: Visual Studio Code
|
||||||
|
|
||||||
|
[![GitHub Release][releases-shield]][releases]
|
||||||
|
![Project Stage][project-stage-shield]
|
||||||
|
[![License][license-shield]](LICENSE.md)
|
||||||
|
|
||||||
|
![Supports aarch64 Architecture][aarch64-shield]
|
||||||
|
![Supports amd64 Architecture][amd64-shield]
|
||||||
|
![Supports armhf Architecture][armhf-shield]
|
||||||
|
![Supports armv7 Architecture][armv7-shield]
|
||||||
|
![Supports i386 Architecture][i386-shield]
|
||||||
|
|
||||||
|
[![GitLab CI][gitlabci-shield]][gitlabci]
|
||||||
|
![Project Maintenance][maintenance-shield]
|
||||||
|
[![GitHub Activity][commits-shield]][commits]
|
||||||
|
|
||||||
|
[![Discord][discord-shield]][discord]
|
||||||
|
[![Community Forum][forum-shield]][forum]
|
||||||
|
|
||||||
|
[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee]
|
||||||
|
|
||||||
|
[![Support my work on Patreon][patreon-shield]][patreon]
|
||||||
|
|
||||||
|
Visual Studio Code, accessible through the browser.
|
||||||
|
|
||||||
|
## About
|
||||||
|
|
||||||
|
This add-on runs Visual Studio Code, allowing you to edit your Home Assistant
|
||||||
|
configuration straight from the web browser and can be embeded straight
|
||||||
|
into the Home Assistant frontend UI.
|
||||||
|
|
||||||
|
Visual Studio Code runs as a remote server using `code-server`, and is a
|
||||||
|
fully fletched VSCode experience.
|
||||||
|
|
||||||
|
The add-on has the Home Assistant and MDI icons extensions pre-installed
|
||||||
|
and pre-configured right out of the box. This mean that auto completion works
|
||||||
|
instantly, without the need for configuring anything.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
The installation of this add-on is pretty straightforward and not different in
|
||||||
|
comparison to installing any other Hass.io add-on.
|
||||||
|
|
||||||
|
1. [Add our Hass.io add-ons repository][repository] to your Hass.io instance.
|
||||||
|
1. Install the "Visual Studio Code" add-on.
|
||||||
|
1. Configure a "password".
|
||||||
|
1. Start the "Visual Studio Code" add-on.
|
||||||
|
1. Check the logs of the "Visual Studio Code" add-on to see if everything went
|
||||||
|
well.
|
||||||
|
|
||||||
|
**NOTE**: Do not add this repository to Hass.io, please use:
|
||||||
|
`https://github.com/hassio-addons/repository`.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
**Note**: _Remember to restart the add-on when the configuration is changed._
|
||||||
|
|
||||||
|
Example add-on configuration:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"log_level": "info",
|
||||||
|
"password": "ChooChooHomie",
|
||||||
|
"ssl": false,
|
||||||
|
"certfile": "fullchain.pem",
|
||||||
|
"keyfile": "privkey.pem",
|
||||||
|
"packages": [
|
||||||
|
"mariadb-client"
|
||||||
|
],
|
||||||
|
"init_commands": [
|
||||||
|
"pip3 install yamllint"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Note**: _This is just an example, don't copy and past it! Create your own!_
|
||||||
|
|
||||||
|
### Option: `log_level`
|
||||||
|
|
||||||
|
The `log_level` option controls the level of log output by the addon and can
|
||||||
|
be changed to be more or less verbose, which might be useful when you are
|
||||||
|
dealing with an unknown issue. Possible values are:
|
||||||
|
|
||||||
|
- `trace`: Show every detail, like all called internal functions.
|
||||||
|
- `debug`: Shows detailed debug information.
|
||||||
|
- `info`: Normal (usually) interesting events.
|
||||||
|
- `warning`: Exceptional occurrences that are not errors.
|
||||||
|
- `error`: Runtime errors that do not require immediate action.
|
||||||
|
- `fatal`: Something went terribly wrong. Add-on becomes unusable.
|
||||||
|
|
||||||
|
Please note that each level automatically includes log messages from a
|
||||||
|
more severe level, e.g., `debug` also shows `info` messages. By default,
|
||||||
|
the `log_level` is set to `info`, which is the recommended setting unless
|
||||||
|
you are troubleshooting.
|
||||||
|
|
||||||
|
### Option: `password`
|
||||||
|
|
||||||
|
Password needed to login into the Visual Studio Code.
|
||||||
|
|
||||||
|
**Note**: _This option support secrets, e.g., `!secret vscode_password`._
|
||||||
|
|
||||||
|
### Option: `ssl`
|
||||||
|
|
||||||
|
Enables/Disables SSL (HTTPS). Set it `true` to enable it, `false` otherwise.
|
||||||
|
|
||||||
|
### Option: `certfile`
|
||||||
|
|
||||||
|
The certificate file to use for SSL.
|
||||||
|
|
||||||
|
**Note**: _The file MUST be stored in `/ssl/`, which is default for Hass.io_
|
||||||
|
|
||||||
|
### Option: `keyfile`
|
||||||
|
|
||||||
|
The private key file to use for SSL.
|
||||||
|
|
||||||
|
**Note**: _The file MUST be stored in `/ssl/`, which is default for Hass.io_
|
||||||
|
|
||||||
|
### Option: `packages`
|
||||||
|
|
||||||
|
Allows you to specify additional [Ubuntu packages][ubuntu-packages] to be
|
||||||
|
installed in your shell environment (e.g., Python, PHP, Go).
|
||||||
|
|
||||||
|
**Note**: _Adding many packages will result in a longer start-up
|
||||||
|
time for the add-on._
|
||||||
|
|
||||||
|
### Option: `init_commands`
|
||||||
|
|
||||||
|
Customize your IDE environment even more with the `init_commands` option.
|
||||||
|
Add one or more shell commands to the list, and they will be executed every
|
||||||
|
single time this add-on starts.
|
||||||
|
|
||||||
|
### Option: `leave_front_door_open`
|
||||||
|
|
||||||
|
Adding this option to the add-on configuration allows you to disable
|
||||||
|
authentication on the IDE by setting it to `true`.
|
||||||
|
|
||||||
|
**Note**: _We STRONGLY suggest, not to use this, even if this add-on is
|
||||||
|
only exposed to your internal network. USE AT YOUR OWN RISK!_
|
||||||
|
|
||||||
|
#### Option: `i_like_to_be_pwned`
|
||||||
|
|
||||||
|
Adding this option to the add-on configuration allows to you bypass the
|
||||||
|
HaveIBeenPwned password requirement by setting it to `true`.
|
||||||
|
|
||||||
|
**Note**: _We STRONGLY suggest picking a stronger/safer password instead of
|
||||||
|
using this option! USE AT YOUR OWN RISK!_
|
||||||
|
|
||||||
|
## Embedding into Home Assistant
|
||||||
|
|
||||||
|
It is possible to embed the IDE directly into Home Assistant, allowing
|
||||||
|
you to access your IDE through the Home Assistant frontend.
|
||||||
|
|
||||||
|
Home Assistant provides the `panel_iframe` component, for these purposes.
|
||||||
|
|
||||||
|
Example configuration:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
panel_iframe:
|
||||||
|
vscode:
|
||||||
|
title: Visual Studio Code
|
||||||
|
icon: mdi:visual-studio-code
|
||||||
|
url: https://addres.to.your.hass.io:1337
|
||||||
|
```
|
||||||
|
|
||||||
|
## Known issues and limitations
|
||||||
|
|
||||||
|
- This add-on currently only supports AMD64 machines, we hope to be able
|
||||||
|
to ship other architectures soon!
|
||||||
|
|
||||||
|
## Changelog & Releases
|
||||||
|
|
||||||
|
This repository keeps a change log using [GitHub's releases][releases]
|
||||||
|
functionality. The format of the log is based on
|
||||||
|
[Keep a Changelog][keepchangelog].
|
||||||
|
|
||||||
|
Releases are based on [Semantic Versioning][semver], and use the format
|
||||||
|
of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented
|
||||||
|
based on the following:
|
||||||
|
|
||||||
|
- ``MAJOR``: Incompatible or major changes.
|
||||||
|
- ``MINOR``: Backwards-compatible new features and enhancements.
|
||||||
|
- ``PATCH``: Backwards-compatible bugfixes and package updates.
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
Got questions?
|
||||||
|
|
||||||
|
You have several options to get them answered:
|
||||||
|
|
||||||
|
- The [Community Hass.io Add-ons Discord chat server][discord] for add-on
|
||||||
|
support and feature requests.
|
||||||
|
- The [Home Assistant Discord chat server][discord-ha] for general Home
|
||||||
|
Assistant discussions and questions.
|
||||||
|
- The Home Assistant [Community Forum][forum].
|
||||||
|
- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
|
||||||
|
|
||||||
|
You could also [open an issue here][issue] GitHub.
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
This is an active open-source project. We are always open to people who want to
|
||||||
|
use the code or contribute to it.
|
||||||
|
|
||||||
|
We have set up a separate document containing our
|
||||||
|
[contribution guidelines](CONTRIBUTING.md).
|
||||||
|
|
||||||
|
Thank you for being involved! :heart_eyes:
|
||||||
|
|
||||||
|
## Authors & contributors
|
||||||
|
|
||||||
|
The original setup of this repository is by [Franck Nijhof][frenck].
|
||||||
|
|
||||||
|
For a full list of all authors and contributors,
|
||||||
|
check [the contributor's page][contributors].
|
||||||
|
|
||||||
|
## We have got some Hass.io add-ons for you
|
||||||
|
|
||||||
|
Want some more functionality to your Hass.io Home Assistant instance?
|
||||||
|
|
||||||
|
We have created multiple add-ons for Hass.io. For a full list, check out
|
||||||
|
our [GitHub Repository][repository].
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2019 Franck Nijhof
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
|
|
||||||
|
[aarch64-shield]: https://img.shields.io/badge/aarch64-no-red.svg
|
||||||
|
[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
|
||||||
|
[armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg
|
||||||
|
[armv7-shield]: https://img.shields.io/badge/armv7-no-red.svg
|
||||||
|
[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg
|
||||||
|
[buymeacoffee]: https://www.buymeacoffee.com/frenck
|
||||||
|
[commits-shield]: https://img.shields.io/github/commit-activity/y/hassio-addons/addon-vscode.svg
|
||||||
|
[commits]: https://github.com/hassio-addons/addon-vscode/commits/master
|
||||||
|
[contributors]: https://github.com/hassio-addons/addon-vscode/graphs/contributors
|
||||||
|
[discord-ha]: https://discord.gg/c5DvZ4e
|
||||||
|
[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
|
||||||
|
[discord]: https://discord.me/hassioaddons
|
||||||
|
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
|
||||||
|
[forum]: https://community.home-assistant.io/?u=frenck
|
||||||
|
[frenck]: https://github.com/frenck
|
||||||
|
[gitlabci-shield]: https://gitlab.com/hassio-addons/addon-vscode/badges/master/pipeline.svg
|
||||||
|
[gitlabci]: https://gitlab.com/hassio-addons/addon-vscode/pipelines
|
||||||
|
[home-assistant]: https://home-assistant.io
|
||||||
|
[i386-shield]: https://img.shields.io/badge/i386-no-red.svg
|
||||||
|
[issue]: https://github.com/hassio-addons/addon-vscode/issues
|
||||||
|
[keepchangelog]: http://keepachangelog.com/en/1.0.0/
|
||||||
|
[license-shield]: https://img.shields.io/github/license/hassio-addons/addon-vscode.svg
|
||||||
|
[maintenance-shield]: https://img.shields.io/maintenance/yes/2019.svg
|
||||||
|
[patreon-shield]: https://www.frenck.nl/images/patreon.png
|
||||||
|
[patreon]: https://www.patreon.com/frenck
|
||||||
|
[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
|
||||||
|
[reddit]: https://reddit.com/r/homeassistant
|
||||||
|
[releases-shield]: https://img.shields.io/github/release/hassio-addons/addon-vscode.svg
|
||||||
|
[releases]: https://github.com/hassio-addons/addon-vscode/releases
|
||||||
|
[repository]: https://github.com/hassio-addons/repository
|
||||||
|
[semver]: http://semver.org/spec/v2.0.0.htm
|
||||||
|
[ubuntu-packages]: https://packages.ubuntu.com
|
BIN
images/screenshot.png
Normal file
BIN
images/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 272 KiB |
82
vscode/.README.j2
Normal file
82
vscode/.README.j2
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
# Community Hass.io Add-ons: Visual Studio Code
|
||||||
|
|
||||||
|
[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
|
||||||
|
|
||||||
|
[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
|
||||||
|
|
||||||
|
[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee]
|
||||||
|
|
||||||
|
[![Support my work on Patreon][patreon-shield]][patreon]
|
||||||
|
|
||||||
|
Visual Studio Code, accessible through the browser.
|
||||||
|
|
||||||
|
## About
|
||||||
|
|
||||||
|
This add-on runs Visual Studio Code, allowing you to edit your Home Assistant
|
||||||
|
configuration straight from the web browser and can be embeded straight
|
||||||
|
into the Home Assistant frontend UI.
|
||||||
|
|
||||||
|
Visual Studio Code runs as a remote server using `code-server`, and is a
|
||||||
|
fully fletched VSCode experience.
|
||||||
|
|
||||||
|
The add-on has the Home Assistant and MDI icons extensions pre-installed
|
||||||
|
and pre-configured right out of the box. This mean that auto completion works
|
||||||
|
instantly, without the need for configuring anything.
|
||||||
|
|
||||||
|
[Click here for the full documentation][docs]
|
||||||
|
|
||||||
|
![Visual Studio Code in the Home Assistant Frontend][screenshot]
|
||||||
|
|
||||||
|
{% if channel == "edge" %}
|
||||||
|
## WARNING! THIS IS AN EDGE VERSION!
|
||||||
|
|
||||||
|
This Hass.io Add-ons repository contains edge builds of add-ons. Edge builds
|
||||||
|
add-ons are based upon the latest development version.
|
||||||
|
|
||||||
|
- They may not work at all.
|
||||||
|
- They might stop working at any time.
|
||||||
|
- They could have a negative impact on your system.
|
||||||
|
|
||||||
|
This repository was created for:
|
||||||
|
|
||||||
|
- Anybody willing to test.
|
||||||
|
- Anybody interested in trying out upcoming add-ons or add-on features.
|
||||||
|
- Developers.
|
||||||
|
|
||||||
|
If you are more interested in stable releases of our add-ons:
|
||||||
|
|
||||||
|
<https://github.com/hassio-addons/repository>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if channel == "beta" %}
|
||||||
|
## WARNING! THIS IS A BETA VERSION!
|
||||||
|
|
||||||
|
This Hass.io Add-ons repository contains beta releases of add-ons.
|
||||||
|
|
||||||
|
- They might stop working at any time.
|
||||||
|
- They could have a negative impact on your system.
|
||||||
|
|
||||||
|
This repository was created for:
|
||||||
|
|
||||||
|
- Anybody willing to test.
|
||||||
|
- Anybody interested in trying out upcoming add-ons or add-on features.
|
||||||
|
|
||||||
|
If you are more interested in stable releases of our add-ons:
|
||||||
|
|
||||||
|
<https://github.com/hassio-addons/repository>
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg
|
||||||
|
[buymeacoffee]: https://www.buymeacoffee.com/frenck
|
||||||
|
[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
|
||||||
|
[discord]: https://discord.me/hassioaddons
|
||||||
|
[docs]: {{ repo }}/blob/{{ version }}/README.md
|
||||||
|
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
|
||||||
|
[forum]: https://community.home-assistant.io/?u=frenck
|
||||||
|
[maintenance-shield]: https://img.shields.io/maintenance/yes/2019.svg
|
||||||
|
[patreon-shield]: https://www.frenck.nl/images/patreon.png
|
||||||
|
[patreon]: https://www.patreon.com/frenck
|
||||||
|
[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
|
||||||
|
[release-shield]: https://img.shields.io/badge/version-{{ version }}-blue.svg
|
||||||
|
[release]: {{ repo }}/tree/{{ version }}
|
||||||
|
[screenshot]: {{ repo }}/raw/master/images/screenshot.png
|
144
vscode/Dockerfile
Executable file
144
vscode/Dockerfile
Executable file
|
@ -0,0 +1,144 @@
|
||||||
|
ARG BUILD_FROM=hassioaddons/ubuntu-base:3.0.0
|
||||||
|
###############################################################################
|
||||||
|
# Get the original code-server container.
|
||||||
|
###############################################################################
|
||||||
|
FROM codercom/code-server as codeserver
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Build container to get custom vscode extensions.
|
||||||
|
###############################################################################
|
||||||
|
FROM ${BUILD_FROM} as vscode
|
||||||
|
|
||||||
|
# Copy in extensions list
|
||||||
|
COPY vscode.extensions /root/vscode.extensions
|
||||||
|
|
||||||
|
# Install the actual VSCode to download configs and extensions
|
||||||
|
RUN \
|
||||||
|
apt-get update \
|
||||||
|
\
|
||||||
|
&& apt-get install -y --no-install-recommends \
|
||||||
|
libx11-xcb1 \
|
||||||
|
libasound2 \
|
||||||
|
\
|
||||||
|
&& curl \
|
||||||
|
-o vscode-amd64.deb \
|
||||||
|
-L https://vscode-update.azurewebsites.net/latest/linux-deb-x64/stable \
|
||||||
|
\
|
||||||
|
&& dpkg -i vscode-amd64.deb || true \
|
||||||
|
&& apt-get install -y -f \
|
||||||
|
&& rm -f vscode-amd64.deb \
|
||||||
|
\
|
||||||
|
&& code -v --user-data-dir /root/.config/Code
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
while read -r ext; do \
|
||||||
|
echo "Installing vscode extension: $ext"; \
|
||||||
|
code --user-data-dir /root/.config/Code --install-extension $ext; \
|
||||||
|
done < /root/vscode.extensions \
|
||||||
|
&& ls -la /root/.vscode/extensions
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Build the actual add-on.
|
||||||
|
###############################################################################
|
||||||
|
# hadolint ignore=DL3006
|
||||||
|
FROM ${BUILD_FROM}
|
||||||
|
|
||||||
|
# Confiure locale
|
||||||
|
ENV LANG=en_US.UTF-8
|
||||||
|
|
||||||
|
# Set shell
|
||||||
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
|
|
||||||
|
# Copy Python requirements file
|
||||||
|
COPY requirements.txt /tmp/requirements.txt
|
||||||
|
|
||||||
|
# Setup base system
|
||||||
|
ARG BUILD_ARCH
|
||||||
|
RUN \
|
||||||
|
apt-get update \
|
||||||
|
\
|
||||||
|
&& apt-get install -y --no-install-recommends \
|
||||||
|
build-essential=12.4ubuntu1 \
|
||||||
|
colordiff=1.0.18-1 \
|
||||||
|
git=1:2.17.1-1ubuntu0.4 \
|
||||||
|
locales=2.27-3ubuntu1 \
|
||||||
|
mosquitto-clients=1.4.15-2ubuntu0.18.04.2 \
|
||||||
|
net-tools=1.60+git20161116.90da8a0-1ubuntu1 \
|
||||||
|
nmap=7.60-1ubuntu5 \
|
||||||
|
openssh-client=1:7.6p1-4ubuntu0.3 \
|
||||||
|
openssl=1.1.0g-2ubuntu4.3 \
|
||||||
|
python3=3.6.7-1~18.04 \
|
||||||
|
python3-dev=3.6.7-1~18.04 \
|
||||||
|
wget=1.19.4-1ubuntu2.1 \
|
||||||
|
zsh=5.4.2-3ubuntu3.1 \
|
||||||
|
\
|
||||||
|
&& curl https://bootstrap.pypa.io/get-pip.py | python3 \
|
||||||
|
\
|
||||||
|
&& locale-gen en_US.UTF-8 \
|
||||||
|
\
|
||||||
|
&& curl -L -s -o /usr/bin/hassio \
|
||||||
|
"https://github.com/home-assistant/hassio-cli/releases/download/2.1.0/hassio_${BUILD_ARCH}" \
|
||||||
|
&& chmod a+x /usr/bin/hassio \
|
||||||
|
\
|
||||||
|
&& git clone --branch master --single-branch --depth 1 \
|
||||||
|
"git://github.com/robbyrussell/oh-my-zsh.git" ~/.oh-my-zsh \
|
||||||
|
\
|
||||||
|
&& git clone --branch master --single-branch --depth 1 \
|
||||||
|
"git://github.com/zsh-users/zsh-autosuggestions" \
|
||||||
|
~/.oh-my-zsh/custom/plugins/zsh-autosuggestions \
|
||||||
|
&& git clone --branch master --single-branch --depth 1 \
|
||||||
|
"git://github.com/zsh-users/zsh-syntax-highlighting.git" \
|
||||||
|
~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting \
|
||||||
|
\
|
||||||
|
&& sed -i -e "s#bin/bash#bin/zsh#" /etc/passwd \
|
||||||
|
\
|
||||||
|
&& update-alternatives \
|
||||||
|
--install /usr/bin/python python /usr/bin/python3 10 \
|
||||||
|
\
|
||||||
|
&& pip3 install --no-cache-dir -r /tmp/requirements.txt \
|
||||||
|
\
|
||||||
|
&& apt-get purge -y --auto-remove \
|
||||||
|
python3-dev \
|
||||||
|
build-essential \
|
||||||
|
\
|
||||||
|
&& find /usr/local/lib/python3.6/ -type d -name tests -depth -exec rm -rf {} \; \
|
||||||
|
&& find /usr/local/lib/python3.6/ -type d -name test -depth -exec rm -rf {} \; \
|
||||||
|
&& find /usr/local/lib/python3.6/ -name __pycache__ -depth -exec rm -rf {} \; \
|
||||||
|
&& find /usr/local/lib/python3.6/ -name "*.pyc" -depth -exec rm -f {} \; \
|
||||||
|
\
|
||||||
|
&& rm -fr \
|
||||||
|
/tmp/* \
|
||||||
|
/var/{cache,log}/* \
|
||||||
|
/var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Copy root filesystem
|
||||||
|
COPY rootfs /
|
||||||
|
|
||||||
|
# Get the code server binary
|
||||||
|
COPY --from=codeserver /usr/local/bin/code-server /usr/local/bin/code-server
|
||||||
|
|
||||||
|
# Get the custom extensions
|
||||||
|
COPY --from=vscode /root/.vscode/extensions /root/.code-server/extensions
|
||||||
|
|
||||||
|
# Build arguments
|
||||||
|
ARG BUILD_DATE
|
||||||
|
ARG BUILD_REF
|
||||||
|
ARG BUILD_VERSION
|
||||||
|
|
||||||
|
# Labels
|
||||||
|
LABEL \
|
||||||
|
io.hass.name="Visual Studio Code" \
|
||||||
|
io.hass.description="Visual Studio Code, accessible through the browser." \
|
||||||
|
io.hass.arch="${BUILD_ARCH}" \
|
||||||
|
io.hass.type="addon" \
|
||||||
|
io.hass.version=${BUILD_VERSION} \
|
||||||
|
maintainer="Franck Nijhof <frenck@addons.community>" \
|
||||||
|
org.label-schema.description="Visual Studio Code, accessible through the browser." \
|
||||||
|
org.label-schema.build-date=${BUILD_DATE} \
|
||||||
|
org.label-schema.name="Visual Studio Code" \
|
||||||
|
org.label-schema.schema-version="1.0" \
|
||||||
|
org.label-schema.url="https://community.home-assistant.io/?u=frenck" \
|
||||||
|
org.label-schema.usage="https://github.com/hassio-addons/addon-vscode/tree/master/README.md" \
|
||||||
|
org.label-schema.vcs-ref=${BUILD_REF} \
|
||||||
|
org.label-schema.vcs-url="https://github.com/hassio-addons/addon-vscode" \
|
||||||
|
org.label-schema.vendor="Community Hass.io Add-ons"
|
6
vscode/build.json
Normal file
6
vscode/build.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"build_from": {
|
||||||
|
"amd64": "hassioaddons/ubuntu-base-amd64:3.0.0"
|
||||||
|
},
|
||||||
|
"args": {}
|
||||||
|
}
|
47
vscode/config.json
Executable file
47
vscode/config.json
Executable file
|
@ -0,0 +1,47 @@
|
||||||
|
{
|
||||||
|
"name": "Visual Studio Code",
|
||||||
|
"version": "dev",
|
||||||
|
"slug": "vscode",
|
||||||
|
"description": "Fully feature VSCode experience, to edit your HA config in the browser, including autocompletion!",
|
||||||
|
"url": "https://github.com/hassio-addons/addon-vscode",
|
||||||
|
"webui": "[PROTO:ssl]://[HOST]:[PORT:1337]",
|
||||||
|
"startup": "services",
|
||||||
|
"arch": [
|
||||||
|
"amd64"
|
||||||
|
],
|
||||||
|
"boot": "auto",
|
||||||
|
"hassio_api": true,
|
||||||
|
"hassio_role": "default",
|
||||||
|
"homeassistant_api": true,
|
||||||
|
"host_network": false,
|
||||||
|
"auto_uart": true,
|
||||||
|
"ports": {
|
||||||
|
"1337/tcp": 1337
|
||||||
|
},
|
||||||
|
"map": [
|
||||||
|
"config:rw",
|
||||||
|
"ssl:rw",
|
||||||
|
"addons:rw",
|
||||||
|
"share:rw",
|
||||||
|
"backup:rw"
|
||||||
|
],
|
||||||
|
"options": {
|
||||||
|
"password": "",
|
||||||
|
"ssl": false,
|
||||||
|
"certfile": "fullchain.pem",
|
||||||
|
"keyfile": "privkey.pem",
|
||||||
|
"packages": [],
|
||||||
|
"init_commands": []
|
||||||
|
},
|
||||||
|
"schema": {
|
||||||
|
"log_level": "match(^(trace|debug|info|notice|warning|error|fatal)$)?",
|
||||||
|
"password": "str",
|
||||||
|
"ssl": "bool",
|
||||||
|
"certfile": "str",
|
||||||
|
"keyfile": "str",
|
||||||
|
"packages": ["str"],
|
||||||
|
"init_commands": ["str"],
|
||||||
|
"leave_front_door_open": "bool?",
|
||||||
|
"i_like_to_be_pwned": "bool?"
|
||||||
|
}
|
||||||
|
}
|
BIN
vscode/icon.png
Normal file
BIN
vscode/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.5 KiB |
BIN
vscode/logo.png
Normal file
BIN
vscode/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 61 KiB |
2
vscode/requirements.txt
Normal file
2
vscode/requirements.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
homeassistant_cli==0.6.0
|
||||||
|
yamllint==1.15.0
|
27
vscode/rootfs/etc/cont-init.d/10-requirements.sh
Normal file
27
vscode/rootfs/etc/cont-init.d/10-requirements.sh
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/with-contenv bashio
|
||||||
|
# ==============================================================================
|
||||||
|
# Community Hass.io Add-ons: Visual Studio Code
|
||||||
|
# This files check if all user configuration requirements are met
|
||||||
|
# ==============================================================================
|
||||||
|
bashio::config.require.ssl
|
||||||
|
|
||||||
|
if ! bashio::config.true 'leave_front_door_open'; then
|
||||||
|
if ! bashio::config.true 'i_like_to_be_pwned'; then
|
||||||
|
bashio::config.require.safe_password
|
||||||
|
else
|
||||||
|
bashio::config.require.password
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if bashio::config.true 'leave_front_door_open' \
|
||||||
|
&& bashio::config.true 'ssl';
|
||||||
|
then
|
||||||
|
bashio::log.fatal
|
||||||
|
bashio::log.fatal "Due to a bug in code-server (which this add-on uses),"
|
||||||
|
bashio::log.fatal "it is impossible to disable authentication while"
|
||||||
|
bashio::log.fatal "using SSL."
|
||||||
|
bashio::log.fatal
|
||||||
|
bashio::log.fatal "Please enable authentication and set a password."
|
||||||
|
bashio::log.fatal
|
||||||
|
bashio::exit.nok
|
||||||
|
fi
|
11
vscode/rootfs/etc/cont-init.d/20-link-common-dirs.sh
Normal file
11
vscode/rootfs/etc/cont-init.d/20-link-common-dirs.sh
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/usr/bin/with-contenv bashio
|
||||||
|
# ==============================================================================
|
||||||
|
# Community Hass.io Add-ons: Visual Studio Code
|
||||||
|
# Links some common directories to the user's home folder for convenience
|
||||||
|
# ==============================================================================
|
||||||
|
readonly -a directories=(addons backup config share ssl)
|
||||||
|
|
||||||
|
for dir in "${directories[@]}"; do
|
||||||
|
ln -s "/${dir}" "${HOME}/${dir}" \
|
||||||
|
|| bashio::log.warning "Failed linking common directory: ${dir}"
|
||||||
|
done
|
14
vscode/rootfs/etc/cont-init.d/30-defaults.sh
Normal file
14
vscode/rootfs/etc/cont-init.d/30-defaults.sh
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#!/usr/bin/with-contenv bashio
|
||||||
|
# ==============================================================================
|
||||||
|
# Community Hass.io Add-ons: Visual Studio Code
|
||||||
|
# This files check if all user configuration requirements are met
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
# Ensure persistent data folder exists
|
||||||
|
if ! bashio::fs.directory_exists '/data/vscode'; then
|
||||||
|
mkdir -p /data/vscode/extensions \
|
||||||
|
|| bashio::exit.nok "Could not create persistent storage folder."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copy in the extensions we deliver
|
||||||
|
cp -R /root/.code-server/extensions/* /data/vscode/extensions
|
17
vscode/rootfs/etc/cont-init.d/50-user-ssh-folder.sh
Normal file
17
vscode/rootfs/etc/cont-init.d/50-user-ssh-folder.sh
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
#!/usr/bin/with-contenv bashio
|
||||||
|
# ==============================================================================
|
||||||
|
# Community Hass.io Add-ons: Visual Studio Code
|
||||||
|
# Sets up the users .ssh folder to be persistent
|
||||||
|
# ==============================================================================
|
||||||
|
readonly SSH_USER_PATH=/data/.ssh
|
||||||
|
|
||||||
|
if ! bashio::fs.directory_exists "${SSH_USER_PATH}"; then
|
||||||
|
mkdir -p "${SSH_USER_PATH}" \
|
||||||
|
|| bashio::exit.nok 'Failed to create a persistent .ssh folder'
|
||||||
|
|
||||||
|
chmod 700 "${SSH_USER_PATH}" \
|
||||||
|
|| bashio::exit.nok \
|
||||||
|
'Failed setting permissions on persistent .ssh folder'
|
||||||
|
fi
|
||||||
|
|
||||||
|
ln -s "${SSH_USER_PATH}" ~/.ssh
|
14
vscode/rootfs/etc/cont-init.d/80-user-packages.sh
Normal file
14
vscode/rootfs/etc/cont-init.d/80-user-packages.sh
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#!/usr/bin/with-contenv bashio
|
||||||
|
# ==============================================================================
|
||||||
|
# Community Hass.io Add-ons: Visual Studio Code
|
||||||
|
# Install user configured/requested packages
|
||||||
|
# ==============================================================================
|
||||||
|
if bashio::config.has_value 'packages'; then
|
||||||
|
apt update \
|
||||||
|
|| bashio::exit.nok 'Failed updating Ubuntu packages repository indexes'
|
||||||
|
|
||||||
|
for package in $(bashio::config 'packages'); do
|
||||||
|
apt add -y "$package" \
|
||||||
|
|| bashio::exit.nok "Failed installing package ${package}"
|
||||||
|
done
|
||||||
|
fi
|
11
vscode/rootfs/etc/cont-init.d/81-user-scripts.sh
Normal file
11
vscode/rootfs/etc/cont-init.d/81-user-scripts.sh
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/usr/bin/with-contenv bashio
|
||||||
|
# ==============================================================================
|
||||||
|
# Community Hass.io Add-ons: Visual Studio Code
|
||||||
|
# Executes user configured/requested commands on startup
|
||||||
|
# ==============================================================================
|
||||||
|
if bashio::config.has_value 'init_commands'; then
|
||||||
|
while read -r cmd; do
|
||||||
|
eval "${cmd}" \
|
||||||
|
|| bashio::exit.nok "Failed executing init command: ${cmd}"
|
||||||
|
done <<< "$(bashio::config 'init_commands')"
|
||||||
|
fi
|
12
vscode/rootfs/etc/motd
Executable file
12
vscode/rootfs/etc/motd
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
|
||||||
|
_ _ _
|
||||||
|
| | | | (_)
|
||||||
|
| |__| | __ _ ___ ___ _ ___
|
||||||
|
| __ |/ _` / __/ __| | |/ _ \
|
||||||
|
| | | | (_| \__ \__ \_| | (_) |
|
||||||
|
|_| |_|\__,_|___/___(_)_|\___/
|
||||||
|
|
||||||
|
|
||||||
|
Our Cli:
|
||||||
|
$ hassio help
|
||||||
|
|
9
vscode/rootfs/etc/services.d/code/finish
Normal file
9
vscode/rootfs/etc/services.d/code/finish
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/usr/bin/execlineb -S0
|
||||||
|
# ==============================================================================
|
||||||
|
# Community Hass.io Add-ons: Visual Studio Code
|
||||||
|
# Take down the S6 supervision tree when the code server fails
|
||||||
|
# ==============================================================================
|
||||||
|
if -n { s6-test $# -ne 0 }
|
||||||
|
if -n { s6-test ${1} -eq 256 }
|
||||||
|
|
||||||
|
s6-svscanctl -t /var/run/s6/services
|
32
vscode/rootfs/etc/services.d/code/run
Normal file
32
vscode/rootfs/etc/services.d/code/run
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/usr/bin/with-contenv bashio
|
||||||
|
# ==============================================================================
|
||||||
|
# Community Hass.io Add-ons: Visual Studio Code
|
||||||
|
# Runs the code server
|
||||||
|
# ==============================================================================
|
||||||
|
declare -a options
|
||||||
|
|
||||||
|
bashio::log.info 'Starting the code server...'
|
||||||
|
|
||||||
|
# Non-interactive
|
||||||
|
options+=(--port 1337)
|
||||||
|
options+=(--data-dir "/data/vscode")
|
||||||
|
|
||||||
|
if bashio::config.false 'ssl'; then
|
||||||
|
options+=(--allow-http)
|
||||||
|
else
|
||||||
|
options+=(--cert "/ssl/$(bashio::config 'certfile')")
|
||||||
|
options+=(--cert-key "/ssl/$(bashio::config 'keyfile')")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! bashio::config.has_value 'password'; then
|
||||||
|
options+=(--no-auth)
|
||||||
|
else
|
||||||
|
options+=(--password "$(bashio::config 'password')")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Export env variables for the Home Assistant extension
|
||||||
|
export HASS_SERVER="http://hassio/homeassistant"
|
||||||
|
export HASS_TOKEN="${HASSIO_TOKEN:-}"
|
||||||
|
|
||||||
|
# Run the code server
|
||||||
|
exec code-server "${options[@]}" /config
|
100
vscode/rootfs/root/.zshrc
Executable file
100
vscode/rootfs/root/.zshrc
Executable file
|
@ -0,0 +1,100 @@
|
||||||
|
# If you come from bash you might have to change your $PATH.
|
||||||
|
# export PATH=$HOME/bin:/usr/local/bin:$PATH
|
||||||
|
|
||||||
|
# Path to your oh-my-zsh installation.
|
||||||
|
export ZSH=$HOME/.oh-my-zsh
|
||||||
|
|
||||||
|
# Set name of the theme to load. Optionally, if you set this to "random"
|
||||||
|
# it'll load a random theme each time that oh-my-zsh is loaded.
|
||||||
|
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
|
||||||
|
ZSH_THEME="robbyrussell"
|
||||||
|
|
||||||
|
# Uncomment the following line to use case-sensitive completion.
|
||||||
|
# CASE_SENSITIVE="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to use hyphen-insensitive completion. Case
|
||||||
|
# sensitive completion must be off. _ and - will be interchangeable.
|
||||||
|
# HYPHEN_INSENSITIVE="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to disable bi-weekly auto-update checks.
|
||||||
|
DISABLE_AUTO_UPDATE="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to change how often to auto-update (in days).
|
||||||
|
# export UPDATE_ZSH_DAYS=13
|
||||||
|
|
||||||
|
# Uncomment the following line to disable colors in ls.
|
||||||
|
# DISABLE_LS_COLORS="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to disable auto-setting terminal title.
|
||||||
|
# DISABLE_AUTO_TITLE="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to enable command auto-correction.
|
||||||
|
# ENABLE_CORRECTION="true"
|
||||||
|
|
||||||
|
# Uncomment the following line to display red dots whilst waiting for completion.
|
||||||
|
COMPLETION_WAITING_DOTS="true"
|
||||||
|
|
||||||
|
# Uncomment the following line if you want to disable marking untracked files
|
||||||
|
# under VCS as dirty. This makes repository status check for large repositories
|
||||||
|
# much, much faster.
|
||||||
|
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||||
|
|
||||||
|
# Uncomment the following line if you want to change the command execution time
|
||||||
|
# stamp shown in the history command output.
|
||||||
|
# The optional three formats: "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
|
||||||
|
# HIST_STAMPS="mm/dd/yyyy"
|
||||||
|
|
||||||
|
# Would you like to use another custom folder than $ZSH/custom?
|
||||||
|
# ZSH_CUSTOM=/path/to/new-custom-folder
|
||||||
|
|
||||||
|
# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
|
||||||
|
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
|
||||||
|
# Example format: plugins=(rails git textmate ruby lighthouse)
|
||||||
|
# Add wisely, as too many plugins slow down shell startup.
|
||||||
|
plugins=(
|
||||||
|
extract
|
||||||
|
git
|
||||||
|
nmap
|
||||||
|
pip
|
||||||
|
python
|
||||||
|
rsync
|
||||||
|
zsh-autosuggestions
|
||||||
|
zsh-syntax-highlighting
|
||||||
|
)
|
||||||
|
|
||||||
|
source $ZSH/oh-my-zsh.sh
|
||||||
|
|
||||||
|
# User configuration
|
||||||
|
|
||||||
|
# export MANPATH="/usr/local/man:$MANPATH"
|
||||||
|
|
||||||
|
# You may need to manually set your language environment
|
||||||
|
# export LANG=en_US.UTF-8
|
||||||
|
|
||||||
|
# Preferred editor for local and remote sessions
|
||||||
|
# if [[ -n $SSH_CONNECTION ]]; then
|
||||||
|
# export EDITOR='vim'
|
||||||
|
# else
|
||||||
|
# export EDITOR='mvim'
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# Compilation flags
|
||||||
|
# export ARCHFLAGS="-arch x86_64"
|
||||||
|
|
||||||
|
# ssh
|
||||||
|
# export SSH_KEY_PATH="~/.ssh/rsa_id"
|
||||||
|
|
||||||
|
# Set personal aliases, overriding those provided by oh-my-zsh libs,
|
||||||
|
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
|
||||||
|
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
|
||||||
|
# For a full list of active aliases, run `alias`.
|
||||||
|
#
|
||||||
|
# Example aliases
|
||||||
|
# alias zshconfig="mate ~/.zshrc"
|
||||||
|
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
||||||
|
|
||||||
|
# Home Assistant CLI
|
||||||
|
eval "$(_HASS_CLI_COMPLETE=source_zsh hass-cli)"
|
||||||
|
|
||||||
|
# Show motd on start
|
||||||
|
cat /etc/motd
|
2
vscode/vscode.extensions
Normal file
2
vscode/vscode.extensions
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
keesschollaart.vscode-home-assistant
|
||||||
|
lukas-tr.materialdesignicons-intellisense
|
Loading…
Add table
Add a link
Reference in a new issue