Skip to content

Commit d0a192f

Browse files
committed
overwrite mapping; add get mapping
1 parent 42ca5cb commit d0a192f

4 files changed

Lines changed: 50 additions & 29 deletions

File tree

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
build
22
builddir
3+
.idea
34
.vscode
4-
__pycache__
5+
__pycache__
6+
*.snap
7+
prime

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@ braus --set http://other.fancy chromium_chromium.desktop
4444
braus --set http://my-videos.org google-chrome.desktop
4545
````
4646

47+
Existing URLs will be overwritten with new `--set` calls.
48+
49+
You can see current mappings by
50+
```
51+
braus --get-mappings
52+
```
53+
4754
If you made a mistake, clear the auto mapping list by
4855
```
4956
braus --clear

src/browser_mappings.py

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,39 @@ def __init__(self, settings):
55
self.settings = settings
66

77
def do_setbrowser(self, url, browser):
8-
mappingsArr = self.do_loadUrlMappings()
9-
mappingsArr.append(url + " " + browser)
8+
mappingsDict = self.do_loadUrlMappings()
9+
mappingsDict[url] = browser
10+
11+
mappingsArr = []
12+
for url, browser in mappingsDict.items():
13+
mappingsArr.append(url + " " + browser)
1014

1115
tmpVariant = GLib.Variant('aas', mappingsArr)
1216
self.settings.set_value("url-mapping", tmpVariant)
1317

1418
def do_clearbrowsermappings(self):
15-
mappingsArr=[]
16-
tmpVariant = GLib.Variant('aas', mappingsArr)
17-
self.settings.set_value("url-mapping", tmpVariant)
18-
19+
emptyVariant = GLib.Variant('aas', [])
20+
self.settings.set_value("url-mapping", emptyVariant)
21+
1922
def do_loadUrlMappings(self):
2023
urlMappings = self.settings.get_value("url-mapping")
21-
mappingsArr = []
24+
mappingsDict = {}
25+
2226
for mapping in urlMappings:
23-
pathToMatch = "".join(mapping)
24-
mappingsArr.append(pathToMatch)
27+
pathToMatch = "".join(mapping).split(" ")
28+
mappingsDict[pathToMatch[0]] = pathToMatch[1]
2529

26-
return mappingsArr
30+
return mappingsDict
2731

2832
def do_determinebrowser(self, app, url, browsers):
29-
mappingsArr = self.do_loadUrlMappings()
30-
31-
for mapping in mappingsArr:
32-
matcher = mapping.split(" ")
33+
mappingsDict = self.do_loadUrlMappings()
3334

34-
if(not url.startswith(matcher[0])):
35+
for urlPattern, browserID in mappingsDict.items():
36+
if(not url.startswith(urlPattern)):
3537
continue
3638

37-
for browser in browsers:
38-
if(browser.get_id() != matcher[1]):
39+
for b in browsers:
40+
if(b.get_id() != browserID):
3941
continue
40-
return browser
42+
return b
4143

src/main.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,26 @@ def do_activate(self):
6565

6666
def do_command_line(self, command_line):
6767
args = command_line.get_arguments()
68+
if len(args)== 0:
69+
self.activate()
70+
6871
try:
69-
if(len(args)> 0):
70-
if(args[1] =='--set'):
71-
url = args[2]
72-
browser = args[3]
73-
self.browser_mappings.do_setbrowser(url, browser)
74-
return 0
75-
76-
if(args[1] =='--clear'):
77-
self.browser_mappings.do_clearbrowsermappings()
78-
return 0
72+
if(args[1] =='--set'):
73+
url = args[2]
74+
browser = args[3]
75+
self.browser_mappings.do_setbrowser(url, browser)
76+
return 0
77+
78+
if(args[1] =='--clear'):
79+
self.browser_mappings.do_clearbrowsermappings()
80+
return 0
81+
82+
if(args[1] =='--get-mappings'):
83+
mappings = self.browser_mappings.do_loadUrlMappings()
84+
for url, browser in mappings.items():
85+
print(url, ":", browser)
86+
return 0
87+
7988
except IndexError:
8089
print("No arguments provided")
8190

0 commit comments

Comments
 (0)