Home

Awesome

make-like

An opinionated application template builder for LIKE applications

make-like is an application template builder for LIKE (Lisp In Kubernetes + Emacs) applications.

It will create the basic foundation for LIKE applications, including:

The application code itself is minimal, but provides some useful foundation elements:

Tutorial

Create a likefile with contents similar to this:

(make-like:make-application
  :app-name "simple"
  :author "Anthony Green <green@moxielogic.com"
  :description "A simple sample application"
  :source-header
";;; -*- Mode: LISP; Syntax: COMMON-LISP; Package: SAMPLE; Base: 10 -*-
;;;
;;; Copyright (C) 2021  Anthony Green <green@moxielogic.com>
;;;
;;; This program is free software: you can redistribute it and/or
;;; modify it under the terms of the GNU Affero General Public License
;;; as published by the Free Software Foundation, either version 3 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
;;; Affero General Public License for more details.
;;;
;;; You should have received a copy of the GNU Affero General Public
;;; License along with this program.  If not, see
;;; <http://www.gnu.org/licenses/>."
  :github-account "atgreen"
  :container-registry "quay.io/moxielogic")

Run the make-like command:

$ make-like likefile
$ cd simple/
$ find .
.
./static
./static/js
./static/images
./static/css
./dist
./src
./src/package.lisp
./src/simple.lisp
./src/simple.asd
./README.md
./.gitignore
./.github
./.github/workflows
./.github/workflows/build.yml
./build
./build/Dockerfile.base
./build/Dockerfile
./test
./test/config.ini
./test/test.sh
./test/podman-start.sh
./test/test-pod.yml
./Makefile

The make targets look like this:

$ make
Supported targets:
 clean          - clean the source tree
 podman-start   - run in podman using test/test-pod.yml
 podman-stop    - stop the test pod
 run            - run locally

To run the application in a container, do this:

$ make podman-start
[ LOTS OF OUTPUT REDACTED ]
Waiting for http://localhost:8080/health
===========================================================================

Application: http://localhost:8080

Prometheus : http://localhost:9101/metrics

Use emacs to 'sly-connect' to localhost port 4005

Run 'make podman-stop' to stop the test pod

===========================================================================
This is SBCL 2.1.7, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
To load "slynk":
  Load 1 ASDF system:
    slynk
; Loading "slynk"
SLYNK's ASDF loader finished.
;; Slynk started at port: 4005.
To load "simple":
  Load 1 ASDF system:
    simple
; Loading "simple"
.........
 <INFO> [18:20:45] simple simple.lisp (start-server) -
  Starting simple version APP_VERSION
 <INFO> [18:20:45] simple simple.lisp (start-server) - Starting server
 <INFO> [18:20:47] simple simple.lisp (acceptor-dispatch-request application) - SIMPLE::*HTTP-REQUESTS-COUNTER*: #<PROMETHEUS:COUNTER name: http_requests_total {10153A6073}>
10.0.2.100 - [2021-08-04 18:20:47] "GET /health HTTP/1.1" 200 5 "-" "curl/7.76.1"

Now just fire up emacs, run sly-connect against localhost, port 4005, and get cracking on your next masterpiece!