Skip to content

Commit be4a499

Browse files
committed
utils / acb : added commandline argument
Just in case we may want to process only one file
1 parent f5eb900 commit be4a499

File tree

2 files changed

+40
-15
lines changed

2 files changed

+40
-15
lines changed

utils/add_colab_main_buttons.py

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import argparse
12
import copy
23
import functools
34
import json
@@ -8,7 +9,7 @@
89
import urllib.parse as up
910

1011

11-
from typing import Dict, Tuple
12+
from typing import Dict, List, Tuple
1213

1314

1415
import bs4
@@ -19,16 +20,23 @@
1920

2021

2122
def main(argv):
22-
if len(argv) > 1:
23-
full_path = pathlib.Path(argv[1]).absolute()
24-
if full_path.is_file():
25-
proc_file(full_path)
26-
elif full_path.is_dir():
27-
proc_dir(full_path)
28-
else:
29-
raise NotImplementedError(full_path)
23+
parsed = parse_argv(argv)
24+
25+
if parsed.file != pathlib.Path('None') and parsed.file.is_file():
26+
proc_file(parsed.file)
3027
else:
31-
proc_dir()
28+
proc_dir(parsed.directory)
29+
30+
31+
def parse_argv(argv:List[str]) -> argparse.Namespace:
32+
parser = argparse.ArgumentParser()
33+
34+
# Just in case to process only one file
35+
parser.add_argument('-f', "--file", required=False, type=pathlib.Path, default='None')
36+
# Just in case to process only one folder
37+
parser.add_argument('-d', "--directory", required=False, type=pathlib.Path, default=get_proj_root())
38+
39+
return parser.parse_args(argv[1:])
3240

3341

3442
def proc_dir(root:str=None):
@@ -131,11 +139,10 @@ def has_button_img(cell:Dict) -> bool:
131139

132140
@functools.lru_cache()
133141
def get_proj_root() -> pathlib.Path:
134-
result = pathlib.Path(__file__).parent.parent.absolute()
135-
assert result.exists(), result
136-
assert result.is_dir()
137-
assert (result / ".gitignore").exists(), (result, result.glob("*"))
138-
return result
142+
'''
143+
Cache version of rsc.get_proj_root()
144+
'''
145+
return rsc.get_proj_root()
139146

140147

141148
def get_rel_path(full_path:str) -> str:

utils/tests/test_add_colab_main_buttons.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,5 +107,23 @@ def test_has_button_img__code_cell(self):
107107
self.assertFalse(result)
108108

109109

110+
class TestAddColabMainButtonsParseArgv(unittest.TestCase):
111+
def test_parse_argv__no_args(self):
112+
result = acb.parse_argv([])
113+
self.assertEqual(result.file, pathlib.Path('None'))
114+
self.assertEqual(result.directory, acb.get_proj_root())
115+
116+
def test_parse_argv__one_file_arg(self):
117+
filename = "test.ipynb"
118+
result = acb.parse_argv(['dummy.py', "-f", "test.ipynb"])
119+
self.assertEqual(result.file, pathlib.Path(filename))
120+
121+
def test_parse_argv__one_dir_arg(self):
122+
dirname = "test_folder"
123+
result = acb.parse_argv(['dummy.py', "-d", dirname])
124+
self.assertEqual(result.file, pathlib.Path('None'))
125+
self.assertEqual(result.directory, pathlib.Path(dirname))
126+
127+
110128
if "__main__" == __name__:
111129
unittest.main()

0 commit comments

Comments
 (0)