changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/lib/skel/comp/container.lisp

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
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
1
 ;;; container.lisp --- Containerfile Components
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
2
 
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
3
 ;; Containerfile skel components.
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
4
 
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
5
 ;;; Commentary:
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
6
 
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
7
 ;; By convention we consider any file with base-name 'Containerfile'
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
8
 ;; (case-sensitive) to be an OCI Containerfile. Extension is used as the name
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
 ;; of the containerfile, or if absent defaults to the directory name.
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
10
 
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
11
 ;;; Code:
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
12
 (in-package :skel/comp/container)
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
13
 
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
14
 (defclass sk-containerfile (sk-component containerfile)
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
15
   ())
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
16
 
509
4963e69e226d light printing
Richard Westhaver <ellis@rwest.io>
parents: 508
diff changeset
17
 (defmethod print-object ((object sk-containerfile) stream)
4963e69e226d light printing
Richard Westhaver <ellis@rwest.io>
parents: 508
diff changeset
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
4963e69e226d light printing
Richard Westhaver <ellis@rwest.io>
parents: 508
diff changeset
20
 
490
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
21
 (defmethod sk-convert ((self containerfile))
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
22
   (let ((self (change-class self 'sk-containerfile)))
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
23
     (update-id self)
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
24
     self))
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
25
 
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
26
 (defmethod sk-load-component ((kind (eql :containerfile)) (name pathname))
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
27
   (declare (ignore kind))
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
28
   (sk-convert (deserialize
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
29
                (make-pathname :name *default-containerfile* :type (namestring name))
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
30
                :containerfile)))
7a7e6c273f52 skel component updates
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
31
 
508
e2d577f31866 viz updates
Richard Westhaver <ellis@rwest.io>
parents: 490
diff changeset
32
 (defmethod sk-write-file ((self sk-containerfile) &key path)
509
4963e69e226d light printing
Richard Westhaver <ellis@rwest.io>
parents: 508
diff changeset
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")))))