-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #63 from AtmosSystem/kernel-2.0
Kernel 2.0
- Loading branch information
Showing
14 changed files
with
188 additions
and
382 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,26 @@ | ||
(ns atmos-kernel.configuration | ||
(:require [aero.core :refer [read-config]] | ||
[clojure.java.io :as io])) | ||
[clojure.java.io :as io] | ||
[clojure.spec.alpha :as s])) | ||
|
||
(defn read-resource | ||
"Load a resource configuration" | ||
[file extension] | ||
(let [source (io/resource (str (name file) "." (name extension)))] | ||
(if-let [source (io/resource (str (name file) "." (name extension)))] | ||
(read-config source))) | ||
|
||
(s/fdef read-resource | ||
:args (s/cat :file :atmos-kernel.spec/non-blank-string | ||
:extension :atmos-kernel.spec/non-blank-string) | ||
:ret (s/or :if-not-source nil? | ||
:if-source :atmos-kernel.spec/non-empty-map)) | ||
|
||
(defn read-edn | ||
"Load a edn resource" | ||
"Load an edn resource" | ||
[file] | ||
(read-resource file :edn)) | ||
(read-resource file :edn)) | ||
|
||
(s/fdef read-edn | ||
:args (s/cat :file :atmos-kernel.spec/non-blank-string) | ||
:ret (s/or :if-not-file nil? | ||
:if-file :atmos-kernel.spec/non-empty-map)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,28 +1,43 @@ | ||
(ns atmos-kernel.core | ||
(:require [clojure.tools.logging :refer :all])) | ||
(:require [clojure.spec.alpha :as s])) | ||
|
||
(defn keyword-map | ||
"Convert the keys of map (and subsequent maps) to clojure keyword" | ||
"Convert the keys of map (and subsequent maps) to clojure keyword." | ||
[data] | ||
(into {} (map (fn [[k v]] [(keyword k) (if (map? v) | ||
(keyword-map | ||
v) v)]) data))) | ||
|
||
(s/fdef keyword-map | ||
:args (s/cat :data map?) | ||
:ret map?) | ||
|
||
(defn nil-or-empty? | ||
"Check is the coll is nil or empty" | ||
[coll] | ||
(or (nil? coll) (empty? coll))) | ||
"Check is the collection is nil or empty." | ||
[collection] | ||
(or (nil? collection) (empty? collection))) | ||
|
||
(s/fdef nil-or-empty? | ||
:args (s/cat :collection (s/coll-of any?)) | ||
:ret boolean?) | ||
|
||
(defn in? | ||
"true if coll contains elm" | ||
[coll elm] | ||
(some #(= elm %) coll)) | ||
"true if collection contains element." | ||
[collection element] | ||
(some #(= element %) collection)) | ||
|
||
(s/fdef in? | ||
:args (s/cat :collection (s/coll-of any?) | ||
:element any?) | ||
:ret boolean?) | ||
|
||
(defn throw-exception | ||
"Throw an exception" | ||
"Throw an exception." | ||
([message data] | ||
(throw (ex-info message data))) | ||
([message] | ||
(throw (ex-info message {})))) | ||
(throw-exception message {}))) | ||
|
||
(s/fdef throw-exception | ||
:args (s/cat :message string? :data (s/? map?)) | ||
:ret :atmos-kernel.spec/exception) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,19 @@ | ||
(ns atmos-kernel.io | ||
(:require [atmos-kernel.core :refer [nil-or-empty?]] | ||
[clojure.java.io :as io])) | ||
[clojure.java.io :as io] | ||
[clojure.spec.alpha :as s])) | ||
|
||
(defn copy-file | ||
"Copy content from source to destination using stream" | ||
"Copy content from source to destination using stream." | ||
[source destination] | ||
(if (and (not (nil-or-empty? source)) (not (nil-or-empty? destination))) | ||
(let [destination-file (io/file destination)] | ||
(with-open [in-stream (io/input-stream source) | ||
out-stream (io/output-stream destination-file)] | ||
(io/copy in-stream out-stream) | ||
destination-file)))) | ||
destination-file)))) | ||
|
||
(s/fdef copy-file | ||
:args (s/cat :source :atmos-kernel.spec/file-path | ||
:destination :atmos-kernel.spec/file-path) | ||
:ret nil?) |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.