#!/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())