From 633264096dcb1aa0744cad71f1527275b37325c7 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Tue, 23 Jun 2020 15:14:26 +0200 Subject: [PATCH] [#495] add clojure.java.browse/browse-url --- src/babashka/impl/clojure/java/browse.clj | 25 +++++++++++++++++++++++ src/babashka/main.clj | 4 +++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 src/babashka/impl/clojure/java/browse.clj diff --git a/src/babashka/impl/clojure/java/browse.clj b/src/babashka/impl/clojure/java/browse.clj new file mode 100644 index 00000000..13f053ef --- /dev/null +++ b/src/babashka/impl/clojure/java/browse.clj @@ -0,0 +1,25 @@ +(ns babashka.impl.clojure.java.browse + {:no-doc true} + (:require [clojure.java.shell :refer [sh]] + [clojure.string :as str])) + +(def os + (let [os-name (System/getProperty "os.name") + os-name (str/lower-case os-name)] + (cond (str/starts-with? os-name "mac os x") + :mac + (str/includes? os-name "linux") + :linux + (str/includes? os-name "win") + :windows))) + +(defn browse-url [url] + (let [url (str url)] + (case os + :mac (sh "/usr/bin/open" url) + :linux (sh "/usr/bin/xdg-open" url) + :windows (sh "cmd" "/C" "start" url)))) + +(def browse-namespace + {'browse-url browse-url}) + diff --git a/src/babashka/main.clj b/src/babashka/main.clj index 0f70d597..1dd1b341 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -6,6 +6,7 @@ [babashka.impl.classes :as classes] [babashka.impl.classpath :as cp] [babashka.impl.clojure.core :as core :refer [core-extras]] + [babashka.impl.clojure.java.browse :refer [browse-namespace]] [babashka.impl.clojure.java.io :refer [io-namespace]] [babashka.impl.clojure.java.shell :refer [shell-namespace]] [babashka.impl.clojure.main :as clojure-main :refer [demunge]] @@ -367,7 +368,8 @@ If neither -e, -f, or --socket-repl are specified, then the first argument that 'babashka.curl curl-namespace 'babashka.pods pods/pods-namespace 'bencode.core bencode-namespace - 'flatland.ordered.map ordered-map-ns} + 'flatland.ordered.map ordered-map-ns + 'clojure.java.browse browse-namespace} features/xml? (assoc 'clojure.data.xml @(resolve 'babashka.impl.xml/xml-namespace)) features/yaml? (assoc 'clj-yaml.core @(resolve 'babashka.impl.yaml/yaml-namespace)) features/jdbc? (assoc 'next.jdbc @(resolve 'babashka.impl.jdbc/njdbc-namespace)