| #!/usr/bin/env python3 |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| # use this file except in compliance with the License. You may obtain a copy of |
| # the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations under |
| # the License. |
| |
| """Erlang formatter lib for CouchDB |
| Warning: this file is not meant to be executed manually |
| """ |
| |
| import pathlib |
| import subprocess |
| |
| |
| def get_erlang_version(): |
| args = [ |
| "erl", |
| "-eval", |
| "io:put_chars(erlang:system_info(otp_release)), halt().", |
| "-noshell", |
| ] |
| res = subprocess.run(args, stdout=subprocess.PIPE, check=True) |
| str_version = res.stdout.decode("utf-8").strip().strip('"') |
| return int(str_version) |
| |
| |
| # Generate source paths as "directory/*.erl" wildcard patterns |
| # those can be directly consumed by erlfmt and processed in parallel |
| # |
| def get_source_paths(): |
| curdir = None |
| for item in ( |
| subprocess.run( |
| ["git", "ls-files", "--", "*.erl"], |
| stdout=subprocess.PIPE, |
| stderr=subprocess.PIPE, |
| ) |
| .stdout.decode("utf-8") |
| .split("\n") |
| ): |
| path = pathlib.Path(item) |
| if path.parent != curdir: |
| yield str(path.parent.joinpath("*.erl").as_posix()) |
| curdir = path.parent |
| if curdir is not None: |
| yield str(curdir.joinpath("*.erl").as_posix()) |