Skip to content

Limych/ha-blueprint

Repository files navigation

Please ⭐ this repo if you find it useful

Notice

The component and platforms in this repository are not meant to be used by a user, but as a "blueprint" that custom component developers can build upon, to make more awesome stuff.

HAVE FUN! 😎

Why?

This is simple, by having custom_components look (README + structure) the same it is easier for developers to help each other and for users to start using them.

If you are a developer and you want to add things to this "blueprint" that you think more developers will have use for, please open a PR to add it :)

What?

This repository is an extension and addition to the integration_blueprint repository. It is regularly updated with all the edits from parent repository and makes it easy to apply new edits to your project. This way you can easily keep it up to date.

This repository contains multiple files, here is a overview:

File Purpose  Documentation
.devcontainer.json Used for development/testing with Visual Studio Code. Documentation
.github/ISSUE_TEMPLATE/*.yml Templates for the issue tracker Documentation
.vscode/tasks.json Tasks for the devcontainer. Documentation
custom_components/integration_blueprint/* Integration files, this is where everything happens. Documentation
tests/* Integration unit tests.
CONTRIBUTING.md Guidelines on how to contribute. Documentation
LICENSE The license file for the project. Documentation
README.md The file you are reading now, should contain info about the integration, installation and configuration instructions. Documentation
requirements.txt Python packages used for development/lint/testing this integration. Documentation

How?

  • …or use this template to create your new repository. Then download a copy of the new repository to your IDE and run the final environment setup commands:

    # Configure future updates from blueprint repository
    git remote add blueprint https://github.com/Limych/ha-blueprint.git
    git fetch blueprint dev
    git merge blueprint/dev --allow-unrelated-histories
    
    # Push changes to origin repository
    git push -u origin dev
    
    # Initialize the development environment
    ./scripts/setup
  • …or create a new repository on the command line:

    # Initialize your new origin repository
    git init
    git remote add origin https://github.com/YOUR_NEW_REPOSITORY
    
    # Apply blueprint repository
    git remote add blueprint https://github.com/Limych/ha-blueprint.git
    git fetch blueprint dev
    git reset --hard blueprint/dev
    git branch -M dev
    
    # Push changes to origin repository
    git push -u origin dev
    
    # Initialize the development environment
    ./scripts/setup
  • …or apply blueprint to an existing repository from the command line:

    # Apply blueprint repository
    git remote add blueprint https://github.com/Limych/ha-blueprint.git
    git fetch blueprint dev
    git merge blueprint/dev --allow-unrelated-histories
    
    # Push changes to origin repository
    git push -u origin dev
    
    # Initialize the development environment
    ./scripts/setup

After these steps, your repository will developing on a own branch. But in parallel there will be this blueprint repository, new changes in which you can always apply with a couple of simple commands:

./scripts/update
git merge blueprint/dev

Then:

  1. Rename all instances of the integration_blueprint to custom_components/<your_integration_domain> (e.g. custom_components/awesome_integration).
  2. Rename all instances of the Integration Blueprint to <Your Integration Name> (e.g. Awesome Integration).

If you need to work on the python library in parallel of this integration (sampleclient in this example) there are different options. The following one seems easy to implement:

  • Create a dedicated branch for your python library on a public git repository (example: branch dev on https://github.com/ludeeus/sampleclient)
  • Update in the manifest.json file the requirements key to point on your development branch ( example: "requirements": ["git+https://github.com/ludeeus/sampleclient.git@dev#devp==0.0.1beta1"])
  • Each time you need to make a modification to your python library, push it to your development branch and increase the number of the python library version in manifest.json file to ensure Home Assistant update the code of the python library. (example "requirements": ["git+https://...==0.0.1beta2"]).

Next steps

These are some next steps you may want to look into: