New Github actions (#481)

* Test new check

* Add quote

* test

* test

* move check

* move back

* use env

* test multistep

* test trigger

* if: github.event.label.name

* quotes

* hassfest?

* Fix clone

* Update hassfest

* check hassfest

* Use real domain

* Lmit

* Test hassfest

* Check domain

* Fix domain

* No changes

* Enable on unlable

* Change HACS validate

* Move inputs

* Add dummy integration

* TEst

* Move to env

* Fix repo

* Remove entry
This commit is contained in:
Joakim Sørensen
2020-05-26 17:53:04 +02:00
committed by GitHub
parent 327142edc2
commit 001a81b77f
34 changed files with 671 additions and 38 deletions
View File
+40
View File
@@ -0,0 +1,40 @@
import asyncio
import json
import os
from glob import glob
from aiogithubapi import GitHub
from scripts.changed.category import get_category
from scripts.changed.repo import get_repo
from scripts.helpers.manifest import get_manifest
TOKEN = os.getenv("GITHUB_TOKEN")
async def check():
if get_category() != "integration":
print("Only integrations are checked.")
return
manifest = get_manifest()
domain = manifest.get("domain")
if domain is None:
print("No domain")
exit(1)
async with GitHub(TOKEN) as github:
repository = await github.get_repo("home-assistant/brands")
files = await repository.get_contents("custom_integrations")
if domain not in [x.attributes["name"] for x in files]:
print(f"{domain} is not added to https://github.com/home-assistant/brands")
print("This is needed to ensure the best possible experience for the user")
exit(1)
else:
print(
f"{domain} is added to https://github.com/home-assistant/brands, NICE!"
)
if __name__ == "__main__":
asyncio.get_event_loop().run_until_complete(check())
+23
View File
@@ -0,0 +1,23 @@
from scripts.changed.category import get_category
from scripts.helpers.hacs_manifest import get_hacs_manifest
def check():
if get_category() != "integration":
print("Only integrations are checked.")
return
manifest = get_hacs_manifest()
issues = []
if manifest.get("name") is None:
issues.append("No name")
if issues:
for issue in issues:
print(issue)
exit(1)
if __name__ == "__main__":
check()
+20
View File
@@ -0,0 +1,20 @@
from scripts.changed.category import get_category
from scripts.helpers.info import get_info
def check():
if get_category() not in ["plugin", "theme"]:
print("Only plugin and theme are checked.")
return
info = get_info()
if "<img" in info or "![" in info:
print("Has image(s)")
return
print("There should be images to show the user what they get.")
exit(1)
if __name__ == "__main__":
check()
+13
View File
@@ -0,0 +1,13 @@
from scripts.changed.category import get_category
from scripts.helpers.info import get_info
def check():
info = get_info()
if not info:
print("No information provided.")
exit(1)
if __name__ == "__main__":
check()
+35
View File
@@ -0,0 +1,35 @@
from scripts.changed.category import get_category
from scripts.helpers.manifest import get_manifest
def check():
if get_category() != "integration":
print("Only integrations are checked.")
return
manifest = get_manifest()
issues = []
if manifest.get("domain") is None:
issues.append("No domain")
if manifest.get("documentation") is None:
issues.append("No documentation")
if manifest.get("issue_tracker") is None:
issues.append("No issue_tracker")
if manifest.get("codeowners") is None:
issues.append("No codeowners")
if manifest.get("homeassistant"):
issues.append("homeassistant is not valid here")
if issues:
for issue in issues:
print(issue)
exit(1)
if __name__ == "__main__":
check()
+36
View File
@@ -0,0 +1,36 @@
import asyncio
import json
import os
from glob import glob
from aiogithubapi import GitHub
from scripts.changed.repo import get_repo
TOKEN = os.getenv("GITHUB_TOKEN")
async def check():
repo = get_repo()
issues = []
async with GitHub(TOKEN) as github:
repository = await github.get_repo(repo)
repo = repository.attributes
if not repo["has_issues"]:
issues.append("Issues not enabled.")
if not repo["description"]:
issues.append("No description. (https://hacs.xyz/docs/publish/start#description)")
if not repo["topics"]:
issues.append("No topics. (https://hacs.xyz/docs/publish/start#topics)")
if issues:
for issue in issues:
print(issue)
exit(1)
if __name__ == "__main__":
asyncio.get_event_loop().run_until_complete(check())
+48
View File
@@ -0,0 +1,48 @@
import asyncio
import json
import os
from glob import glob
from aiogithubapi import GitHub
from scripts.changed.category import get_category
from scripts.changed.repo import get_repo
from scripts.helpers.manifest import get_manifest
TOKEN = os.getenv("GITHUB_TOKEN")
async def check():
if get_category() != "integration":
print("Only integrations are checked.")
return
manifest = get_manifest()
domain = manifest.get("domain")
requirements = manifest.get("requirements")
if domain is None:
print("No domain")
exit(1)
if not requirements:
print("No requirements found")
return
async with GitHub(TOKEN) as github:
repository = await github.get_repo("home-assistant/wheels-custom-integrations")
files = await repository.get_contents("components")
components = [x.attributes["name"] for x in files]
if domain in components or f"{domain}.json" in components:
print(
f"{domain} is added to https://github.com/home-assistant/wheels-custom-integrations, NICE!"
)
return
print(
f"{domain} is not added to https://github.com/home-assistant/wheels-custom-integrations"
)
print("This is needed to ensure the best possible experience for the user")
exit(1)
if __name__ == "__main__":
asyncio.get_event_loop().run_until_complete(check())