diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..ac4e089 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,19 @@ +version: 2 +jobs: + build: + working_directory: ~/honeysql + docker: + - image: circleci/clojure:openjdk-11-tools-deps-1.10.0.442 +# environment: +# JVM_OPTS: -Xmx3200m + steps: + - checkout + - restore_cache: + key: honeysql-{{ checksum "deps.edn" }} + - run: clojure -R:test:runner -Spath + - save_cache: + paths: + - ~/.m2 + - ~/.gitlibs + key: honeysql-{{ checksum "deps.edn" }} + - run: sh run-tests.sh diff --git a/.gitignore b/.gitignore index d8cc524..489c50d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,20 +6,13 @@ /classes /checkouts /dist -pom.xml* *.jar *.class .cpcache .eastwood -.lein-deps-sum -.lein-failures -.lein-plugins -.lein-repl-history .nrepl-port .classpath .project .nrepl-port bin -test/readme.clj /cljs-test-runner-out -/node_modules diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index ea7744d..0000000 --- a/.travis.yml +++ /dev/null @@ -1,19 +0,0 @@ -dist: trusty -sudo: required -language: clojure - -cache: - directories: - - $HOME/.m2 - - $HOME/.npm - - $HOME/.nvm - - $TRAVIS_BUILD_DIR/.cache - - $TRAVIS_BUILD_DIR/node_modules - -before_install: - - npm install lumo-cljs@1.8.0 -g - -install: - - jdk_switcher use openjdk8 - -script: lein do check, eastwood, test-all, tach lumo, test-readme diff --git a/CHANGES.md b/CHANGES.md index fb22fc9..d4a561d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,7 @@ +## 1.0.next in progress + +* Switch dev/test pipeline to use CLI/`deps.edn` instead of Leiningen. + ## 0.9.10 * Fix #254 #255 by adding support for `except`. (@ted-coakley-otm) diff --git a/README.md b/README.md index 9cc77d1..435568c 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ -# Honey SQL +# Honey SQL [![CircleCI](https://circleci.com/gh/jkk/honeysql/tree/master.svg?style=svg)](https://circleci.com/gh/jkk/honeysql/tree/master) SQL as Clojure data structures. Build queries programmatically -- even at runtime -- without having to bash strings together. ## Build -[![Build Status](https://travis-ci.org/jkk/honeysql.svg?branch=master)](https://travis-ci.org/jkk/honeysql) -[![Dependencies Status](https://versions.deps.co/jkk/honeysql/status.svg)](https://versions.deps.co/jkk/honeysql) -[![project chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://clojurians.zulipchat.com/#narrow/stream/152091-honeysql) +The latest versions on Clojars and on cljdoc: + +[![Clojars Project](https://clojars.org/honeysql/latest-version.svg)](https://clojars.org/honeysql) [![cljdoc badge](https://cljdoc.org/badge/honeysql/honeysql?1.0.next)](https://cljdoc.org/d/honeysql/honeysql/CURRENT) + ## Leiningen Coordinates @@ -527,7 +528,8 @@ You can also define your own clauses: ;; Takes a MapEntry of the operator & clause data, plus the entire SQL map (defmethod fmt/format-clause :foobar [[op v] sqlmap] (str "FOOBAR " (fmt/to-sql v))) - +``` +```clojure (sql/format {:select [:a :b] :foobar :baz}) => ["SELECT a, b FOOBAR baz"] ``` @@ -537,7 +539,8 @@ You can also define your own clauses: ;; Defines a helper function, and allows 'build' to recognize your clause (defhelper foobar [m args] (assoc m :foobar (first args))) - +``` +```clojure (-> (select :a :b) (foobar :baz) sql/format) => ["SELECT a, b FOOBAR baz"] @@ -551,7 +554,7 @@ When adding a new clause, you may also need to register it with a specific prior If you do implement a clause or function handler for an ANSI SQL, consider submitting a pull request so others can use it, too. For non-standard clauses and/or functions, look for a library that extends `honeysql` for that specific database or create one, if no such library exists. -## why does my parameter get emitted as `()`? +## Why does my parameter get emitted as `()`? If you want to use your own datatype as a parameter then the idiomatic approach of implementing `clojure.java.jdbc`'s [`ISQLValue`](https://clojure.github.io/java.jdbc/#clojure.java.jdbc/ISQLValue) protocol isn't enough as `honeysql` won't correct pass through your datatype, rather it will interpret it incorrectly. diff --git a/deps.edn b/deps.edn index 98de22c..54dd2c0 100644 --- a/deps.edn +++ b/deps.edn @@ -7,14 +7,22 @@ :1.9 {:override-deps {org.clojure/clojure {:mvn/version "1.9.0"}}} :1.10 {:override-deps {org.clojure/clojure {:mvn/version "1.10.1"}}} :master {:override-deps {org.clojure/clojure {:mvn/version "1.11.0-master-SNAPSHOT"}}} - ;; clj -A:test:runner :test {:extra-paths ["test"]} - :runner {:extra-deps {com.cognitect/test-runner - {:git/url "https://github.com/cognitect-labs/test-runner" - :sha "f7ef16dc3b8332b0d77bc0274578ad5270fbfedd"}} - :main-opts ["-m" "cognitect.test-runner" - "-d" "test"]} + :runner + {:extra-deps {com.cognitect/test-runner + {:git/url "https://github.com/cognitect-labs/test-runner" + :sha "f7ef16dc3b8332b0d77bc0274578ad5270fbfedd"}} + :main-opts ["-m" "cognitect.test-runner" + "-d" "test"]} :cljs-runner {:extra-deps {olical/cljs-test-runner {:mvn/version "3.7.0"}} :main-opts ["-m" "cljs-test-runner.main"]} - :readme {:extra-deps {seancorfield/readme {:mvn/version "1.0.12"}} - :main-opts ["-m" "seancorfield.readme"]}}} + :readme {:extra-deps {seancorfield/readme {:mvn/version "1.0.13"}} + :main-opts ["-m" "seancorfield.readme"]} + :eastwood {:extra-deps {jonase/eastwood {:mvn/version "RELEASE"}} + :main-opts ["-m" "eastwood.lint" "{:source-paths,[\"src\"]}"]} + :jar {:extra-deps {seancorfield/depstar {:mvn/version "0.5.2"}} + :main-opts ["-m" "hf.depstar.jar" "honeysql.jar"]} + :install {:extra-deps {deps-deploy {:mvn/version "0.0.9"}} + :main-opts ["-m" "deps-deploy.deps-deploy" "install" "honeysql.jar"]} + :deploy {:extra-deps {deps-deploy {:mvn/version "0.0.9"}} + :main-opts ["-m" "deps-deploy.deps-deploy" "deploy" "honeysql.jar"]}}} diff --git a/package.json b/package.json deleted file mode 100644 index f045893..0000000 --- a/package.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "@honeysql/honeysql", - "version": "0.9.10", - "license": "EPL-1.0", - "homepage": "https://github.com/jkk/honeysql", - "repository": { - "type": "git", - "url": "https://github.com/jkk/honeysql" - }, - "contributors": [ - { - "name": "Michael Blume", - "email": "blume.mike@gmail.com" - }, - { - "name": "Sean Corfield", - "email": "sean@corfield.org" - } - ], - "files": [ - "src/*" - ], - "directories": { - "lib": "src" - }, - "dependencies": { - "macrovich": "0.2.1-SNAPSHOT" - } -} diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..3f22844 --- /dev/null +++ b/pom.xml @@ -0,0 +1,62 @@ + + + 4.0.0 + jkk + honeysql + 1.0.next + honeysql + SQL as Clojure data structures. + https://github.com/jkk/honeysql + + + Eclipse Public License + http://www.eclipse.org/legal/epl-v10.html + + + + + Sean Corfield + + + Justin Kramer + + + + https://github.com/jkk/honeysql + scm:git:git://github.com/jkk/honeysql.git + scm:git:ssh://git@github.com/jkk/honeysql.git + v1.0.next + + + + org.clojure + clojure + 1.10.1 + + + net.cgrand + macrovich + 0.2.1 + + + + src + + + + clojars + https://repo.clojars.org/ + + + sonatype + https://oss.sonatype.org/content/repositories/snapshots/ + + + + + clojars + Clojars repository + https://clojars.org/repo + + + diff --git a/project.clj b/project.clj deleted file mode 100644 index f98c349..0000000 --- a/project.clj +++ /dev/null @@ -1,48 +0,0 @@ -(defproject honeysql "0.9.10" - :description "SQL as Clojure data structures" - :license {:name "Eclipse Public License" - :url "http://www.eclipse.org/legal/epl-v10.html"} - :url "https://github.com/jkk/honeysql" - :scm {:name "git" - :url "https://github.com/jkk/honeysql"} - :dependencies [[org.clojure/clojure "1.10.1"] - [net.cgrand/macrovich "0.2.1"]] - :aliases {"test-readme" ["with-profile" "midje" "midje"] - "test-all" ["with-profile" - "default:1.7,default:1.8,default:1.9,default:1.10,default:master" - "test"]} - :cljsbuild {:builds {:release {:source-paths ["src"] - :compiler {:output-to "dist/honeysql.js" - :optimizations :advanced - :output-wrapper false - :parallel-build true - :pretty-print false}} - :test {:source-paths ["src" "test" "test-lein"] - :compiler {:output-to "target/test/honeysql.js" - :output-dir "target/test" - :source-map true - :main honeysql.test - :parallel-build true - :target :nodejs}}}} - :doo {:build "test"} - :tach {:test-runner-ns 'honeysql.self-host-runner - :source-paths ["src" "test" "test-lein"]} - :profiles {:midje {:dependencies [[midje "1.9.6"]] - :plugins [[lein-midje "3.2.1"] - [midje-readme "1.0.9"]] - :midje-readme {:require "[honeysql.core :as sql] - [honeysql.helpers :refer :all :as helpers] - [honeysql.format :as fmt] - [honeysql.helpers :refer [defhelper]]"}} - :master {:repositories [["snapshots" "https://oss.sonatype.org/content/repositories/snapshots/"]] - :dependencies [[org.clojure/clojure "1.11.0-master-SNAPSHOT"]]} - :1.10 {:dependencies [[org.clojure/clojure "1.10.1"]]} - :1.9 {:dependencies [[org.clojure/clojure "1.9.0"]]} - :1.8 {:dependencies [[org.clojure/clojure "1.8.0"]]} - :1.7 {:dependencies [[org.clojure/clojure "1.7.0"]]} - :dev {:dependencies [[org.clojure/clojurescript "1.10.520"] - [cljsbuild "1.1.7"]] - :plugins [[lein-cljsbuild "1.1.7"] - [jonase/eastwood "0.3.5"] - [lein-doo "0.1.11"] - [lein-tach "1.0.0"]]}}) diff --git a/run-tests.sh b/run-tests.sh index 5e51e80..34ebf67 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -1,13 +1,24 @@ #!/bin/sh -# -# Assumes node.js/npm and lumo-cljs are installed! -# See .travis.yml for details of the test environment. -# -rm -rf test/readme.clj -if test "$1" = "all" + +echo ==== Test README.md ==== && clojure -A:readme && \ + echo ==== Lint Source ==== && clojure -A:eastwood && \ + echo ==== Test ClojureScript ==== && clojure -A:test:cljs-runner + +if test $? -eq 0 then - clj_test="test-all" -else - clj_test="test" + if test "$1" = "all" + then + for v in 1.7 1.8 1.9 1.10 master + do + echo ==== Test Clojure $v ==== + clojure -A:test:runner:$v + if test $? -ne 0 + then + exit 1 + fi + done + else + echo ==== Test Clojure ==== + clojure -A:test:runner + fi fi -lein do clean, check, eastwood, $clj_test, tach lumo, test-readme diff --git a/test-lein/honeysql/self_host_runner.cljs b/test-lein/honeysql/self_host_runner.cljs deleted file mode 100644 index 4b59c32..0000000 --- a/test-lein/honeysql/self_host_runner.cljs +++ /dev/null @@ -1,9 +0,0 @@ -(ns honeysql.self-host-runner - (:require [cljs.test :as t :refer-macros [run-tests]] - honeysql.core-test - honeysql.format-test)) - -(enable-console-print!) - -(run-tests 'honeysql.core-test - 'honeysql.format-test) diff --git a/test-lein/honeysql/test.cljs b/test-lein/honeysql/test.cljs deleted file mode 100644 index f1642ba..0000000 --- a/test-lein/honeysql/test.cljs +++ /dev/null @@ -1,9 +0,0 @@ -(ns honeysql.test - (:require - [doo.runner :refer-macros [doo-tests]] - [cljs.test :as t :refer-macros [is are deftest testing]] - honeysql.core-test - honeysql.format-test)) - -(doo-tests 'honeysql.core-test - 'honeysql.format-test)