@@ -27,6 +27,19 @@ def _build_identifier(repo_type: str, name: str, separator: str) -> str:
2727 return f"frequenz{ separator } { middle } { name } "
2828
2929
30+ def _get_from_json (key : str ) -> str :
31+ """Get a string from the cookiecutter.json file.
32+
33+ Args:
34+ key: The key to get the string for.
35+
36+ Returns:
37+ The string from the cookiecutter.json file.
38+ """
39+ with open ("../cookiecutter.json" , encoding = "utf8" ) as cookiecutter_json_file :
40+ return _json .load (cookiecutter_json_file )[key ]
41+
42+
3043# Ignoring because cookiecutter simple_filter decorator is not typed.
3144@_simple_filter # type: ignore[misc]
3245def python_package (cookiecutter : dict [str , str ]) -> str :
@@ -80,14 +93,55 @@ def keywords(cookiecutter: dict[str, str]) -> str:
8093 The extended keywords.
8194 """
8295 repo_type = cookiecutter ["type" ]
83- extended_keywords = ["frequenz" , repo_type ]
96+ extended_keywords = ["frequenz" , "python" , repo_type ]
8497 if repo_type == "api" :
85- extended_keywords .append ( "grpc" )
98+ extended_keywords .extend ([ "grpc" , "protobuf" , "rpc" ] )
8699 extended_keywords .append (cookiecutter ["name" ])
87- with open ("../cookiecutter.json" , encoding = "utf8" ) as cookiecutter_json_file :
88- no_input = _json .load (cookiecutter_json_file )["keywords" ]
100+ default = _get_from_json ("keywords" )
89101 cookiecutter_keywords = cookiecutter ["keywords" ]
90- if cookiecutter_keywords == no_input :
102+ if cookiecutter_keywords == default :
91103 cookiecutter_keywords = ""
92104 extended_keywords .extend (k .strip () for k in cookiecutter_keywords .split ("," ))
93105 return _json .dumps (extended_keywords )
106+
107+
108+ @_simple_filter # type: ignore[misc]
109+ def default_codeowners (cookiecutter : dict [str , str ]) -> str :
110+ """Build a default description for the project.
111+
112+ Args:
113+ cookiecutter: The cookiecutter context.
114+
115+ Returns:
116+ The default description.
117+ """
118+ repo_type = cookiecutter ["type" ]
119+
120+ codeowners = cookiecutter ["default_codeowners" ]
121+ default = _get_from_json ("default_codeowners" )
122+ if codeowners != default :
123+ return codeowners
124+
125+ github_org = _get_from_json ("github_org" )
126+ if github_org != "frequenz-floss" :
127+ return f"TODO(cookiecutter): Add codeowners (like @{ github_org } /some-team)"
128+
129+ match repo_type :
130+ case "actor" :
131+ return (
132+ "TODO(cookiecutter): Add codeowners (like @{github_org}/some-team)"
133+ "# Temporary, should probably change"
134+ )
135+ case "api" :
136+ return "@freqenz-floss/api-team"
137+ case "lib" :
138+ return "@freqenz-floss/python-sdk-team"
139+ case "app" :
140+ return (
141+ "@freqenz-floss/python-sdk-team @frequenz-floss/datasci-team "
142+ "# Temporary, should probably change"
143+ )
144+ case "model" :
145+ return "@freqenz-floss/datasci-team"
146+ case _:
147+ assert False , f"Unhandled repository type { repo_type !r} "
0 commit comments