import json import os from typing import Dict, List, Tuple from pykeybase.chat import KeybaseChat DRONE_ENV_VARS = {"CI", "DRONE", "DRONE_BRANCH", "DRONE_BUILD_ACTION", "DRONE_BUILD_CREATED", "DRONE_BUILD_EVENT", "DRONE_BUILD_FINISHED", "DRONE_BUILD_NUMBER", "DRONE_BUILD_PARENT", "DRONE_BUILD_STARTED", "DRONE_BUILD_STATUS", "DRONE_CALVER", "DRONE_COMMIT", "DRONE_COMMIT_AFTER", "DRONE_COMMIT_AUTHOR", "DRONE_COMMIT_AUTHOR_AVATAR", "DRONE_COMMIT_AUTHOR_EMAIL", "DRONE_COMMIT_AUTHOR_NAME", "DRONE_COMMIT_BEFORE", "DRONE_COMMIT_BRANCH", "DRONE_COMMIT_LINK", "DRONE_COMMIT_MESSAGE", "DRONE_COMMIT_REF", "DRONE_COMMIT_SHA", "DRONE_DEPLOY_TO", "DRONE_FAILED_STAGES", "DRONE_FAILED_STEPS", "DRONE_GIT_HTTP_URL", "DRONE_GIT_SSH_URL", "DRONE_PULL_REQUEST", "DRONE_REMOTE_URL", "DRONE_REPO", "DRONE_REPO_BRANCH", "DRONE_REPO_LINK", "DRONE_REPO_NAME", "DRONE_REPO_NAMESPACE", "DRONE_REPO_OWNER", "DRONE_REPO_PRIVATE", "DRONE_REPO_SCM", "DRONE_REPO_VISIBILITY", "DRONE_SEMVER", "DRONE_SEMVER_BUILD", "DRONE_SEMVER_ERROR", "DRONE_SEMVER_MAJOR", "DRONE_SEMVER_MINOR", "DRONE_SEMVER_PATCH", "DRONE_SEMVER_PRERELEASE", "DRONE_SEMVER_SHORT", "DRONE_SOURCE_BRANCH", "DRONE_STAGE_ARCH", "DRONE_STAGE_DEPENDS_ON", "DRONE_STAGE_FINISHED", "DRONE_STAGE_KIND", "DRONE_STAGE_MACHINE", "DRONE_STAGE_NAME", "DRONE_STAGE_NUMBER", "DRONE_STAGE_OS", "DRONE_STAGE_STARTED", "DRONE_STAGE_STATUS", "DRONE_STAGE_TYPE", "DRONE_STAGE_VARIANT", "DRONE_STEP_NAME", "DRONE_STEP_NUMBER", "DRONE_SYSTEM_HOST", "DRONE_SYSTEM_HOSTNAME", "DRONE_SYSTEM_PROTO", "DRONE_SYSTEM_VERSION", "DRONE_TAG", "DRONE_TARGET_BRANCH"} def build_drone_env_dict() -> Dict[str, str]: return {key: os.environ.get(key, "") for key in DRONE_ENV_VARS} def build_keybase_teams() -> List[Tuple[str, str]]: keybase_teams = [] teams_list = os.environ.get("KEYBASE_TEAMS", "").split(",") for team in teams_list: keybase_teams.append(tuple(team.split("."))) if not keybase_teams: keybase_teams = [("", "")] return keybase_teams def main(): # Teams to notify format ".,." keybase_teams = build_keybase_teams() keybase_chat = KeybaseChat() env_map = build_drone_env_dict() msg = json.dumps(env_map, indent=4) print(msg) for team in keybase_teams: keybase_chat.send_team_message(team=team[0], message=msg, channel=team[1]) if __name__ == "__main__": main()