Skip to content

Commit 8fed198

Browse files
committed
feat: support install to a specified directory
1 parent 422b533 commit 8fed198

File tree

3 files changed

+34
-27
lines changed

3 files changed

+34
-27
lines changed

README.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,21 @@ $ sudo pip install clang-tools
1616

1717
```bash
1818
$ sudo clang-tools --help
19-
usage: clang-tools [-h] [-i INSTALL]
19+
usage: clang-tools [-h] [-i INSTALL] [-d DIRECTORY]
2020

2121
optional arguments:
2222
-h, --help show this help message and exit
2323
-i INSTALL, --install INSTALL
2424
Install clang-tools with specific version. default is 12.
25+
-d DIRECTORY, --directory DIRECTORY
26+
The directory where is the clang-tools install.
2527
```
2628
Use `clang-tools` command to install version 13 binaries.
2729

2830
```bash
2931
$ sudo clang-tools --install 13
32+
# Or install to a specified directory
33+
$ sudo clang-tools --install 13 --directory .
3034

3135
$ clang-format-13 --version
3236
clang-format version 13.0.0

clang_tools/install.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -35,41 +35,45 @@ def clang_tidy_exist(version) -> bool:
3535

3636
def clang_tools_binary_url(tool, version) -> string:
3737
install_os = check_install_os()
38-
return f"https://github.com/muttleyxd/clang-tools-static-binaries/ \
39-
releases/download/master-208096c1/{tool}-{version}_{install_os}-amd64"
38+
url = f"https://github.com/muttleyxd/clang-tools-static-binaries/releases/ \
39+
download/master-208096c1/{tool}-{version}_{install_os}-amd64".replace(" ", "")
40+
return url
4041

4142

42-
def install_clang_format(version) -> None:
43+
def install_clang_format(version, directory) -> None:
4344
if clang_format_exist(version):
4445
return
4546
clang_format_binary_url = clang_tools_binary_url("clang-format", version)
4647
clang_format_binary = basename(clang_format_binary_url)
4748
download_file(clang_format_binary_url, clang_format_binary)
48-
install_clang_binary(clang_format_binary, f"clang-format-{version}")
49+
move_and_chmod_binary(clang_format_binary, f"clang-format-{version}", directory)
4950

5051

51-
def install_clang_tidy(version) -> None:
52+
def install_clang_tidy(version, directory) -> None:
5253
if clang_tidy_exist(version):
5354
return
5455
clang_tidy_binary_url = clang_tools_binary_url("clang-tidy", version)
5556
clang_tidy_binary = basename(clang_tidy_binary_url)
5657
download_file(clang_tidy_binary_url, clang_tidy_binary)
57-
install_clang_binary(clang_tidy_binary, f"clang-tidy-{version}")
58+
move_and_chmod_binary(clang_tidy_binary, f"clang-tidy-{version}", directory)
5859

5960

60-
def install_clang_binary(old_file_name, new_file_name) -> None:
61+
def move_and_chmod_binary(old_file_name, new_file_name, directory) -> None:
6162
"""Move download clang-tools binary and move to bin dir with right permission."""
62-
install_os = check_install_os()
63-
if install_os in ['linux', 'macosx']:
64-
clang_tools_dir = "/usr/bin"
65-
elif install_os == "windows":
66-
clang_tools_dir = "C:/bin"
63+
if directory:
64+
clang_tools_dir = directory
6765
else:
68-
raise Exception(f"Not support {install_os}")
66+
install_os = check_install_os()
67+
if install_os in ['linux', 'macosx']:
68+
clang_tools_dir = "/usr/bin"
69+
elif install_os == "windows":
70+
clang_tools_dir = "C:/bin"
71+
else:
72+
raise Exception(f"Not support {install_os}")
6973
shutil.move(old_file_name, f"{clang_tools_dir}/{new_file_name}")
7074
os.chmod(os.path.join(clang_tools_dir, new_file_name), 0o777)
7175

7276

73-
def install_clang_tools(version) -> None:
74-
install_clang_format(version)
75-
install_clang_tidy(version)
77+
def install_clang_tools(version, directory) -> None:
78+
install_clang_format(version, directory)
79+
install_clang_tidy(version, directory)

clang_tools/main.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,18 @@ def main() -> int:
1212
help="Install clang-tools with specific version. default is 12.",
1313
)
1414

15-
# parser.add_argument(
16-
# "-d",
17-
# "--directory",
18-
# default="/usr/bin/",
19-
# help="The directory where is the clang-tools install.",
20-
# )
15+
parser.add_argument(
16+
"-d",
17+
"--directory",
18+
default="",
19+
help="The directory where is the clang-tools install.",
20+
)
2121
args = parser.parse_args()
2222

23-
install_version = args.install
24-
# install_dir = args.directory
23+
version = args.install
24+
directory = args.directory
2525

26-
if install_version:
27-
install_clang_tools(install_version)
26+
install_clang_tools(version, directory)
2827

2928

3029
if __name__ == '__main__':

0 commit comments

Comments
 (0)