Added a main class, to allow command line invocation.

This commit is contained in:
Simon Brooke 2018-06-11 01:34:03 +01:00
parent f4330aad6b
commit 1338b54846
8 changed files with 78 additions and 24 deletions

View file

@ -1,3 +1,11 @@
# Release 1.4.1
Release 1.4.1 adds a 'magnitude' element to entities, in order to provide a pragma for when
to switch to asynchronous select widgets.
It also provides a family of transforms, written in Clojure, to generate a skeleton Clojure
web app from an ADL specification.
# Release 1.4
Release 1.4 adds an 'order' element as a possible child of the 'list' element, in order to specify

View file

@ -1,10 +1,12 @@
(defproject adl "0.1.0-SNAPSHOT"
:description "FIXME: write description"
(defproject adl "1.4.1-SNAPSHOT"
:description "An application to transform an ADL application specification document into skeleton code for a Clojure web-app"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:license {:name "GNU General Public License,version 2.0 or (at your option) any later version"
:url "https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html"}
:dependencies [[org.clojure/clojure "1.8.0"]
[org.clojure/math.combinatorics "0.1.4"]
[bouncer "1.0.1"]
[hiccup "1.0.5"]]
:aot [adl.main]
:main adl.main
:plugins [[lein-codox "0.10.3"]])

50
src/adl/main.clj Normal file
View file

@ -0,0 +1,50 @@
(ns ^{:doc "Application Description Language - command line invocation."
:author "Simon Brooke"}
adl.main
(:require [adl.utils :refer :all]
[adl.to-hugsql-queries :as h]
[adl.to-json-routes :as j]
[adl.to-selmer-routes :as s]
[adl.to-selmer-templates :as t]
[clojure.xml :as x])
(:gen-class))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;
;;;; adl.main
;;;;
;;;; This program is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU General Public License
;;;; as published by the Free Software Foundation; either version 2
;;;; of the License, or (at your option) any later version.
;;;;
;;;; This program is distributed in the hope that it will be useful,
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;;; GNU General Public License for more details.
;;;;
;;;; You should have received a copy of the GNU General Public License
;;;; along with this program; if not, write to the Free Software
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
;;;; USA.
;;;;
;;;; Copyright (C) 2018 Simon Brooke
;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn print-usage [_]
(println "Argument should be a pathname to an ADL file"))
(defn -main
"Expects as arg the name of the git hook to be handled, followed by the arguments to it"
[& args]
(cond
(empty? args)
(print-usage args)
(.exists (java.io.File. (first args)))
(let [application (x/parse (first args))]
(h/to-hugsql-queries application)
;; (j/to-json-routes application)
(s/to-selmer-routes application)
(t/to-selmer-templates application))))

View file

@ -33,10 +33,6 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def ^:dynamic *output-path*
"The path to which generated files will be written."
"resources/auto/")
(defn where-clause
"Generate an appropriate `where` clause for queries on this `entity`;
if `properties` are passed, filter on those properties, otherwise the key

View file

@ -4,7 +4,8 @@
(:require [clojure.java.io :refer [file]]
[clojure.string :as s]
[clj-time.core :as t]
[clj-time.format :as f]))
[clj-time.format :as f]
[adl.utils :refer :all]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;

View file

@ -34,11 +34,6 @@
;;; Generally. there's one route in the generated file for each Selmer template which has been generated.
(def ^:dynamic *output-path*
"The path to which generated files will be written."
"resources/auto/")
(defn file-header
[application]
(list

View file

@ -1,4 +1,4 @@
(ns ^{;; :doc "Application Description Language - generate Selmer templates for the HTML pages implied by an ADL file."
(ns ^{:doc "Application Description Language - generate Selmer templates for the HTML pages implied by an ADL file."
:author "Simon Brooke"}
adl.to-selmer-templates
(:require [adl.utils :refer :all]
@ -34,15 +34,6 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def ^:dynamic *locale*
"The locale for which files will be generated."
"en-GB")
(def ^:dynamic *output-path*
"The path to which generated files will be written."
"resources/auto/")
(defn big-link
[content url]
{:tag :div

View file

@ -26,6 +26,17 @@
;;;;
;;;; Copyright (C) 2018 Simon Brooke
;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def ^:dynamic *locale*
"The locale for which files will be generated."
"en-GB")
(def ^:dynamic *output-path*
"The path to which generated files will be written."
"resources/auto/")
(defn link-table-name
"Canonical name of a link table between entity `e1` and entity `e2`."