+
+
/current/dir
diff --git a/navigator/navigator.js b/navigator/navigator.js
index 7cd3f15..7d472b5 100644
--- a/navigator/navigator.js
+++ b/navigator/navigator.js
@@ -58,14 +58,12 @@ class NavDir extends NavEntry {
}
async get_children(nav_window_ref) {
var children = [];
- var data = await cockpit.spawn(["/usr/share/cockpit/navigator/scripts/ls-no-fail.sh", this.path_str()], {err:"ignore"});
- var entries = data.split("\n");
- entries = entries.splice(1, entries.length - 2);
+ var data = await cockpit.spawn(["/usr/share/cockpit/navigator/scripts/ls-no-fail.py", this.path_str()], {err:"ignore"});
+ var entries = JSON.parse(data);
entries.forEach(entry => {
- var entry_array = entry.split(/\s+/);
- var filename = entry_array[entry_array.length - 1];
+ var filename = entry["filename"];
var path = (this.path.length >= 1 && this.path[0]) ? [... this.path, filename] : [filename];
- if(entry[0] == 'd')
+ if(entry["isdir"])
children.push(new NavDir(path, nav_window_ref));
else
children.push(new NavFile(path));
@@ -109,19 +107,23 @@ class NavWindow {
window.alert(new_dir.path_str() + " is inaccessible.");
});
}
+ up() {
+ console.log("up");
+ if(this.path_stack.length > 1)
+ this.path_stack.pop();
+ this.refresh();
+ }
}
let nav_window = new NavWindow();
+function set_up_buttons() {
+ document.getElementById("nav-up-dir-btn").addEventListener("click", nav_window.up.bind(nav_window));
+}
+
async function main() {
- nav_window.refresh();
+ await nav_window.refresh();
+ set_up_buttons();
}
main();
-
-// setTimeout(function(){
-// while(files.length){
-// var file = files.pop();
-// file.destroy();
-// }
-// }, 5000);
\ No newline at end of file
diff --git a/navigator/scripts/ls-no-fail.py b/navigator/scripts/ls-no-fail.py
new file mode 100755
index 0000000..2672a1c
--- /dev/null
+++ b/navigator/scripts/ls-no-fail.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python3
+
+import os
+import json
+import sys
+
+def main():
+ if(len(sys.argv) < 2):
+ sys.exit(1)
+ try:
+ nodes = os.listdir(sys.argv[1])
+ except:
+ print("No such file or directory")
+ sys.exit(1)
+ response = []
+ for node in nodes:
+ response.append({"filename": node, "isdir": os.path.isdir(sys.argv[1] + "/" + node)})
+ print(json.dumps(response, indent=4))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/navigator/scripts/ls-no-fail.sh b/navigator/scripts/ls-no-fail.sh
deleted file mode 100755
index a550037..0000000
--- a/navigator/scripts/ls-no-fail.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-
-ls -lL "$1"
-
-if [[ "$?" != "2" ]]; then
- exit 0
-fi
-exit 1
\ No newline at end of file