changeset 551: | 83b71948b92c |
parent: | 4963e69e226d |
child: | e6c6713c17ff |
author: | Richard Westhaver <ellis@rwest.io> |
date: | Wed, 17 Jul 2024 21:31:38 -0400 |
permissions: | -rw-r--r-- |
description: | skel containerfile build |
490 | 1 | ;;; container.lisp --- Containerfile Components |
2 | ||
3 | ;; Containerfile skel components. |
|
4 | ||
5 | ;;; Commentary: |
|
6 | ||
7 | ;; By convention we consider any file with base-name 'Containerfile' |
|
8 | ;; (case-sensitive) to be an OCI Containerfile. Extension is used as the name |
|
9 | ;; of the containerfile, or if absent defaults to the directory name. |
|
10 | ||
11 | ;;; Code: |
|
12 | (in-package :skel/comp/container) |
|
13 | ||
14 | (defclass sk-containerfile (sk-component containerfile) |
|
15 | ()) |
|
16 | ||
509 | 17 | (defmethod print-object ((object sk-containerfile) stream) |
18 | (print-unreadable-object (object stream :type t) |
|
551
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
19 | (format stream "~A" (file-namestring (containerfile-path object))))) |
509 | 20 | |
490 | 21 | (defmethod sk-convert ((self containerfile)) |
22 | (let ((self (change-class self 'sk-containerfile))) |
|
23 | (update-id self) |
|
24 | self)) |
|
25 | ||
26 | (defmethod sk-load-component ((kind (eql :containerfile)) (name pathname)) |
|
27 | (declare (ignore kind)) |
|
28 | (sk-convert (deserialize |
|
29 | (make-pathname :name *default-containerfile* :type (namestring name)) |
|
30 | :containerfile))) |
|
31 | ||
508 | 32 | (defmethod sk-write-file ((self sk-containerfile) &key path) |
509 | 33 | (serde self (pathname (or path (containerfile-path self))))) |
551
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
34 | |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
35 | (defmethod sk-read-file ((self sk-containerfile) path) |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
36 | (sk-load-component :containerfile path)) |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
37 | |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
38 | (defmethod sk-path ((self sk-containerfile)) |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
39 | (containerfile-path self)) |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
40 | |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
41 | (defmethod sk-build ((self sk-containerfile) &key with-client no-cache tag) |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
42 | (typecase with-client |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
43 | (null (apply 'pod::run-podman (flatten (concatenate 'list |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
44 | `("build" "-f" |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
45 | ,(sk-path self) |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
46 | ,@(when no-cache (list "--no-cache"))) |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
47 | (when tag (list "-t" tag )))))) |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
48 | ;; iff == t |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
49 | (boolean |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
50 | (with-libpod-client (c) |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
51 | (libpod-request-json c "containers/json") |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
52 | (nyi! "need to implement containerfile libpod request method"))) |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
53 | ;; else |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
54 | (t (with-libpod-client (c with-client) |
83b71948b92c
skel containerfile build
Richard Westhaver <ellis@rwest.io>
parents:
509
diff
changeset
|
55 | (nyi! "todo"))))) |