Add new navigation

Add new navigation

error: pathspec 'src/discuss/components/navigation.cljs' did not match any file(s) known to git

--- src/discuss/components/navigation.cljs
+++ src/discuss/components/navigation.cljs
@@ -0,0 +1,38 @@
+(ns discuss.components.navigation
+  (:require [om.core :as om :include-macros true]
+            [om.dom :as dom :include-macros true]
+            [discuss.communication.main :as com]
+            [discuss.translations :refer [translate]]
+            [discuss.utils.common :as lib]
+            [discuss.utils.views :as vlib]))
+
+(defn- element
+  "Create one element for the navigation."
+  [icon [group key] fn]
+  (dom/span #js {:className "pointer"
+                :onClick   fn}
+           (vlib/fa-icon icon) " " (translate group key)))
+
+(def home
+  "Show home screen and initialize discussion."
+  (element "fa-home" [:nav :home] com/init!))
+
+(def find-arg
+  "Open view to find statements inside of the discussion."
+  (element "fa-search" [:nav :find] nil))
+
+(def options
+  "Entrypoint to show options. Should be something like a onclick handler."
+  (element "fa-cog" [:options :heading] (fn []
+                                          (lib/next-view! (lib/current-view))
+                                          (lib/change-view! :options))))
+
+(defn main
+  "Create main navigation with general elements."
+  [data owner]
+  (reify om/IRender
+    (render [_]
+      (dom/div #js {:className "text-muted"}
+               home
+               find-arg
+               options))))


feat(cache-control) Finding the minimal max-age value among headers

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/B2W-Digital/pdg-core.git/'


[EN] Add comment for weird data tranformation.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/election-notification-works.git/'


test helpers

test helpers

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/fhirbase/fhirterm.git/'


tests added

tests added

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Zallin/fhirvc.git/'


code kata test namespace for Specter

code kata test namespace for Specter

error: pathspec 'cljx/plongeur-clj/test/lab/specter_lab.clj' did not match any file(s) known to git

--- cljx/plongeur-clj/test/lab/specter_lab.clj
+++ cljx/plongeur-clj/test/lab/specter_lab.clj
@@ -0,0 +1,20 @@
+(ns lab.specter-lab
+  (:use midje.sweet)
+  (:use com.rpl.specter)
+  (:use com.rpl.specter.macros))
+
+(facts
+  "about Specter"
+
+  (facts
+    "about setval"
+
+    (setval [:bla] 2 {:bla 1}) => {:bla 2}
+
+    (setval [:foo :gee] 2 {:foo {:gee 1}}) => {:foo {:gee 2}}
+
+
+
+    )
+
+  )


Add SPScrapeTripReport which implements ScrapeTripReport protocol.

error: pathspec 'project/scrape-trs/src/scrape_trs/summitpost/core.clj' did not match any file(s) known to git

--- project/scrape-trs/src/scrape_trs/summitpost/core.clj
+++ project/scrape-trs/src/scrape_trs/summitpost/core.clj
@@ -0,0 +1,24 @@
+(ns scrape-trs.summitpost.core
+  (:require [scrape-trs.summitpost
+             [extract-pager-urls :refer [extract-all-pager-urls]]
+             [extract-result-urls :refer [extract-result-urls]]
+             [extract-trip-report :refer [extract-trip-report]]])
+  (:import scrape_trs.protocol.ScrapeTripReport))
+
+(def base-url "http://www.summitpost.org")
+
+(deftype SPScrapeTripReport []
+
+  ScrapeTripReport
+
+  (extract-pager-urls
+    [this list-page]
+    (extract-all-pager-urls base-url list-page))
+
+  (extract-trip-report-urls
+    [this list-page]
+    (extract-result-urls base-url list-page))
+
+  (extract-trip-report
+    [this trip-report-url trip-report-page]
+    (extract-trip-report trip-report-url trip-report-page)))


add empty changelog to repo

add empty changelog to repo

To make sure that there aren't cljs compile issues on a clean clone

error: pathspec 'src/braid/client/ui/views/pages/changelog.cljs' did not match any file(s) known to git

--- src/braid/client/ui/views/pages/changelog.cljs
+++ src/braid/client/ui/views/pages/changelog.cljs
@@ -0,0 +1,5 @@
+; THIS FILE IS AUTOMATICALLY GENERATED FROM CHANGELOG.md
+; DO NOT EDIT DIRECTLY
+
+(ns braid.client.ui.views.pages.changelog)
+(defn changelog-view [] [:div.page.changelog [:div.title "Changelog"] [:div.content [:div]]])


remove not needed comments

remove not needed comments

error: pathspec 'Breadth' did not match any file(s) known to git
error: pathspec 'First' did not match any file(s) known to git
error: pathspec 'Search' did not match any file(s) known to git
error: pathspec 'Shortest' did not match any file(s) known to git
error: pathspec 'Reach.clj' did not match any file(s) known to git


tiled-map-tile macros completed.

tiled-map-tile macros completed.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Yoshiyuka/cthulhu.git/'


On Duty: KAIZEN 	modified:   test/loganalyzer/core_test.clj

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/StephenBergeron/Specter.git/'


Upgrade kehaar to 0.10.3

Upgrade kehaar to 0.10.3

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/vote-by-mail-works.git/'


bump blueprints

bump blueprints

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/starcity-properties/odin.git/'


Add project.clj.

Add project.clj.

error: pathspec 'project.clj' did not match any file(s) known to git

--- project.clj
+++ project.clj
@@ -0,0 +1,15 @@
+(defproject postal "1.2.0-SNAPSHOT"
+  :resources-path "etc"
+  :repositories {"java.net" "http://download.java.net/maven/2"}
+  :dependencies [[org.clojure/clojure "1.2.0-master-SNAPSHOT"]
+                 [org.clojure/clojure-contrib "1.2.0-SNAPSHOT"]
+                 [javax.mail/mail "1.4.4-SNAPSHOT"
+                  :exclusions [javax.activation/activation]]]
+  :dev-dependencies [[swank-clojure "1.2.1"]]
+  :source-path "src/clj"
+  :namespaces [com.draines.postal.core
+               com.draines.postal.message
+               com.draines.postal.date
+               com.draines.postal.main
+               com.draines.postal.sendmail
+               com.draines.postal.smtp])


chore(core): update core to 2.5.2

chore(core): update core to 2.5.2

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/B2W-BIT/restQL-server.git/'


[WM] update deps

[WM] update deps

...except datomic-toolbox because that's a lot of work.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/notification-works.git/'


Version 0.1.0

Version 0.1.0

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/janraasch/esigrate.git/'


bump to 0.7.7-SNAPSHOT

bump to 0.7.7-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject clj-http "0.7.6"
+(defproject clj-http "0.7.7-SNAPSHOT"
   :description "A Clojure HTTP library wrapping the Apache HttpComponents client."
   :url "https://github.com/dakrone/clj-http/"
   :license {:name "The MIT License"


use 0.7.2 dep

use 0.7.2 dep

--- project.clj
+++ project.clj
@@ -8,7 +8,7 @@
   :dependencies [[storm/kafka "0.7.0-incubating"
                    :exclusions [org.apache.zookeeper/zookeeper
                                 log4j/log4j]]]
-  :dev-dependencies [[storm "0.7.2-rc1"]
+  :dev-dependencies [[storm "0.7.2"]
                      [org.clojure/clojure "1.4.0"]]
   :jvm-opts ["-Djava.library.path=/usr/local/lib:/opt/local/lib:/usr/lib"]
 )


Bump dependencies

Bump dependencies

--- project.clj
+++ project.clj
@@ -8,20 +8,20 @@
   :min-lein-version "2.0.0"
   :exclusions [org.clojure/clojure]
   :dependencies [[org.apache.httpcomponents/httpcore "4.3.2"]
-                 [org.apache.httpcomponents/httpclient "4.3.3"]
-                 [org.apache.httpcomponents/httpmime "4.3.3"]
+                 [org.apache.httpcomponents/httpclient "4.3.4"]
+                 [org.apache.httpcomponents/httpmime "4.3.4"]
                  [commons-codec "1.9"]
                  [commons-io "2.4"]
                  [slingshot "0.10.3"]
                  [cheshire "5.3.1"]
                  [crouton "0.1.2"]
-                 [org.clojure/tools.reader "0.8.4"]
+                 [org.clojure/tools.reader "0.8.5"]
                  [potemkin "0.3.4"]]
   :profiles {:dev {:dependencies [[org.clojure/clojure "1.6.0"]
-                                  [org.clojure/tools.logging "0.2.6"]
+                                  [org.clojure/tools.logging "0.3.0"]
                                   [log4j "1.2.17"]
-                                  [ring/ring-jetty-adapter "1.2.2"]
-                                  [ring/ring-devel "1.2.2"]]}
+                                  [ring/ring-jetty-adapter "1.3.0"]
+                                  [ring/ring-devel "1.3.0"]]}
              :1.4 {:dependencies [[org.clojure/clojure "1.4.0"]]}
              :1.5 {:dependencies [[org.clojure/clojure "1.5.1"]]}}
   :aliases {"all" ["with-profile" "dev,1.4:dev,1.5:dev"]}


Update dependencies

Update dependencies

--- project.clj
+++ project.clj
@@ -7,7 +7,7 @@
             :url "http://www.eclipse.org/legal/epl-v10.html"}
   :dependencies [[cljsjs/react "0.12.2-5"]
                  [org.clojure/clojure "1.6.0"]
-                 [org.clojure/clojurescript "0.0-2843" :scope "provided"]]
+                 [org.clojure/clojurescript "0.0-3178" :scope "provided"]]
   :aliases {"cleantest" ["do" "clean," "cljx" "once," "test," "cljsbuild" "test"]
             "deploy" ["do" "clean," "cljx" "once," "deploy" "clojars"]}
   :cljsbuild {:builds [{:id "dev"
@@ -45,14 +45,15 @@
   :deploy-repositories [["releases" :clojars]]
   :prep-tasks [["cljx" "once"]]
   :profiles {:dev {:dependencies [[crate "0.2.5"]
-                                  [com.cemerick/piggieback "0.1.6-SNAPSHOT"]
+                                  [com.cemerick/piggieback "0.2.0"]
+                                  [org.clojure/tools.nrepl "0.2.10"]
                                   [hickory "0.5.4"]
-                                  [org.clojure/tools.nrepl "0.2.7"]
                                   [reagent "0.4.3"]]
-                   :plugins [[com.keminglabs/cljx "0.5.0"]
+                   :plugins [[com.keminglabs/cljx "0.6.0"]
                              [com.cemerick/clojurescript.test "0.3.3"]
-                             [lein-cljsbuild "1.0.4"]]
-                   :repl-options {:nrepl-middleware [cljx.repl-middleware/wrap-cljx]}
+                             [lein-cljsbuild "1.0.5"]]
+                   :repl-options {:nrepl-middleware
+                                  [cljx.repl-middleware/wrap-cljx]}
                    :resource-paths ["test-resources"]
                    :source-paths ["target/classes"]
                    :test-paths ["test" "target/test-classes"]}})


kata2: add linear search with iterate and for

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/schaueho/clojure-codekata.git/'


solved

solved

error: pathspec 'src/4clojure/dot_product.clj' did not match any file(s) known to git

--- src/4clojure/dot_product.clj
+++ src/4clojure/dot_product.clj
@@ -0,0 +1,38 @@
+;; dot product
+;; http://www.4clojure.com/problem/143
+
+;; Difficulty:	Easy
+;; Topics:	seqs math
+
+
+;; Create a function that computes the dot product of two sequences. You may assume that the vectors will have the same length.
+
+;; https://en.wikipedia.org/wiki/Dot_product
+(defn __ [v y]
+  (reduce + (map * v y)))
+
+
+(= 0 (__ [0 1 0] [1 0 0]))
+
+(= 3 (__ [1 1 1] [1 1 1]))
+
+(= 32 (__ [1 2 3] [4 5 6]))
+
+(= 256 (__ [2 5 6] [100 10 1]))
+
+
+;; 4clojure copy .parseBoolean
+#(reduce + (map * %1 %2))
+
+
+;; _artem_uv's solution:
+#(reduce + (map * %1 %2))
+
+;; _pcl's solution:
+#(reduce + (map * %1 %2))
+
+;; aceeca1's solution:
+(comp (partial apply +) (partial map *))
+
+;; adereth's solution:
+(fn [v1 v2] (reduce + (map * v1 v2)))


add clojure client to examples

add clojure client to examples

error: pathspec 'examples/statsd.clj' did not match any file(s) known to git

--- examples/statsd.clj
+++ examples/statsd.clj
@@ -0,0 +1,49 @@
+(ns statsd-client
+  "a simple StatsD client written in Clojure
+
+   Usage:
+    statsd-client/increment 'foo
+    statsd-client/decrement 'foo
+    statsd-client/increment 'foo 1
+    statsd-client/decrement 'foo 1
+    statsd-client/gauge 'foo 1
+    statsd-client/timing 'foo 1
+  "
+  (:import (java.net InetAddress DatagramPacket DatagramSocket)))
+
+(def server-address "127.0.0.1")
+(def server-port 8125)
+
+; UDP helper functions
+(defn make-socket
+  ([] (new DatagramSocket))
+  ([port] (new DatagramSocket port)))
+
+(defn send-data [send-socket ip port data]
+  (let [ipaddress (InetAddress/getByName ip),
+        send-packet (new DatagramPacket (.getBytes data) (.length data) ipaddress port)]
+  (.send send-socket send-packet)))
+
+(defn make-send [ip port]
+  (let [send-socket (make-socket)]
+       (fn [data] (send-data send-socket ip port data))))
+
+(def send-msg (make-send server-address server-port))
+
+; statsd client functions
+(defn increment
+  ([metric] (increment metric 1))
+  ([metric value]
+    (send-msg (str metric ":" value "|c"))))
+
+(defn decrement
+  ([metric] (increment metric -1))
+  ([metric value]
+    (send-msg (str metric ":" value "|c"))))
+
+(defn timing [metric value]
+  (send-msg (str metric ":" value "|ms")))
+
+(defn gauge [metric value]
+  (send-msg (str metric ":" value "|g")))
+


Prepare a workaround for the Leiningen 2 Preview 9 provisioning issue

error: pathspec 'ci_environment/leiningen/files/default/init.clj' did not match any file(s) known to git

--- ci_environment/leiningen/files/default/init.clj
+++ ci_environment/leiningen/files/default/init.clj
@@ -0,0 +1,4 @@
+;; https://github.com/technomancy/leiningen/issues/747#issuecomment-8024136
+(swap! leiningen.core.project/default-profiles
+       update-in [:base] assoc :repositories
+       [["clojars" {:url "https://clojars.org/repo/"}]])


clean up one more test

clean up one more test

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/scheduled-message-works.git/'


subscription stats rules

subscription stats rules

error: pathspec 'src/clj/swarmpit/event/rules/subscription_stats.clj' did not match any file(s) known to git

--- src/clj/swarmpit/event/rules/subscription_stats.clj
+++ src/clj/swarmpit/event/rules/subscription_stats.clj
@@ -0,0 +1,29 @@
+(ns swarmpit.event.rules.subscription-stats
+  (:refer-clojure :exclude [list])
+  (:require [swarmpit.api :as api]))
+
+(def subscribers #{:service-info :task-list :node-list :node-info})
+
+(defn- service-info-data
+  [service-id]
+  (let [service (api/service service-id)
+        tasks (api/service-tasks service-id)
+        networks (api/service-networks service-id)]
+    {:service  service
+     :tasks    tasks
+     :networks networks}))
+
+(defn- node-info-data
+  [node-id]
+  (let [node (api/node node-id)
+        tasks (api/node-tasks node-id)]
+    {:node  node
+     :tasks tasks}))
+
+(defn subscribed-data
+  [{:keys [handler params] :as subscription}]
+  (case handler
+    :service-info (service-info-data (:id params))
+    :task-list (api/tasks)
+    :node-list (api/nodes)
+    :node-info (node-info-data (:id params))))


[WM] add support for voting-methods to entity ns

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/election-authority-works.git/'


Changed question generating function name.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/inchingforward/eon.git/'


Added docker process commands.

Added docker process commands.

error: pathspec 'src/cmr/dev/env/manager/process/docker.clj' did not match any file(s) known to git

--- src/cmr/dev/env/manager/process/docker.clj
+++ src/cmr/dev/env/manager/process/docker.clj
@@ -0,0 +1,36 @@
+(ns cmr.dev.env.manager.process.docker
+  (:require
+    [clojure.java.io :as io]
+    [clojure.string :as string]
+    [cmr.dev.env.manager.process.core :as process]
+    [taoensso.timbre :as log]
+    [trifl.fs :as fs]))
+
+(defn- multi-flags
+  [flag values]
+  (mapcat #(conj [flag] %) values))
+
+(defn- docker
+  [args]
+  (log/debug "Running the `docker` cli with the args:" (vec args))
+  (apply process/exec (concat ["docker"] args)))
+
+(defn pull
+  [opts]
+  (docker ["pull" (:image-id opts)]))
+
+(defn stop
+  [opts]
+  (docker ["stop" (string/trim (slurp (:container-id-file opts)))])
+  (io/delete-file (:container-id-file opts)))
+
+(defn run
+  [opts]
+  (when (fs/exists? (io/file (:container-id-file opts)))
+    (stop opts))
+  (docker (concat
+           ["run" "-d"
+            (str "--cidfile=" (:container-id-file opts))]
+           (multi-flags "-p" (:ports opts))
+           (multi-flags "-e" (:env opts))
+           [(:image-id opts)])))


don't let users login if not :is_active true

--- src/metabase/api/session.clj
+++ src/metabase/api/session.clj
@@ -1,8 +1,9 @@
 (ns metabase.api.session
   "/api/session endpoints"
   (:require [cemerick.friend.credentials :as creds]
+            [compojure.core :refer [defroutes POST DELETE]]
+            [korma.core :as korma]
             [metabase.api.common :refer :all]
-            [compojure.core :refer [defroutes POST DELETE]]
             [metabase.db :refer :all]
             (metabase.models [user :refer [User set-user-password]]
                              [session :refer [Session]])))
@@ -11,7 +12,7 @@
 ;; login
 (defendpoint POST "/" [:as {{:keys [email password] :as body} :body}]
   (require-params email password)
-  (let-400 [user (sel :one :fields [User :id :password_salt :password] :email email)]
+  (let-400 [user (sel :one :fields [User :id :password_salt :password] :email email (korma/where {:is_active true}))]
     (check (creds/bcrypt-verify (str (:password_salt user) password) (:password user)) [400 "password mismatch"])
     (let [session-id (str (java.util.UUID/randomUUID))]
       (ins Session


Functions to interact with the shell for controlling player

error: pathspec 'src/moodseer_clj/process.clj' did not match any file(s) known to git

--- src/moodseer_clj/process.clj
+++ src/moodseer_clj/process.clj
@@ -0,0 +1,113 @@
+(ns moodseer.process
+  (:use [clojure.java.shell :only [sh]])
+  (:use [clojure.string :only [split join]])
+  (:require [clojure.string :as str]))
+(def zones [{:id 2 :desc "Old laptop"  :host "172.16.17.101"   :port 6600 :moodseer-key nil},
+            {:id 0 :desc "Living Room" :host "molly.magichome" :port 6600 :moodseer-key "/home/gregj/.ssh/moodseer-molly_dsa"},
+            {:id 1 :desc "Master Bedroom" :host "moodspot1.magichome" :port 6700 :moodseer-key nil}])
+
+
+(defn mpc-base-cmd  []
+  (let [zoneparams (nth zones 0 nil)]
+ [ "mpc" "--port" (str (:port zoneparams)) "--host" (:host zoneparams) ]
+ )
+)
+
+(defn mpc-key->keyword [s]
+  (->>
+   (str/replace s #"(ANS_META_|ANS_)" "")
+   str/lower-case
+   keyword
+   ))
+
+(defn mpc-pairs->map [& [pairs]]
+  (let [pairs (str/replace
+               (str/replace pairs "=\r?\n" "=nil")  ;; egregious work-around for last value null
+               "\r" "")]
+    (if (= "" pairs)
+      nil
+      (->>
+       (split pairs #"[=\n]")
+       (map str/trim)
+       (map-indexed (fn [i x] (if (odd? i) x (mpc-key->keyword x))))
+       (apply hash-map)))))
+
+(defn player-play []
+  (apply sh (into (mpc-base-cmd) ["play"])))
+
+(defn player-pause []
+  (apply sh (into (mpc-base-cmd) ["toggle"])))
+
+(defn player-stop []
+  (apply sh (into (mpc-base-cmd) ["stop"])))
+
+
+(defn player-next []
+  (apply sh (into (mpc-base-cmd) ["next"])))
+
+(defn player-prev []
+  (apply sh (into (mpc-base-cmd) ["prev"])))
+
+(defn player-set-volume [n]
+  "Set volume by integer 0-100, or increment (with + or - prefix)"
+  (apply sh (into (mpc-base-cmd) ["volume" (str n)])))
+
+(defn player-volume-up
+  ([] (player-volume-up 5))
+  ([n]
+     (player-set-volume (str "+" n))))
+
+(defn player-volume-down
+  ([] (player-volume-down 5))
+  ([n]
+     (player-set-volume (str "-" n))))
+
+(defn player-nowplaying []
+  (->>
+   (apply sh (into (mpc-base-cmd)  ["current" "--format" "file=%file%\nartist=%artist%\nalbum=%album%\nsong=%title%\ntrack-num=%track%\ntime=%time%\n"]))
+   :out
+   mpc-pairs->map
+   ))
+
+(defn get-player-progress []
+  (let [x (:out (sh "bash" "-c" (str (join " "  (mpc-base-cmd)) " --format file=%file%\\\\ntime=%time%\\\\n")))
+        ; pick out components: playlist_pos playlist_count time_played time_length percent_played
+        progress-fields [:state :playlist-pos :playlist-count :time-played :song-length :percent-played]
+        y  (into {} (map #(hash-map %1 %2)
+                         progress-fields
+                         (rest (first (re-seq #"\n?\[(playing|paused)\]\s+#([0-9]+)/([0-9]+)\s+([0-9:]+)/([0-9:]+)\s+\(([0-9]+)%\)" x)))
+                         ))
+        z (into y (map #(hash-map (keyword (nth % 1)) (nth % 2))
+                       (re-seq #"(volume|repeat|random|single|consume):\s+([^ \n]+)" x)))
+        zz (conj
+            (into z (map #(hash-map (keyword (nth % 1)) (nth % 2))
+                         (re-seq #"(file|time)=([^\n]+)" x)))
+            {:paused (= (:state z) "paused")})
+        ]
+    zz))
+
+(defn get-player-volume []
+  (first
+   (map #(hash-map (keyword (nth % 1)) (nth % 2))
+        (re-seq #"(volume):\s*([0-9]+)" (:out (apply sh (into (mpc-base-cmd) ["volume"])))))))
+
+(defn get-player-upcoming
+  "Get pre-formatted upcoming songs"
+  ([]
+     (get-player-upcoming 10))
+  ([n]
+     (let [pos (+ n (Integer/parseInt (:playlist-pos (get-player-progress))))
+           x (:out (sh "bash" "-c" (str (join " " (mpc-base-cmd)) " playlist | head -" pos " | tail -" n)))]
+         (str/split x #"\n"))))
+
+(defn get-player-upcoming-paths
+  "Get paths to files in upcoming list"
+  ([] (get-player-upcoming-paths 10))
+  ([n]
+     (let [pos (+ n (Integer/parseInt (:playlist-pos (get-player-progress))))
+           x (:out (sh "bash" "-c" (str (join " " (mpc-base-cmd)) " listall | head -" n)))]
+         (split x #"\n"))))
+
+(defn player-say [sayphrase]
+  (sh "ssh" "-i" ((nth zones 0 nil) :moodseer-key) ((nth zones 0 nil) :host) "espeak '" sayphrase "'"))
+  ;; (sh "ssh" "-i" "/home/gregj/.ssh/moodseer-molly_dsa" "molly.magichome" "espeak '" sayphrase "'"))


Extensive color chart

Extensive color chart

error: pathspec 'src/inkspot/color_chart/lindsay.clj' did not match any file(s) known to git

--- src/inkspot/color_chart/lindsay.clj
+++ src/inkspot/color_chart/lindsay.clj
@@ -0,0 +1,551 @@
+(ns inkspot.color-chart.lindsay)
+
+; Derived from http://catless.ncl.ac.uk/Lindsay/swatchX.html [X = 0..8]
+
+(def swatch
+  (array-map
+    :snow "#FFFAFA"
+    :ghostwhite "#F8F8FF"
+    :whitesmoke "#F5F5F5"
+    :gainsboro "#DCDCDC"
+    :floralwhite "#FFFAF0"
+    :oldlace "#FDF5E6"
+    :linen "#FAF0E6"
+    :antiquewhite "#FAEBD7"
+    :papayawhip "#FFEFD5"
+    :blanchedalmond "#FFEBCD"
+    :bisque "#FFE4C4"
+    :peachpuff "#FFDAB9"
+    :navajowhite "#FFDEAD"
+    :moccasin "#FFE4B5"
+    :cornsilk "#FFF8DC"
+    :ivory "#FFFFF0"
+    :lemonchiffon "#FFFACD"
+    :seashell "#FFF5EE"
+    :honeydew "#F0FFF0"
+    :mintcream "#F5FFFA"
+    :azure "#F0FFFF"
+    :aliceblue "#F0F8FF"
+    :lavender "#E6E6FA"
+    :lavenderblush "#FFF0F5"
+    :mistyrose "#FFE4E1"
+    :white "#FFFFFF"
+    :black "#000000"
+    :darkslategrey "#2F4F4F"
+    :dimgrey "#696969"
+    :slategrey "#708090"
+    :lightslategrey "#778899"
+    :grey "#BEBEBE"
+    :lightgrey "#D3D3D3"
+    :midnightblue "#191970"
+    :navyblue "#000080"
+    :navy "#000080"
+    :cornflowerblue "#6495ED"
+    :darkslateblue "#483D8B"
+    :slateblue "#6A5ACD"
+    :mediumslateblue "#7B68EE"
+    :lightslateblue "#8470FF"
+    :mediumblue "#0000CD"
+    :royalblue "#4169E1"
+    :blue "#0000FF"
+    :dodgerblue "#1E90FF"
+    :deepskyblue "#00BFFF"
+    :skyblue "#87CEEB"
+    :lightskyblue "#87CEFA"
+    :steelblue "#4682B4"
+    :lightsteelblue "#B0C4DE"
+    :lightblue "#ADD8E6"
+    :powderblue "#B0E0E6"
+    :paleturquoise "#AFEEEE"
+    :darkturquoise "#00CED1"
+    :mediumturquoise "#48D1CC"
+    :turquoise "#40E0D0"
+    :cyan "#00FFFF"
+    :lightcyan "#E0FFFF"
+    :cadetblue "#5F9EA0"
+    :mediumaquamarine "#66CDAA"
+    :aquamarine "#7FFFD4"
+    :darkgreen "#006400"
+    :darkolivegreen "#556B2F"
+    :darkseagreen "#8FBC8F"
+    :seagreen "#2E8B57"
+    :mediumseagreen "#3CB371"
+    :lightseagreen "#20B2AA"
+    :palegreen "#98FB98"
+    :springgreen "#00FF7F"
+    :lawngreen "#7CFC00"
+    :green "#00FF00"
+    :chartreuse "#7FFF00"
+    :mediumspringgreen "#00FA9A"
+    :greenyellow "#ADFF2F"
+    :limegreen "#32CD32"
+    :yellowgreen "#9ACD32"
+    :forestgreen "#228B22"
+    :olivedrab "#6B8E23"
+    :darkkhaki "#BDB76B"
+    :khaki "#F0E68C"
+    :palegoldenrod "#EEE8AA"
+    :lightgoldenrodyellow "#FAFAD2"
+    :lightyellow "#FFFFE0"
+    :yellow "#FFFF00"
+    :gold "#FFD700"
+    :lightgoldenrod "#EEDD82"
+    :goldenrod "#DAA520"
+    :darkgoldenrod "#B8860B"
+    :rosybrown "#BC8F8F"
+    :indianred "#CD5C5C"
+    :saddlebrown "#8B4513"
+    :sienna "#A0522D"
+    :peru "#CD853F"
+    :burlywood "#DEB887"
+    :beige "#F5F5DC"
+    :wheat "#F5DEB3"
+    :sandybrown "#F4A460"
+    :tan "#D2B48C"
+    :chocolate "#D2691E"
+    :firebrick "#B22222"
+    :brown "#A52A2A"
+    :darksalmon "#E9967A"
+    :salmon "#FA8072"
+    :lightsalmon "#FFA07A"
+    :orange "#FFA500"
+    :darkorange "#FF8C00"
+    :coral "#FF7F50"
+    :lightcoral "#F08080"
+    :tomato "#FF6347"
+    :orangered "#FF4500"
+    :red "#FF0000"
+    :hotpink "#FF69B4"
+    :deeppink "#FF1493"
+    :pink "#FFC0CB"
+    :lightpink "#FFB6C1"
+    :palevioletred "#DB7093"
+    :maroon "#B03060"
+    :mediumvioletred "#C71585"
+    :violetred "#D02090"
+    :magenta "#FF00FF"
+    :violet "#EE82EE"
+    :plum "#DDA0DD"
+    :orchid "#DA70D6"
+    :mediumorchid "#BA55D3"
+    :darkorchid "#9932CC"
+    :darkviolet "#9400D3"
+    :blueviolet "#8A2BE2"
+    :purple "#A020F0"
+    :mediumpurple "#9370DB"
+    :thistle "#D8BFD8"
+    :snow1 "#FFFAFA"
+    :snow2 "#EEE9E9"
+    :snow3 "#CDC9C9"
+    :snow4 "#8B8989"
+    :seashell1 "#FFF5EE"
+    :seashell2 "#EEE5DE"
+    :seashell3 "#CDC5BF"
+    :seashell4 "#8B8682"
+    :antiquewhite1 "#FFEFDB"
+    :antiquewhite2 "#EEDFCC"
+    :antiquewhite3 "#CDC0B0"
+    :antiquewhite4 "#8B8378"
+    :bisque1 "#FFE4C4"
+    :bisque2 "#EED5B7"
+    :bisque3 "#CDB79E"
+    :bisque4 "#8B7D6B"
+    :peachpuff1 "#FFDAB9"
+    :peachpuff2 "#EECBAD"
+    :peachpuff3 "#CDAF95"
+    :peachpuff4 "#8B7765"
+    :navajowhite1 "#FFDEAD"
+    :navajowhite2 "#EECFA1"
+    :navajowhite3 "#CDB38B"
+    :navajowhite4 "#8B795E"
+    :lemonchiffon1 "#FFFACD"
+    :lemonchiffon2 "#EEE9BF"
+    :lemonchiffon3 "#CDC9A5"
+    :lemonchiffon4 "#8B8970"
+    :cornsilk1 "#FFF8DC"
+    :cornsilk2 "#EEE8CD"
+    :cornsilk3 "#CDC8B1"
+    :cornsilk4 "#8B8878"
+    :ivory1 "#FFFFF0"
+    :ivory2 "#EEEEE0"
+    :ivory3 "#CDCDC1"
+    :ivory4 "#8B8B83"
+    :honeydew1 "#F0FFF0"
+    :honeydew2 "#E0EEE0"
+    :honeydew3 "#C1CDC1"
+    :honeydew4 "#838B83"
+    :lavenderblush1 "#FFF0F5"
+    :lavenderblush2 "#EEE0E5"
+    :lavenderblush3 "#CDC1C5"
+    :lavenderblush4 "#8B8386"
+    :mistyrose1 "#FFE4E1"
+    :mistyrose2 "#EED5D2"
+    :mistyrose3 "#CDB7B5"
+    :mistyrose4 "#8B7D7B"
+    :azure1 "#F0FFFF"
+    :azure2 "#E0EEEE"
+    :azure3 "#C1CDCD"
+    :azure4 "#838B8B"
+    :slateblue1 "#836FFF"
+    :slateblue2 "#7A67EE"
+    :slateblue3 "#6959CD"
+    :slateblue4 "#473C8B"
+    :royalblue1 "#4876FF"
+    :royalblue2 "#436EEE"
+    :royalblue3 "#3A5FCD"
+    :royalblue4 "#27408B"
+    :blue1 "#0000FF"
+    :blue2 "#0000EE"
+    :blue3 "#0000CD"
+    :blue4 "#00008B"
+    :dodgerblue1 "#1E90FF"
+    :dodgerblue2 "#1C86EE"
+    :dodgerblue3 "#1874CD"
+    :dodgerblue4 "#104E8B"
+    :steelblue1 "#63B8FF"
+    :steelblue2 "#5CACEE"
+    :steelblue3 "#4F94CD"
+    :steelblue4 "#36648B"
+    :deepskyblue1 "#00BFFF"
+    :deepskyblue2 "#00B2EE"
+    :deepskyblue3 "#009ACD"
+    :deepskyblue4 "#00688B"
+    :skyblue1 "#87CEFF"
+    :skyblue2 "#7EC0EE"
+    :skyblue3 "#6CA6CD"
+    :skyblue4 "#4A708B"
+    :lightskyblue1 "#B0E2FF"
+    :lightskyblue2 "#A4D3EE"
+    :lightskyblue3 "#8DB6CD"
+    :lightskyblue4 "#607B8B"
+    :slategray1 "#C6E2FF"
+    :slategray2 "#B9D3EE"
+    :slategray3 "#9FB6CD"
+    :slategray4 "#6C7B8B"
+    :lightsteelblue1 "#CAE1FF"
+    :lightsteelblue2 "#BCD2EE"
+    :lightsteelblue3 "#A2B5CD"
+    :lightsteelblue4 "#6E7B8B"
+    :lightblue1 "#BFEFFF"
+    :lightblue2 "#B2DFEE"
+    :lightblue3 "#9AC0CD"
+    :lightblue4 "#68838B"
+    :lightcyan1 "#E0FFFF"
+    :lightcyan2 "#D1EEEE"
+    :lightcyan3 "#B4CDCD"
+    :lightcyan4 "#7A8B8B"
+    :paleturquoise1 "#BBFFFF"
+    :paleturquoise2 "#AEEEEE"
+    :paleturquoise3 "#96CDCD"
+    :paleturquoise4 "#668B8B"
+    :cadetblue1 "#98F5FF"
+    :cadetblue2 "#8EE5EE"
+    :cadetblue3 "#7AC5CD"
+    :cadetblue4 "#53868B"
+    :turquoise1 "#00F5FF"
+    :turquoise2 "#00E5EE"
+    :turquoise3 "#00C5CD"
+    :turquoise4 "#00868B"
+    :cyan1 "#00FFFF"
+    :cyan2 "#00EEEE"
+    :cyan3 "#00CDCD"
+    :cyan4 "#008B8B"
+    :darkslategray1 "#97FFFF"
+    :darkslategray2 "#8DEEEE"
+    :darkslategray3 "#79CDCD"
+    :darkslategray4 "#528B8B"
+    :aquamarine1 "#7FFFD4"
+    :aquamarine2 "#76EEC6"
+    :aquamarine3 "#66CDAA"
+    :aquamarine4 "#458B74"
+    :darkseagreen1 "#C1FFC1"
+    :darkseagreen2 "#B4EEB4"
+    :darkseagreen3 "#9BCD9B"
+    :darkseagreen4 "#698B69"
+    :seagreen1 "#54FF9F"
+    :seagreen2 "#4EEE94"
+    :seagreen3 "#43CD80"
+    :seagreen4 "#2E8B57"
+    :palegreen1 "#9AFF9A"
+    :palegreen2 "#90EE90"
+    :palegreen3 "#7CCD7C"
+    :palegreen4 "#548B54"
+    :springgreen1 "#00FF7F"
+    :springgreen2 "#00EE76"
+    :springgreen3 "#00CD66"
+    :springgreen4 "#008B45"
+    :green1 "#00FF00"
+    :green2 "#00EE00"
+    :green3 "#00CD00"
+    :green4 "#008B00"
+    :chartreuse1 "#7FFF00"
+    :chartreuse2 "#76EE00"
+    :chartreuse3 "#66CD00"
+    :chartreuse4 "#458B00"
+    :olivedrab1 "#C0FF3E"
+    :olivedrab2 "#B3EE3A"
+    :olivedrab3 "#9ACD32"
+    :olivedrab4 "#698B22"
+    :darkolivegreen1 "#CAFF70"
+    :darkolivegreen2 "#BCEE68"
+    :darkolivegreen3 "#A2CD5A"
+    :darkolivegreen4 "#6E8B3D"
+    :khaki1 "#FFF68F"
+    :khaki2 "#EEE685"
+    :khaki3 "#CDC673"
+    :khaki4 "#8B864E"
+    :lightgoldenrod1 "#FFEC8B"
+    :lightgoldenrod2 "#EEDC82"
+    :lightgoldenrod3 "#CDBE70"
+    :lightgoldenrod4 "#8B814C"
+    :lightyellow1 "#FFFFE0"
+    :lightyellow2 "#EEEED1"
+    :lightyellow3 "#CDCDB4"
+    :lightyellow4 "#8B8B7A"
+    :yellow1 "#FFFF00"
+    :yellow2 "#EEEE00"
+    :yellow3 "#CDCD00"
+    :yellow4 "#8B8B00"
+    :gold1 "#FFD700"
+    :gold2 "#EEC900"
+    :gold3 "#CDAD00"
+    :gold4 "#8B7500"
+    :goldenrod1 "#FFC125"
+    :goldenrod2 "#EEB422"
+    :goldenrod3 "#CD9B1D"
+    :goldenrod4 "#8B6914"
+    :darkgoldenrod1 "#FFB90F"
+    :darkgoldenrod2 "#EEAD0E"
+    :darkgoldenrod3 "#CD950C"
+    :darkgoldenrod4 "#8B6508"
+    :rosybrown1 "#FFC1C1"
+    :rosybrown2 "#EEB4B4"
+    :rosybrown3 "#CD9B9B"
+    :rosybrown4 "#8B6969"
+    :indianred1 "#FF6A6A"
+    :indianred2 "#EE6363"
+    :indianred3 "#CD5555"
+    :indianred4 "#8B3A3A"
+    :sienna1 "#FF8247"
+    :sienna2 "#EE7942"
+    :sienna3 "#CD6839"
+    :sienna4 "#8B4726"
+    :burlywood1 "#FFD39B"
+    :burlywood2 "#EEC591"
+    :burlywood3 "#CDAA7D"
+    :burlywood4 "#8B7355"
+    :wheat1 "#FFE7BA"
+    :wheat2 "#EED8AE"
+    :wheat3 "#CDBA96"
+    :wheat4 "#8B7E66"
+    :tan1 "#FFA54F"
+    :tan2 "#EE9A49"
+    :tan3 "#CD853F"
+    :tan4 "#8B5A2B"
+    :chocolate1 "#FF7F24"
+    :chocolate2 "#EE7621"
+    :chocolate3 "#CD661D"
+    :chocolate4 "#8B4513"
+    :firebrick1 "#FF3030"
+    :firebrick2 "#EE2C2C"
+    :firebrick3 "#CD2626"
+    :firebrick4 "#8B1A1A"
+    :brown1 "#FF4040"
+    :brown2 "#EE3B3B"
+    :brown3 "#CD3333"
+    :brown4 "#8B2323"
+    :salmon1 "#FF8C69"
+    :salmon2 "#EE8262"
+    :salmon3 "#CD7054"
+    :salmon4 "#8B4C39"
+    :lightsalmon1 "#FFA07A"
+    :lightsalmon2 "#EE9572"
+    :lightsalmon3 "#CD8162"
+    :lightsalmon4 "#8B5742"
+    :orange1 "#FFA500"
+    :orange2 "#EE9A00"
+    :orange3 "#CD8500"
+    :orange4 "#8B5A00"
+    :darkorange1 "#FF7F00"
+    :darkorange2 "#EE7600"
+    :darkorange3 "#CD6600"
+    :darkorange4 "#8B4500"
+    :coral1 "#FF7256"
+    :coral2 "#EE6A50"
+    :coral3 "#CD5B45"
+    :coral4 "#8B3E2F"
+    :tomato1 "#FF6347"
+    :tomato2 "#EE5C42"
+    :tomato3 "#CD4F39"
+    :tomato4 "#8B3626"
+    :orangered1 "#FF4500"
+    :orangered2 "#EE4000"
+    :orangered3 "#CD3700"
+    :orangered4 "#8B2500"
+    :red1 "#FF0000"
+    :red2 "#EE0000"
+    :red3 "#CD0000"
+    :red4 "#8B0000"
+    :deeppink1 "#FF1493"
+    :deeppink2 "#EE1289"
+    :deeppink3 "#CD1076"
+    :deeppink4 "#8B0A50"
+    :hotpink1 "#FF6EB4"
+    :hotpink2 "#EE6AA7"
+    :hotpink3 "#CD6090"
+    :hotpink4 "#8B3A62"
+    :pink1 "#FFB5C5"
+    :pink2 "#EEA9B8"
+    :pink3 "#CD919E"
+    :pink4 "#8B636C"
+    :lightpink1 "#FFAEB9"
+    :lightpink2 "#EEA2AD"
+    :lightpink3 "#CD8C95"
+    :lightpink4 "#8B5F65"
+    :palevioletred1 "#FF82AB"
+    :palevioletred2 "#EE799F"
+    :palevioletred3 "#CD6889"
+    :palevioletred4 "#8B475D"
+    :maroon1 "#FF34B3"
+    :maroon2 "#EE30A7"
+    :maroon3 "#CD2990"
+    :maroon4 "#8B1C62"
+    :violetred1 "#FF3E96"
+    :violetred2 "#EE3A8C"
+    :violetred3 "#CD3278"
+    :violetred4 "#8B2252"
+    :magenta1 "#FF00FF"
+    :magenta2 "#EE00EE"
+    :magenta3 "#CD00CD"
+    :magenta4 "#8B008B"
+    :orchid1 "#FF83FA"
+    :orchid2 "#EE7AE9"
+    :orchid3 "#CD69C9"
+    :orchid4 "#8B4789"
+    :plum1 "#FFBBFF"
+    :plum2 "#EEAEEE"
+    :plum3 "#CD96CD"
+    :plum4 "#8B668B"
+    :mediumorchid1 "#E066FF"
+    :mediumorchid2 "#D15FEE"
+    :mediumorchid3 "#B452CD"
+    :mediumorchid4 "#7A378B"
+    :darkorchid1 "#BF3EFF"
+    :darkorchid2 "#B23AEE"
+    :darkorchid3 "#9A32CD"
+    :darkorchid4 "#68228B"
+    :purple1 "#9B30FF"
+    :purple2 "#912CEE"
+    :purple3 "#7D26CD"
+    :purple4 "#551A8B"
+    :mediumpurple1 "#AB82FF"
+    :mediumpurple2 "#9F79EE"
+    :mediumpurple3 "#8968CD"
+    :mediumpurple4 "#5D478B"
+    :thistle1 "#FFE1FF"
+    :thistle2 "#EED2EE"
+    :thistle3 "#CDB5CD"
+    :thistle4 "#8B7B8B"
+    :grey0 "#000000"
+    :grey1 "#030303"
+    :grey2 "#050505"
+    :grey3 "#080808"
+    :grey4 "#0A0A0A"
+    :grey5 "#0D0D0D"
+    :grey6 "#0F0F0F"
+    :grey7 "#121212"
+    :grey8 "#141414"
+    :grey9 "#171717"
+    :grey10 "#1A1A1A"
+    :grey11 "#1C1C1C"
+    :grey12 "#1F1F1F"
+    :grey13 "#212121"
+    :grey14 "#242424"
+    :grey15 "#262626"
+    :grey16 "#292929"
+    :grey17 "#2B2B2B"
+    :grey18 "#2E2E2E"
+    :grey19 "#303030"
+    :grey20 "#333333"
+    :grey21 "#363636"
+    :grey22 "#383838"
+    :grey23 "#3B3B3B"
+    :grey24 "#3D3D3D"
+    :grey25 "#404040"
+    :grey26 "#424242"
+    :grey27 "#454545"
+    :grey28 "#474747"
+    :grey29 "#4A4A4A"
+    :grey30 "#4D4D4D"
+    :grey31 "#4F4F4F"
+    :grey32 "#525252"
+    :grey33 "#545454"
+    :grey34 "#575757"
+    :grey35 "#595959"
+    :grey36 "#5C5C5C"
+    :grey37 "#5E5E5E"
+    :grey38 "#616161"
+    :grey39 "#636363"
+    :grey40 "#666666"
+    :grey41 "#696969"
+    :grey42 "#6B6B6B"
+    :grey43 "#6E6E6E"
+    :grey44 "#707070"
+    :grey45 "#737373"
+    :grey46 "#757575"
+    :grey47 "#787878"
+    :grey48 "#7A7A7A"
+    :grey49 "#7D7D7D"
+    :grey50 "#7F7F7F"
+    :grey51 "#828282"
+    :grey52 "#858585"
+    :grey53 "#878787"
+    :grey54 "#8A8A8A"
+    :grey55 "#8C8C8C"
+    :grey56 "#8F8F8F"
+    :grey57 "#919191"
+    :grey58 "#949494"
+    :grey59 "#969696"
+    :grey60 "#999999"
+    :grey61 "#9C9C9C"
+    :grey62 "#9E9E9E"
+    :grey63 "#A1A1A1"
+    :grey64 "#A3A3A3"
+    :grey65 "#A6A6A6"
+    :grey66 "#A8A8A8"
+    :grey67 "#ABABAB"
+    :grey68 "#ADADAD"
+    :grey69 "#B0B0B0"
+    :grey70 "#B3B3B3"
+    :grey71 "#B5B5B5"
+    :grey72 "#B8B8B8"
+    :grey73 "#BABABA"
+    :grey74 "#BDBDBD"
+    :grey75 "#BFBFBF"
+    :grey76 "#C2C2C2"
+    :grey77 "#C4C4C4"
+    :grey78 "#C7C7C7"
+    :grey79 "#C9C9C9"
+    :grey80 "#CCCCCC"
+    :grey81 "#CFCFCF"
+    :grey82 "#D1D1D1"
+    :grey83 "#D4D4D4"
+    :grey84 "#D6D6D6"
+    :grey85 "#D9D9D9"
+    :grey86 "#DBDBDB"
+    :grey87 "#DEDEDE"
+    :grey88 "#E0E0E0"
+    :grey89 "#E3E3E3"
+    :grey90 "#E5E5E5"
+    :grey91 "#E8E8E8"
+    :grey92 "#EBEBEB"
+    :grey93 "#EDEDED"
+    :grey94 "#F0F0F0"
+    :grey95 "#F2F2F2"
+    :grey96 "#F5F5F5"
+    :grey97 "#F7F7F7"
+    :grey98 "#FAFAFA"
+    :grey99 "#FCFCFC"
+    :grey100 "#FFFFFF"))
+
+(println swatch)


Added more convenience functions

Added more convenience functions

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/hudren/ebook-novel.git/'


add tests for normalizing ref names

add tests for normalizing ref names

error: pathspec 'test/cljam/util/t_chromosome.clj' did not match any file(s) known to git

--- test/cljam/util/t_chromosome.clj
+++ test/cljam/util/t_chromosome.clj
@@ -0,0 +1,50 @@
+(ns cljam.util.t-chromosome
+  (:use midje.sweet)
+  (:require [cljam.util.chromosome :as chr]))
+
+(fact "about normalize-chromosome-key"
+  (chr/normalize-chromosome-key "chr1") => "chr1"
+  (chr/normalize-chromosome-key "chr01") => "chr1"
+  (chr/normalize-chromosome-key "chr22") => "chr22"
+  (chr/normalize-chromosome-key "chrX") => "chrX"
+  (chr/normalize-chromosome-key "chrY") => "chrY"
+  (chr/normalize-chromosome-key "chrM") => "chrM"
+  (chr/normalize-chromosome-key "chrMT") => "chrMT"
+
+  (chr/normalize-chromosome-key "Chr1") => "chr1"
+  (chr/normalize-chromosome-key "Chr01") => "chr1"
+  (chr/normalize-chromosome-key "Chr22") => "chr22"
+  (chr/normalize-chromosome-key "ChrX") => "chrX"
+  (chr/normalize-chromosome-key "ChrY") => "chrY"
+  (chr/normalize-chromosome-key "ChrM") => "chrM"
+  (chr/normalize-chromosome-key "ChrMT") => "chrMT"
+
+  (chr/normalize-chromosome-key "CHR1") => "chr1"
+  (chr/normalize-chromosome-key "CHR01") => "chr1"
+  (chr/normalize-chromosome-key "CHR22") => "chr22"
+  (chr/normalize-chromosome-key "CHRX") => "chrX"
+  (chr/normalize-chromosome-key "CHRY") => "chrY"
+  (chr/normalize-chromosome-key "CHRM") => "chrM"
+  (chr/normalize-chromosome-key "CHRMT") => "chrMT"
+
+  (chr/normalize-chromosome-key "1") => "chr1"
+  (chr/normalize-chromosome-key "01") => "chr1"
+  (chr/normalize-chromosome-key "22") => "chr22"
+  (chr/normalize-chromosome-key "X") => "chrX"
+  (chr/normalize-chromosome-key "Y") => "chrY"
+  (chr/normalize-chromosome-key "M") => "chrM"
+  (chr/normalize-chromosome-key "MT") => "chrMT"
+
+  (chr/normalize-chromosome-key "x") => "chrX"
+  (chr/normalize-chromosome-key "y") => "chrY"
+  (chr/normalize-chromosome-key "m") => "chrM"
+  (chr/normalize-chromosome-key "mt") => "chrMT"
+
+  (chr/normalize-chromosome-key "_1") => "_1"
+  (chr/normalize-chromosome-key "GL000226_1") => "GL000226_1"
+  (chr/normalize-chromosome-key "GL000207.1") => "GL000207_1"
+  (chr/normalize-chromosome-key "NC_007605") => "NC_007605"
+  (chr/normalize-chromosome-key "hs37d5") => "hs37d5"
+
+  ;; TODO: Add more SN name
+  )


Re-hash password to bcrypt upon successful login.

--- src/clojars/web/login.clj
+++ src/clojars/web/login.clj
@@ -26,5 +26,9 @@
 (defn login [{username "user" password "password"}]
   (if-let [user (auth-user username password)]
     (let [response (redirect "/")]
+      ;; presence of salt indicates sha1'd password, so re-hash to bcrypt
+      (when (not (empty? (:salt user "")))
+        (update-user (:user user) (:email user) (:user user)
+                     password (:ssh_key user)))
       (assoc-in response [:session :account] (:user user)))
     (login-form "Incorrect username or password.")))


On login failure, mention that the password hashes were wiped. Fixes #47.

--- src/clojars/web/login.clj
+++ src/clojars/web/login.clj
@@ -13,7 +13,12 @@
     (link-to "/register" "Sign up!")]

    (when login_failed
-     [:div {:class :error} "Incorrect username or password."])
+     [:div [:p {:class :error} "Incorrect username and/or password."]
+      [:p "If you have not logged in since "
+       [:a {:href "https://groups.google.com/group/clojure/browse_thread/thread/5e0d48d2b82df39b"}
+        "the insecure password hashes were wiped"]
+       ", please use the " [:a {:href "/forgot-password"} "forgot password"]
+       " functionality to reset your password."]])
    (form-to [:post "/login"]
      (label :username "Username or email:")
      (text-field :username username)


Erabiltzen ez direnak kendu.

Erabiltzen ez direnak kendu.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/lnmnd/magnet.zer.git/'


Indentation fix

Indentation fix

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/election-notification-works.git/'


Add pg advirsory locks support namespace.

Just for explicit objects locking in short
living transactions for avoid possible race
conditions in concurrent updates.

error: pathspec 'src/uxbox/services/locks.clj' did not match any file(s) known to git

--- src/uxbox/services/locks.clj
+++ src/uxbox/services/locks.clj
@@ -0,0 +1,21 @@
+;; This Source Code Form is subject to the terms of the Mozilla Public
+;; License, v. 2.0. If a copy of the MPL was not distributed with this
+;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
+;;
+;; Copyright (c) 2016 Andrey Antukh <niwi@niwi.nz>
+
+(ns uxbox.services.locks
+  "Advirsory locks for proper handling concurrent modifications
+  on particular objects in the database."
+  (:require [suricatta.core :as sc])
+  (:import clojure.lang.Murmur3))
+
+(defn- uuid->long
+  [v]
+  (Murmur3/hashUnencodedChars (str v)))
+
+(defn acquire!
+  [conn v]
+  (let [id (uuid->long v)]
+    (sc/execute conn ["select pg_advisory_xact_lock(?);" id])
+    nil))


Use projectIds when no experimentIds

Use projectIds when no experimentIds

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/physion/ovation-v3-migration.git/'


comment out Boxed,Ejected mutable type variants and helpers

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/michaelsbradleyjr/transwarp.git/'


initial impl

initial impl

error: pathspec 'src/es/jobs.clj' did not match any file(s) known to git

--- src/es/jobs.clj
+++ src/es/jobs.clj
@@ -0,0 +1,29 @@
+(comment
+   Celestial, Copyright 2012 Ronen Narkis, narkisr.com
+   Licensed under the Apache License,
+   Version 2.0  (the "License") you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.)
+
+(ns es.jobs
+  "Jobs ES persistency"
+  (:require
+    [celestial.common :refer (envs import-logging)]
+    ))
+
+(import-logging)
+
+(def ^:const job-status
+  {:job-status
+    {:properties {
+      :status {:type "string" }
+      :start {:type "long"}
+      :end {:type "long"}
+     }
+    }
+   }
+  )


fixing indentation

fixing indentation


Upgrade to clojure 1.4

Upgrade to clojure 1.4

--- project.clj
+++ project.clj
@@ -2,7 +2,7 @@
   :description "RuuviTracker server"
   :dependencies
   [
-   [org.clojure/clojure "1.3.0"]
+   [org.clojure/clojure "1.4.0"]
    [compojure "1.1.0"]
    [ring-json-params "0.1.3"]
    [clj-json "0.5.0"]


update instaparse dep to 1.3.3

update instaparse dep to 1.3.3

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/jtbeckha/alda.git/'


Version 0.16.3-SNAPSHOT

Version 0.16.3-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject clojars-web "0.16.2"
+(defproject clojars-web "0.16.3-SNAPSHOT"
   :dependencies [[org.clojure/clojure "1.6.0"]
                  [org.clojure/tools.cli "0.2.1"]
                  [org.apache.maven/maven-model "3.0.4"


bump version to 2.8.0

bump version to 2.8.0

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/B2W-Digital/pdg-core.git/'


bump version number

bump version number

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Yleisradio/rabid.git/'


Remove prismatic/schema

Remove prismatic/schema

We never used it in the http-api components anyway, and if we were to start now we should be using clojure.spec anyway.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/turbovote-http-api.git/'


update restql core version to 3.3.0 (#154)

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/B2W-BIT/restQL-server.git/'


Version 178-SNAPSHOT

Version 178-SNAPSHOT

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/tobias/clojars-web.git/'


upgrade deps

upgrade deps

--- project.clj
+++ project.clj
@@ -38,7 +38,7 @@
                                com.sun.jmx/jmxri]]
                  [medley "0.5.5"]                                     ; lightweight lib of useful functions
                  [org.liquibase/liquibase-core "3.3.2"]               ; migration management (Java lib)
-                 [org.slf4j/slf4j-log4j12 "1.7.10"]
+                 [org.slf4j/slf4j-log4j12 "1.7.12"]
                  [org.yaml/snakeyaml "1.15"]                          ; YAML parser (required by liquibase)
                  [postgresql "9.3-1102.jdbc41"]                       ; Postgres driver
                  [ring/ring-jetty-adapter "1.3.2"]                    ; Ring adapter using Jetty webserver (used to run a Ring server for unit tests)
@@ -56,7 +56,7 @@
   :eastwood {:exclude-namespaces [:test-paths]
              :add-linters [:unused-private-vars]
              :exclude-linters [:constant-test]}                       ; korma macros generate some formats with if statements that are always logically true or false
-  :profiles {:dev {:dependencies [[org.clojure/tools.nrepl "0.2.8"]   ; REPL <3
+  :profiles {:dev {:dependencies [[org.clojure/tools.nrepl "0.2.10"]  ; REPL <3
                                   [expectations "2.1.0"]              ; unit tests
                                   [marginalia "0.8.0"]                ; for documentation
                                   [ring/ring-mock "0.2.0"]]


fix liquibase logging so it ties in with our log4j setup instead of printing to stderr.

--- project.clj
+++ project.clj
@@ -22,6 +22,8 @@
                  [org.clojure/java.jdbc "0.3.6"]            ; basic jdbc access from clojure
                  [org.liquibase/liquibase-core "3.3.2"]     ; migration management (Java lib)
                  [org.yaml/snakeyaml "1.14"]                ; YAML parser (required by liquibase)
+                 [org.slf4j/slf4j-log4j12 "1.7.1"]
+                 [com.mattbertolini/liquibase-slf4j "1.2.1"]
                  [log4j/log4j "1.2.17"
                   :exclusions [javax.mail/mail
                                javax.jms/jms


Version 71-SNAPSHOT

Version 71-SNAPSHOT


Adding a basic branchpoint finder.

Adding a basic branchpoint finder.

Requires future modifications to handle analyzing multiple images and
accumulating results into the same table.

error: pathspec 'src/plugins/Scripts/Funimage/Morphology/Branch_Point_Counter.clj' did not match any file(s) known to git

--- src/plugins/Scripts/Funimage/Morphology/Branch_Point_Counter.clj
+++ src/plugins/Scripts/Funimage/Morphology/Branch_Point_Counter.clj
@@ -0,0 +1,38 @@
+; @ImagePlus(label="Target image",description="Input image") imp
+; @OUTPUT ImagePlus imp
+
+
+(def orig-name (.getTitle imp))
+(def directory (ij.IJ/getDirectory "image"))
+
+(ij.IJ/run imp "Subtract Background..." "rolling=25")
+(def channels (ij.plugin.ChannelSplitter/split imp))
+
+(def mask (second channels))
+(.setTitle mask (str "C2-" orig-name ))
+
+(ij.IJ/run mask "Auto Threshold" "method=IsoData white")
+
+(ij.IJ/run mask "Skeletonize (2D/3D)" "")
+
+(ij.IJ/run mask "Analyze Particles..." "size=1000-Infinity pixel show=Masks display clear add")
+
+(def new-mask (ij.WindowManager/getImage (str "Mask of " (str "C2-" orig-name ))))
+
+(ij.IJ/run new-mask "Invert LUT" "")
+
+;(.setTitle new-mask orig-name)
+
+(ij.IJ/run new-mask "Skeleton Intersections" "pseudo results")
+
+(let [ic (ij.plugin.ImageCalculator.)
+	  intersections (ij.WindowManager/getImage "Skeleton intersections")]
+	(.run ic "add" imp intersections))
+
+(set! (.changes new-mask) false)
+(.close new-mask)
+
+;(println "saving as" (str (string/replace (string/replace orig-name ".tif" "") " " "_") "_labeled_branches.tif"))
+;(ij.IJ/saveAsTiff imp (str directory "/" (string/replace orig-name ".tif" "") "_labeled_branches.tif"))
+
+;(ij.IJ/run "Close All")


cleanup

cleanup

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/clojure-ml/cml.git/'


temp file updated.

temp file updated.

error: pathspec 'src/website/temp.clj' did not match any file(s) known to git

--- src/website/temp.clj
+++ src/website/temp.clj
@@ -0,0 +1,2 @@
+(ns website.temp)
+


Adding empty test for delete messages

Adding empty test for delete messages

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/iot-paas-home/telegram-iot-gateway.git/'


Module file_utils.clj with functions to work with directories and files

error: pathspec 'src/emender_jenkins/file_utils.clj' did not match any file(s) known to git

--- src/emender_jenkins/file_utils.clj
+++ src/emender_jenkins/file_utils.clj
@@ -0,0 +1,96 @@
+(ns emender-jenkins.file-utils)
+
+(require '[hozumi.rm-rf    :as rm-rf])
+
+(def temporary-name-prefix
+    "emender-jenkins-")
+
+(defn print-slurp-exception
+    "Print warning message to the standard output."
+    ([filename]
+        (println "Warning: cannot read content of the following file: " filename))
+    ([directory filename]
+        (println "Warning: cannot read content of the following file: " directory "/" filename)))
+
+(defn slurp-
+    "Alternative (slurp) implementation that does not throw an exception, but returns nil instead."
+    ([filename]
+        (try
+            (slurp filename)
+            (catch Exception e (print-slurp-exception filename))))
+    ([directory filename]
+        (try
+            (slurp (str directory "/" filename))
+            (catch Exception e (print-slurp-exception directory filename)))))
+
+(defn silent-slurp
+    "Alternative (slurp) implementation that does not throw an exception, but returns nil instead."
+    ([filename]
+        (try
+            (slurp filename)
+            (catch Exception e)))
+    ([directory filename]
+        (try
+            (slurp (str directory "/" filename))
+            (catch Exception e))))
+
+(defn new-file
+    "Just a shortcut for (new java.io.File filename)."
+    ( [filename]
+    (new java.io.File filename))
+    ( [path filename]
+    (new java.io.File path filename)))
+
+(defn make-temporary-log-file-name
+    []
+    (let [basedir-name (new java.io.File (System/getProperty "java.io.tmpdir"))
+          base-name    temporary-name-prefix
+          temp-file    (java.io.File/createTempFile base-name ".log" basedir-name)]
+          (.getAbsolutePath temp-file)))
+
+(defn make-temporary-directory
+    "Make temporary directory that would reside in /tmp (at least on Linux)."
+    []
+    (let [basedir-name (System/getProperty "java.io.tmpdir")
+          base-name    (str temporary-name-prefix (System/currentTimeMillis))
+          temp-dir     (new java.io.File basedir-name base-name)]
+        (.mkdir temp-dir)
+        temp-dir))
+
+(defmulti remove-temporary-directory
+    "Remove (delete) temporary directory that resides in /tmp (at least on Linux)."
+    class)
+
+(defmethod remove-temporary-directory java.io.File
+    [directory-name]
+    (let [abs-path (.getAbsolutePath directory-name)]
+        ; make sure we are not going to remove wrong directory!
+        (if (.startsWith abs-path "/tmp")
+            (rm-rf/rm-r directory-name))))
+
+(defmethod remove-temporary-directory java.lang.String
+    [directory-name]
+    (remove-temporary-directory (new java.io.File directory-name)))
+
+(defn remove-directory
+    [directory]
+    (rm-rf/rm-r directory))
+
+(defn move-file
+    "Move or rename one file. On the same filesystem the rename should be atomic."
+    [filename1 filename2]
+    (let [file1 (new java.io.File filename1)
+          file2 (new java.io.File filename2)]
+          (.renameTo file1 file2)))
+
+(defn mv-file
+    "Move or rename one file. On the same filesystem the rename should be atomic."
+    [filename1 filename2]
+    (let [file1 (new java.io.File filename1)
+          file2 (new java.io.File filename2)]
+          (.renameTo file1 file2)))
+
+(defn >abs-path
+    [file-or-dir]
+    (.getAbsolutePath (new java.io.File file-or-dir)))
+


Something in swank eats stracktraces

Something in swank eats stracktraces

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/michaelsbradleyjr/shen.clj.git/'


UCUM expansion

UCUM expansion

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/fhirbase/fhirterm.git/'


[WM] remove vestigial requires from handlers ns

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/notification-works.git/'


:medium and :notification-type are implicit :identifiers

fatal: unable to access 'https://github.com/democracyworks/election-notification-works.git/': The requested URL returned error: 403


Rough draft of command capture and replay code

error: pathspec 'src/clj/genartlib/capture.clj' did not match any file(s) known to git

--- src/clj/genartlib/capture.clj
+++ src/clj/genartlib/capture.clj
@@ -0,0 +1,172 @@
+(ns genartlib.capture
+  (:require [clojure.pprint :refer [pprint]]
+            [quil.core :as q]))
+
+(defmacro with-command-capture
+  [output-file & body]
+  `(let [full-width# (w 1.0)
+         full-height# (h 1.0)
+         commands# (atom [])
+         current-fill# (atom nil)
+         current-stroke# (atom nil)
+         current-stroke-weight# (atom nil)
+         current-shape# (atom nil)
+
+         og-fill# q/fill
+         og-no-fill# q/no-fill
+         og-stroke# q/stroke
+         og-no-stroke# q/no-stroke
+         og-stroke-weight# q/stroke-weight
+         og-begin-shape# q/begin-shape
+         og-vertex# q/vertex
+         og-curve-vertex# q/curve-vertex
+         og-end-shape# q/end-shape
+         og-line# q/line
+         og-ellipse# q/ellipse
+         og-background# q/background]
+
+     (with-redefs [q/fill (fn [& color#]
+                            (reset! current-fill# color#)
+                            (apply og-fill# color#))
+                   q/no-fill (fn []
+                               (reset! current-fill# nil)
+                               (og-no-fill#))
+                   q/stroke (fn [& color#]
+                              (reset! current-stroke# color#)
+                              (apply og-stroke# color#))
+                   q/no-stroke (fn []
+                                 (reset! current-stroke# nil)
+                                 (og-no-stroke#))
+                   q/stroke-weight (fn [s#]
+                                     (reset! current-stroke-weight# (/ s# full-width#))
+                                     (og-stroke-weight# s#))
+                   q/begin-shape (fn []
+                                   (reset! current-shape# [])
+                                   (og-begin-shape#))
+                   q/vertex (fn [x# y#]
+                              (swap! current-shape# conj {:type :vertex
+                                                          :x (/ x# full-width#)
+                                                          :y (/ y# full-height#)})
+                              (og-vertex# x# y#))
+                   q/curve-vertex (fn [x# y#]
+                                    (swap! current-shape# conj {:type :curve-vertex
+                                                                :x (/ x# full-width#)
+                                                                :y (/ y# full-height#)})
+                                    (og-curve-vertex# x# y#))
+                   q/end-shape (fn [& [close#]]
+                                 (swap!
+                                   commands#
+                                   conj
+                                   {:type :shape
+                                    :close? (boolean close#)
+                                    :points @current-shape#
+                                    :fill @current-fill#
+                                    :stroke @current-stroke#
+                                    :stroke-weight @current-stroke-weight#})
+                                 (if close#
+                                   (og-end-shape# close#)
+                                   (og-end-shape#)))
+                   q/line (fn [start-x# start-y# end-x# end-y#]
+                            (swap!
+                              commands#
+                              conj
+                              {:type :line
+                               :start-x (/ start-x# full-width#)
+                               :start-y (/ start-y# full-height#)
+                               :end-x (/ end-x# full-width#)
+                               :end-y (/ end-y# full-height#)
+                               :stroke @current-stroke#
+                               :stroke-weight @current-stroke-weight#})
+                            (og-line# start-x# start-y# end-x# end-y#))
+                   q/ellipse (fn [center-x# center-y# ellipse-width# ellipse-height#]
+                               (swap!
+                                 commands#
+                                 conj
+                                 {:type :ellipse
+                                  :center-x (/ center-x# full-width#)
+                                  :center-y (/ center-y# full-height#)
+                                  :ellipse-width (/ ellipse-width# full-width#)
+                                  :ellipse-height (/ ellipse-height# full-height#)
+                                  :fill @current-fill#
+                                  :stroke @current-stroke#
+                                  :stroke-weight @current-stroke-weight#})
+                               (og-ellipse# center-x# center-y# ellipse-width# ellipse-height#))
+                   q/background (fn [& color#]
+                                  (reset! commands# [{:type :background
+                                                      :color color#}])
+                                  (apply og-background# color#))]
+       ~@body)
+     (println "Going to save commands to" ~output-file)
+     (pprint @commands# (clojure.java.io/writer ~output-file))))
+
+(defn command-replay
+  ([cmds] (command-replay cmds (w) (h) 0 0))
+  ([cmds full-width full-height] (command-replay cmds full-width full-height 0 0))
+  ([cmds full-width full-height x-offset y-offset]
+   (let [wlen (fn [x]
+                (* full-width x))
+         hlen (fn [y]
+                (* full-height y))
+         wpos (fn [x]
+                (+ x-offset (* full-width x)))
+         hpos (fn [y]
+                (+ y-offset (* full-height y)))]
+     (doseq [cmd cmds]
+       (try
+         (case (:type cmd)
+           :background
+           (apply q/background (:color cmd))
+
+           :line
+           (when (:stroke cmd)
+             (apply q/stroke (:stroke cmd))
+             (q/stroke-weight (wlen (:stroke-weight cmd)))
+             (q/line (wpos (:start-x cmd)) (hpos (:start-y cmd))
+                     (wpos (:end-x cmd)) (hpos (:end-y cmd))))
+
+           :ellipse
+           (do
+             (if (:stroke cmd)
+               (do
+                 (apply q/stroke (:stroke cmd))
+                 (q/stroke-weight (wlen (:stroke-weight cmd))))
+               (q/no-stroke))
+             (if (:fill cmd)
+               (apply q/fill (:fill cmd))
+               (q/no-fill))
+             (q/ellipse (wpos (:center-x cmd)) (hpos (:center-y cmd))
+                        (wlen (:ellipse-width cmd)) (hlen (:ellipse-width cmd))))
+
+           :shape
+           (do
+             (if (:stroke cmd)
+               (do
+                 (apply q/stroke (:stroke cmd))
+                 (q/stroke-weight (wlen (:stroke-weight cmd))))
+               (q/no-stroke))
+             (if (:fill cmd)
+               (apply q/fill (:fill cmd))
+               (q/no-fill))
+             (q/begin-shape)
+             (doseq [p (:points cmd)]
+               (case (:type p)
+                 :vertex
+                 (q/vertex (wpos (:x p)) (hpos (:y p)))
+
+                 :curve-vertex
+                 (q/curve-vertex (wpos (:x p)) (hpos (:y p)))))
+
+             (if (:close? cmd)
+               (q/end-shape :close)
+               (q/end-shape)))
+
+           (println "Got bad command type:" (:type cmd)))
+         (catch Exception exc
+           (println "Error executing cmd:" exc)
+           (println exc)))))))
+
+(defn command-replay-file
+  ([cmd-filename] (command-replay-file cmd-filename (w) (h) 0 0))
+  ([cmd-filename full-width full-height] (command-replay-file cmd-filename full-width full-height 0 0))
+  ([cmd-filename full-width full-height x-offset y-offset]
+   (-> cmd-filename slurp read-string (command-replay full-width full-height x-offset y-offset))))


Upgrade to korma 0.3.0-beta15.

Upgrade to korma 0.3.0-beta15.

fatal: unable to access 'https://github.com/RuuviTracker/ruuvitracker_server.git/': The requested URL returned error: 403


Version 1.10.3

Version 1.10.3

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/starcity-properties/odin.git/'


Version 170-SNAPSHOT

Version 170-SNAPSHOT


kehaar 0.8.1

kehaar 0.8.1

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/user-http-api.git/'


remove more vestiges of datomic

remove more vestiges of datomic

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/mail-works.git/'


Revert to compojure-api .16.2

Revert to compojure-api .16.2

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/physion/ovation-webapi.git/'


Adding logging

Adding logging

fatal: unable to access 'https://github.com/physion/ovation-webapi.git/': The requested URL returned error: 403


Add lein-exec to my clojure profile

Add lein-exec to my clojure profile

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/jamesleonis/dotfiles.git/'


Add Eastwood linter

Add Eastwood linter


Update dependencies

Update dependencies

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/form-works.git/'


Update dependencies

Update dependencies

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/electorate-works.git/'


Version 124

Version 124

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/tobias/clojars-web.git/'


Version 1.10.0

Version 1.10.0


Ugrade datomic to 0.9.5394

Ugrade datomic to 0.9.5394


Bump version to 0.5.2

Bump version to 0.5.2

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/aaronlahey/coconut.git/'


Version 178

Version 178


Version 86

Version 86


bump version to 2.8.2

bump version to 2.8.2

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/B2W-BIT/restQL-server.git/'


create a version of put! that will keep track of message uuid

error: pathspec 'frontend/async.cljs' did not match any file(s) known to git

--- frontend/async.cljs
+++ frontend/async.cljs
@@ -0,0 +1,9 @@
+(ns frontend.async
+  (:require [cljs.core.async :as async]))
+
+(def ^:dynamic *uuid* nil)
+
+(defn put! [port val & args]
+  (if (and (satisfies? IMeta val) *uuid*)
+    (apply async/put! port (vary-meta val assoc :uuid *uuid*) args)
+    (apply async/put! port val args)))


[WM] use mapv instead of (vec (map ...)) in test


Formatting

Formatting

--- test/yada/put_resource_test.clj
+++ test/yada/put_resource_test.clj
@@ -10,9 +10,7 @@
    [yada.yada :refer [yada]]))

 (defn add-headers [request m]
-  (merge-with merge
-              request
-              {:headers m}))
+  (merge-with merge request {:headers m}))

 (deftest put-test
   (testing "string"


fix apostrophe on its

fix apostrophe on its

--- cljs-server/cljsinfo_server/pages/cheatsheet.cljs
+++ cljs-server/cljsinfo_server/pages/cheatsheet.cljs
@@ -600,12 +600,12 @@
   [:div#tooltip-vector-as-fn.tooltip-53dde {:style "display:none"}
     [:i.fa.fa-thumb-tack.pin-0ad63]
     [:p.info-2e4f9
-      "A Vector can be used as a function to access it's elements."]]
+      "A Vector can be used as a function to access its elements."]]

   [:div#tooltip-set-as-fn.tooltip-53dde {:style "display:none"}
     [:i.fa.fa-thumb-tack.pin-0ad63]
     [:p.info-2e4f9
-      "A Set can be used as a function to access it's elements."]]
+      "A Set can be used as a function to access its elements."]]

   [:div#tooltip-maps.tooltip-53dde {:style "display:none"}
     [:i.fa.fa-thumb-tack.pin-0ad63]


support accessing :test on var meta

support accessing :test on var meta

--- src/clj/cljs/core.clj
+++ src/clj/cljs/core.clj
@@ -1672,11 +1672,14 @@
   (core/let [{sym-ns :ns sym-name :name :as info} (ana/resolve-var &env sym)]
     `(cljs.core/Var. ~sym
        (symbol ~(name sym-ns) ~(name sym-name))
-       {:ns (symbol ~(name sym-ns))
-        :name (symbol ~(name sym-name))
-        :file ~(:file info)
-        :line ~(:line info)
-        :column ~(:column info)})))
+       (merge
+         {:ns (symbol ~(name sym-ns))
+          :name (symbol ~(name sym-name))
+          :file ~(:file info)
+          :line ~(:line info)
+          :column ~(:column info)}
+         ~(when (:test info)
+            `{:test (.-cljs$lang$test ~sym)})))))

 (defmacro ns-interns
   "Returns a map of the intern mappings for the namespace."


parens

parens

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/election-notification-works.git/'


Add namespace for data transformation utils.

error: pathspec 'frontend/uxbox/util/data.cljs' did not match any file(s) known to git

--- frontend/uxbox/util/data.cljs
+++ frontend/uxbox/util/data.cljs
@@ -0,0 +1,13 @@
+(ns uxbox.util.data
+  "A collection of data transformation utils.")
+
+(defn index-by
+  "Return a indexed map of the collection
+  keyed by the result of executing the getter
+  over each element of the collection."
+  [coll getter]
+  (let [data (transient {})]
+    (run! #(assoc! data (getter %) %) coll)
+    (persistent! data)))
+
+(def ^:static index-by-id #(index-by % :id))


remove old comment

remove old comment


are similar

are similar

error: pathspec 'src/codingpuzzle/are_similar.clj' did not match any file(s) known to git

--- src/codingpuzzle/are_similar.clj
+++ src/codingpuzzle/are_similar.clj
@@ -0,0 +1,12 @@
+(ns codingpuzzle.are-similar)
+
+; https://app.codesignal.com/arcade/intro/level-4/xYXfzQmnhBvEKJwXP
+(defn similar? [a b]
+  (if (not= (count a) (count b))
+    false
+    (let [c (remove nil? (map (fn [x y]
+                                (if (= x y) nil [x y]))
+                              a b))]
+      (if (> (count c) 2)
+        false
+        (= (set (first c)) (set (second c)))))))


Bump ancient deps (#35)

Bump ancient deps (#35)

* upgrade aws-maven 1.4.0 -> 1.4.1

* upgrade ring 1.6.3 -> 1.7.0

* upgrade ring-cors 0.1.11 -> 0.1.12

* upgrade compojure 1.6.0 -> 1.6.1

* upgrade tools.trace 0.7.9 -> 0.7.10

* upgrade flyway-core 4.2.0 -> 5.1.4

* upgrade java.jdbc 0.7.3 -> 0.7.8

* upgrade postgresql 42.2.1 -> 42.2.5

* upgrade new-reliquary 1.0.0 -> 1.1.0

* upgrade compojure-api 1.1.11 -> 1.1.12

* upgrade rabid 2.3.0 -> 2.3.1

* upgrade carmine 2.16.0 -> 2.19.0

* upgrade tools.logging 0.4.0 -> 0.4.1

* upgrade logstash-logback-encode 4.11 -> 5.2

* upgrade ring-mock 0.3.1 -> 0.3.2

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Yleisradio/yle-api-template.git/'


fixing indentation.

fixing indentation.

--- src/metabase/driver/generic_sql/sync.clj
+++ src/metabase/driver/generic_sql/sync.clj
@@ -48,10 +48,10 @@
         (pmap (fn [table-name]
                 (binding [*entity-overrides* {:transforms [#(assoc % :db (delay database))]}] ; add a korma transform to Table that will assoc :db on results.
                   (let [table (or (sel :one Table :db_id id :name table-name)                 ; Table's post-select only sets :db if it's not already set.
-                                (ins Table                                                  ; This way, we can reuse a single `database` instead of creating
-                                  :db_id id                                              ; a few dozen duplicate instances of it.
-                                  :name table-name                                       ; We can re-use one korma connection pool instead of
-                                  :active true))]                                        ; creating dozens of them, which was causing issues with too
+                                (ins Table                                                    ; This way, we can reuse a single `database` instead of creating
+                                  :db_id id                                                   ; a few dozen duplicate instances of it.
+                                  :name table-name                                            ; We can re-use one korma connection pool instead of
+                                  :active true))]                                             ; creating dozens of them, which was causing issues with too
                     (update-table-row-count table)                                            ; many open connections.
                     (sync-fields table)
                     (log/debug "Synced" table-name)))))


add missing `declare`

add missing `declare`

--- src/metabase/driver/postgres.clj
+++ src/metabase/driver/postgres.clj
@@ -6,6 +6,9 @@
                              [field :refer [Field]]
                              [table :refer [Table]])
             [metabase.util :refer [assoc*]]))
+
+(declare build-query
+         generate-sql)

 (defn annotate-column [table column]
   (let [{:keys [name base_type]} column


Remove buit-in example

Remove buit-in example

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/nvbn/rerenderer.git/'


Unused file removed.

Unused file removed.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/screen6/cascading.redis.git/'


Added searcher unit tests for clojure

Added searcher unit tests for clojure

fatal: unable to access 'https://github.com/clarkcb/xsearch.git/': The requested URL returned error: 403


Re: Clojure/lucene-kuromojiでテキストマイニング入門　～形態素解析からワードカウントまで～

error: pathspec 'lucene-clojure-word-count/lucene-clojure-word-count.clj' did not match any file(s) known to git

--- lucene-clojure-word-count/lucene-clojure-word-count.clj
+++ lucene-clojure-word-count/lucene-clojure-word-count.clj
@@ -0,0 +1,112 @@
+(set! *warn-on-reflection* true)
+
+(require '[leiningen.exec :as exec])
+
+(exec/deps '[[clj-soup/clojure-soup "0.1.1"]
+             [org.apache.lucene/lucene-kuromoji "3.6.2"]
+             [incanter "1.5.4"]])
+
+(ns lucene.clojure.word.count
+    (import (java.io StringReader)
+            (org.apache.lucene.analysis Analyzer TokenStream)
+            (org.apache.lucene.analysis.ja JapaneseAnalyzer)
+            (org.apache.lucene.analysis.ja.tokenattributes BaseFormAttribute InflectionAttribute PartOfSpeechAttribute ReadingAttribute)
+            (org.apache.lucene.analysis.tokenattributes CharTermAttribute)
+            (org.apache.lucene.util Version))
+    (:require [jsoup.soup :as js]
+              [incanter.core :as c]
+              [incanter.stats :as s]
+              [incanter.charts :as ch]))
+
+;; Luceneのバージョン
+(def ^Version lucene-version (Version/LUCENE_CURRENT))
+
+;; 与えられた文字列を、形態素解析し単語および属性のマップとして
+;; ベクタに含めて返却する
+(defn morphological-analysis [^String sentence]
+  (let [^Analyzer analyzer (JapaneseAnalyzer. lucene-version)]
+    (with-open [^TokenStream token-stream (. analyzer tokenStream
+                                             ""
+                                             (StringReader. sentence))]
+
+      (let [^CharTermAttribute char-term (. token-stream addAttribute CharTermAttribute)
+            ^BaseFormAttribute base-form (. token-stream addAttribute BaseFormAttribute)
+            ^InflectionAttribute inflection (. token-stream addAttribute InflectionAttribute)
+            ^PartOfSpeechAttribute part-of-speech (. token-stream addAttribute PartOfSpeechAttribute)
+            ^ReadingAttribute reading (. token-stream addAttribute ReadingAttribute)]
+
+        (letfn [(create-attributes []
+                  {:token (. char-term toString)
+                   :reading (. reading getReading)
+                   :part-of-speech (. part-of-speech getPartOfSpeech)
+                   :base (. base-form getBaseForm)
+                   :inflection-type (. inflection getInflectionType)
+                   :inflection-form (. inflection getInflectionForm)})]
+          (. token-stream reset)
+
+          (try
+            (loop [tokenized-seq []]
+              (if (. token-stream incrementToken)
+                (recur (conj tokenized-seq (create-attributes)))
+                tokenized-seq))
+            (finally (. token-stream end))))))))
+
+;; morphological-analysis関数で得られたベクタの中から
+;; 名詞のみに絞り込む
+(defn select-nominal [tokenized-seq]
+  (filter #(re-find #"名詞" (% :part-of-speech)) tokenized-seq))
+
+;; morphological-analysis関数で得られたベクタの中から
+;; 単語のみを抽出する
+(defn token-only [tokenized-seq]
+  (map #(% :token) tokenized-seq))
+
+;; 文字列のベクタを、単語と出現回数のマップに変換する
+(defn word-count [token-seq]
+  (reduce (fn [words word]
+            (assoc words word (inc (get words word 0))))
+          {}
+          token-seq))
+
+;; word-count関数の結果を、出現回数の降順にソートする
+(defn sort-desc-words [word-counted-map]
+  (reverse (sort-by second word-counted-map)))
+
+
+(comment
+(let [wc (->> (morphological-analysis (str "ClojureとLucene-Kuromojiを使って、"
+                                  "テキストを形態素解析してワードカウントを行い、"
+                                  "Clojureによるテキストマイニングにチャレンジしようと思います"))
+              (select-nominal)
+              (token-only)
+              (word-count)
+              (sort-desc-words)
+              (take 5))]
+  (c/view (ch/bar-chart (keys wc) (vals wc))))
+)
+
+(let [^String text (js/$ (js/get! "http://www.aozora.gr.jp/cards/000148/files/752_14964.html")
+                         "div.main_text"
+                         (js/text)
+                         (clojure.string/join ""))]
+  (let [wc (->> (morphological-analysis text)
+                (select-nominal)
+                (token-only)
+                (word-count)
+                (sort-desc-words))
+        top10 (take 10 wc)
+        top100 (take 100 wc)]
+    (c/view (ch/bar-chart (keys top10)
+                          (vals top10)
+                          :title "頻出単語 上位10位と出現数"
+                          :x-label "単語"
+                          :y-label "出現数"))
+    (c/view (ch/bar-chart (keys top100)
+                          (vals top100)
+                          :title "頻出単語 上位100位と出現数"
+                          :x-label "単語"
+                          :y-label "出現数"))))
+
+;; 終了待ち
+(println "Enterをすると終了します")
+(read-line)


fix extra output from pprint

fix extra output from pprint

fixes #288

--- support/src/figwheel/client.cljs
+++ support/src/figwheel/client.cljs
@@ -40,13 +40,15 @@
   (.apply (.-log js/console) js/console (into-array args))
   args)

+(defn repl-print-fn [& args]
+  (-> args
+      console-print
+      figwheel-repl-print)
+  nil)
+
 (defn enable-repl-print! []
   (set! *print-newline* false)
-  (set! *print-fn*
-        (fn [& args]
-          (-> args
-            console-print
-            figwheel-repl-print))))
+  (set! *print-fn* repl-print-fn))

 (defn get-essential-messages [ed]
   (when ed
@@ -137,10 +139,7 @@
 (let [base-path (utils/base-url-path)]
   (defn eval-javascript** [code opts result-handler]
     (try
-      (binding [*print-fn* (fn [& args]
-                             (-> args
-                               console-print
-                               figwheel-repl-print))
+      (binding [*print-fn* repl-print-fn
                 *print-newline* false]
         (result-handler
          {:status :success,


Start specing out git-branch-spec.

Start specing out git-branch-spec.

error: pathspec 'spec/incise/deploy/workflows/git_branch_spec.clj' did not match any file(s) known to git

--- spec/incise/deploy/workflows/git_branch_spec.clj
+++ spec/incise/deploy/workflows/git_branch_spec.clj
@@ -0,0 +1,36 @@
+(ns incise.deploy.workflows.git-branch-spec
+  (:require stefon.util
+            [speclj.core :refer :all]
+            (clojure.java [io :refer [file]]
+                         [shell :refer [with-sh-dir]])
+            [clj-jgit [porcelain :refer :all :exclude [with-repo]]]
+            [incise.deploy.workflows.git-branch :refer :all])
+  (:import [org.eclipse.jgit.api Git]))
+
+(defn- create-dummy-repo
+  []
+  (let [tmp-dir (stefon.util/temp-dir "incise-deploy-git-branch-spec")
+        repo (git-init tmp-dir)]
+    (git-commit repo "Initial commit.")
+    tmp-dir))
+
+(defn- same-file?
+  "Compare the canonical paths of the two file like values."
+  [afile-like bfile-like]
+  (= (.getCanonicalPath (file afile-like))
+     (.getCanonicalPath (file bfile-like))))
+
+(describe "with-repo"
+  (with repo-dir (create-dummy-repo))
+  (around [it] (with-repo @repo-dir (it)))
+  (it "binds *repo*, *out-dir* and *work-dir*"
+    (doseq [bvar [#'*repo* #'*out-dir* #'*work-dir*]]
+      (should (bound? bvar))))
+  (it "binds *repo* to a Git instance"
+    (should (instance? Git *repo*)))
+  (it "binds *work-dir* to the working tree directory"
+    (should (same-file? @repo-dir *work-dir*)))
+  (it "binds *out-dir* to a directory nested within the git dir."
+    (should (same-file? (file @repo-dir ".git/_incise") *out-dir*))))
+
+(run-specs)


refactoring savings filter

refactoring savings filter

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/ShaolinSarg/bean_counter.git/'


post-deia atera

post-deia atera

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/lnmnd/magnet.zer.git/'


Documentation only

Documentation only

fatal: unable to access 'https://github.com/democracyworks/turbovote-http-api.git/': The requested URL returned error: 403


Remove wrong type hint.

Remove wrong type hint.

--- src/buddy/core/keys.clj
+++ src/buddy/core/keys.clj
@@ -49,7 +49,7 @@
   (.build builder (.toCharArray passphrase)))

 (defn- read-pem->privkey
-  [^String path ^String passphrase]
+  [path ^String passphrase]
   (with-open [reader (io/reader path)]
     (let [parser    (PEMParser. reader)
           obj       (.readObject parser)


Only catch recoverable exception in retry


[TH] more tweaks to the search fn

[TH] more tweaks to the search fn

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/scheduled-message-works.git/'


optimisations

optimisations

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/clojure-ml/cml.git/'


limit update to new mediums

limit update to new mediums


Clojure already has a built in solution that fits my needs - iterator-seq

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Yoshiyuka/cthulhu.git/'


CMR-4176: Add migration to remove provider specific services tables and sequences.

error: pathspec 'metadata-db-app/src/migrations/053_remove_provider_services_tables.clj' did not match any file(s) known to git

--- metadata-db-app/src/migrations/053_remove_provider_services_tables.clj
+++ metadata-db-app/src/migrations/053_remove_provider_services_tables.clj
@@ -0,0 +1,53 @@
+(ns migrations.053-remove-provider-services-tables
+  (:require [clojure.java.jdbc :as j]
+            [config.migrate-config :as config]
+            [config.mdb-migrate-helper :as h]
+            [cmr.metadata-db.data.oracle.concept-tables :as ct]))
+
+(defn up
+  "Migrates the database up to version 53."
+  []
+  (println "migrations.053-remove-provider-services-tables up...")
+  (doseq [provider (h/get-regular-providers)
+          :let [t (ct/get-table-name provider :service)
+                sequence-name (str t "_seq")]]
+    (h/sql (format "drop table %s" t))
+    (h/sql (format "drop sequence %s" sequence-name)))
+  (h/sql "drop table small_prov_services")
+  (h/sql "drop sequence small_prov_services_seq"))
+
+(def create-service-sql
+  "CREATE TABLE small_prov_services (
+    id NUMBER,
+    concept_id VARCHAR(255) NOT NULL,
+    native_id VARCHAR(1030) NOT NULL,
+    metadata BLOB NOT NULL,
+    format VARCHAR(255) NOT NULL,
+    revision_id INTEGER DEFAULT 1 NOT NULL,
+    revision_date TIMESTAMP WITH TIME ZONE DEFAULT SYSTIMESTAMP NOT NULL,
+    deleted INTEGER DEFAULT 0 NOT NULL,
+    entry_id VARCHAR(255) NOT NULL,
+    entry_title VARCHAR(1030) NOT NULL,
+    delete_time TIMESTAMP WITH TIME ZONE,
+    user_id VARCHAR(30) NULL,
+    provider_id VARCHAR(255) NOT NULL,
+    CONSTRAINT small_prov_services_pk PRIMARY KEY (id),
+    CONSTRAINT small_prov_services_con_rev
+      UNIQUE (provider_id, native_id, revision_id)
+      USING INDEX (create unique index small_prov_services_ucr_i
+                          ON small_prov_services(provider_id, native_id, revision_id)),
+    CONSTRAINT small_prov_services_cid_rev
+      UNIQUE (concept_id, revision_id)
+      USING INDEX (create unique index small_prov_services_cri
+                          ON small_prov_services(concept_id, revision_id)))")
+
+
+(defn down
+  "Migrates the database down from version 53."
+  []
+  (println "migrations.053-remove-provider-services-tables down...")
+  (doseq [provider (h/get-regular-providers)]
+    (ct/create-concept-table (config/db) provider :service)
+    (ct/create-concept-table-id-sequence (config/db) provider :service))
+  (h/sql create-service-sql)
+  (h/sql "CREATE SEQUENCE small_prov_services_seq"))


tabledoc main

tabledoc main

fatal: unable to access 'https://github.com/ntalbs/tabledoc.git/': The requested URL returned error: 403