1
+ <!DOCTYPE html>
2
+ <!--
3
+ Copyright The Lima Authors
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
16
+ -->
17
+ < html >
18
+ < script >
19
+ const ghRepo = "lima-vm/lima"
20
+ const ghRef = "master"
21
+ const ghRepoUrl = `https://github.com/${ ghRepo } `
22
+ const baseUrl = `${ ghRepoUrl } /blob/${ ghRef } /` ;
23
+ const contentBaseUrl = `https://raw.githubusercontent.com/${ ghRepo } /${ ghRef } /` ;
24
+ const files = [
25
+ "README.md" ,
26
+ // Advanced topic: "docs/deprecated.md",
27
+ // Advanced topic: "docs/experimental.md",
28
+ // Advanced topic: "docs/internal.md",
29
+ "docs/mount.md" ,
30
+ "docs/multi-arch.md" ,
31
+ "docs/network.md" ,
32
+ "docs/talks.md" ,
33
+ "docs/vmtype.md" ,
34
+ "examples/README.md" ,
35
+ ] ;
36
+ </ script >
37
+
38
+ < head >
39
+ < title > Lima: Linux virtual machines</ title >
40
+ < meta charset ="utf-8 " />
41
+ < style >
42
+ code ,
43
+ pre {
44
+ background-color : # eee ;
45
+ font : monospace;
46
+ }
47
+
48
+ pre {
49
+ border : solid;
50
+ padding : 10px ;
51
+ }
52
+
53
+ table ,
54
+ th ,
55
+ td {
56
+ border : solid;
57
+ border-collapse : collapse;
58
+ padding : 5px ;
59
+ }
60
+
61
+ blockquote {
62
+ border : dashed;
63
+ padding : 5px ;
64
+ }
65
+
66
+ header {
67
+ display : flex;
68
+ }
69
+
70
+ header h1 {
71
+ display : none;
72
+ }
73
+
74
+ # md-main-left {
75
+ width : 20vw ;
76
+ }
77
+
78
+ # md-header-right {
79
+ width : 80vw ;
80
+ text-align : right;
81
+ }
82
+
83
+ body > hr {
84
+ border-top : solid green 5px ;
85
+ }
86
+
87
+ .md-2col {
88
+ display : flex;
89
+ }
90
+
91
+ # md-main-left {
92
+ width : 15vw ;
93
+ overflow-x : scroll;
94
+ margin-right : 20px ;
95
+ }
96
+
97
+ # md-main-left hr {
98
+ border-top : dotted green 3px ;
99
+ }
100
+
101
+ # md-main-right {
102
+ width : 85vw ;
103
+ }
104
+
105
+ # md-filename {
106
+ font-size : 150% ;
107
+ margin-bottom : 20px ;
108
+ }
109
+
110
+ # md-content {
111
+ border : solid green;
112
+ padding : 30px ;
113
+ overflow-y : scroll;
114
+ height : 100vh ;
115
+ }
116
+
117
+ .md-error {
118
+ color : red;
119
+ }
120
+ </ style >
121
+ </ head >
122
+
123
+ < body >
124
+ < header >
125
+ < h1 > Lima: Linux virtual machines</ a > </ h1 >
126
+ < div id ="md-header-left ">
127
+ < a href ="? ">
128
+ < img src ="https://raw.githubusercontent.com/lima-vm/lima/master/docs/images/lima-logo-01.svg " />
129
+ </ a >
130
+ </ div > <!-- /md-header-left -->
131
+ < div id ="md-header-right ">
132
+ < p >
133
+ [< a href ="https://github.com/lima-vm/lima "> GitHub]
134
+ [< a href ="https://slack.cncf.io/ "> Slack</ a >
135
+ (< code > #lima</ code > )]
136
+ </ p >
137
+ < iframe src ="https://ghbtns.com/github-btn.html?user=lima-vm&repo=lima&type=star&count=true&size=large "
138
+ frameborder ="0 " scrolling ="0 " width ="170 " height ="30 " title ="GitHub stars of lima-vm/lima "> </ iframe >
139
+
140
+ </ div > <!-- /md-header-right -->
141
+ </ header >
142
+ < hr />
143
+ < div class ="md-2col ">
144
+ < nav id ="md-main-left ">
145
+ < h4 > Documents</ h4 >
146
+ < div id ="md-files "> Loading...< noscript class ="md-error "> ERROR: JavaScript is disabled</ noscript > </ div >
147
+ < hr />
148
+ < h4 > Contents</ h4 >
149
+ < div id ="md-toc "> < noscript class ="md-error "> ERROR: JavaScript is disabled</ noscript > </ div >
150
+ </ nav > <!-- /md-main-left -->
151
+ < article id ="md-main-right ">
152
+ < div id ="md-filename "> </ div >
153
+ < div id ="md-content ">
154
+ < h1 > Lima: Linux virtual machines, made for running containerd on Mac</ h1 >
155
+ < p > Lima launches Linux virtual machines with automatic file sharing and port forwarding (similar to
156
+ WSL2), and containerd.</ p >
157
+ < p > Lima can be considered as a some sort of unofficial "containerd for Mac".</ p >
158
+ < p > Lima is expected to be used on macOS hosts, but can be used on Linux hosts as well.</ p >
159
+ < p > < noscript class ="md-error "> ERROR: JavaScript is disabled</ noscript > </ p >
160
+ </ div > <!-- /md-content -->
161
+ < p >
162
+ If the content is not shown, visit: < a
163
+ href ="https://github.com/lima-vm/lima "> https://github.com/lima-vm/lima</ a >
164
+ </ p >
165
+ </ article > <!-- /md-main-right -->
166
+ </ div > <!-- /md-main-2col-->
167
+ < hr />
168
+ < footer >
169
+ < p > < strong > We are a < a href ="https://cncf.io/ "> Cloud Native Computing Foundation</ a > sandbox project.</ strong >
170
+ </ p >
171
+ < img src ="https://www.cncf.io/wp-content/uploads/2022/07/cncf-color-bg.svg " width =300 />
172
+ < p > The Linux Foundation® (TLF) has registered trademarks and uses trademarks.For a list of TLF trademarks,
173
+ see < a href ="https://www.linuxfoundation.org/trademark-usage/ "> Trademark Usage</ a > .</ p >
174
+ < hr />
175
+ < p > Help wanted to improve this website.
176
+ Please send pull requests to < a
177
+ href ="https://github.com/lima-vm/lima/tree/master/website "> https://github.com/lima-vm/lima/tree/master/website</ a >
178
+ 🙏.
179
+ </ p >
180
+ </ footer >
181
+ </ body >
182
+
183
+ <!-- marked: MIT License: https://github.com/markedjs/marked/blob/v4.2.3/LICENSE.md -->
184
+ < script src ="
https://cdn.jsdelivr.net/npm/[email protected] /marked.min.js "
185
+ integrity ="sha384-IMygIQafcYXMtRhq7WReNw5YkMe3eTKl420LY/Xz4yi6nfihtVdatoddRcEsO4KQ "
186
+ crossorigin ="anonymous "> </ script >
187
+ <!-- DOMPurify: Apache License 2.0: https://github.com/cure53/DOMPurify/blob/2.4.1/LICENSE -->
188
+ < script src ="
https://cdn.jsdelivr.net/gh/cure53/[email protected] /dist/purify.min.js "
189
+ integrity ="sha384-arqXKBMaxueqlbHTzDnjId9y+DYmnmjBWr2t2wXFAUwg00iJKZe5ItR/bQQAaaHp "
190
+ crossorigin ="anonymous "> </ script >
191
+ < script >
192
+ const walkTokens = async ( token ) => {
193
+ if ( token . type === "image" && ! token . href . includes ( "://" ) ) {
194
+ token . href = new URL ( token . href , contentBaseUrl ) . href ;
195
+ }
196
+ } ;
197
+ const dirname = function ( file ) {
198
+ const arr = file . split ( "/" ) ;
199
+ arr . pop ( ) ;
200
+ return arr . join ( "/" ) ;
201
+ } ;
202
+ const render = function ( file ) {
203
+ let fileInAllowList = false ;
204
+ // Render the side bar
205
+ let ul = "<ul>" ;
206
+ for ( let i = 0 ; i < files . length ; i ++ ) {
207
+ const f = files [ i ] ;
208
+ let li = "<li>" ;
209
+ if ( file && file == f ) {
210
+ fileInAllowList = true ;
211
+ li += `<strong><code>${ f } </code></strong>` ;
212
+ } else {
213
+ li += `<code><a href="?file=${ f } ">${ f } </a></code>` ;
214
+ }
215
+ li += "</li>" ;
216
+ ul += li ;
217
+ }
218
+ ul += "</ul>" ;
219
+ const filesE = document . getElementById ( "md-files" ) ;
220
+ filesE . innerHTML = ul ;
221
+ if ( ! file ) return ;
222
+ // Render the markdown content
223
+ if ( ! fileInAllowList ) throw new Error ( `invalid file "${ file } "` ) ;
224
+ const fileAbs = new URL ( file , baseUrl ) . href ;
225
+ const contentAbs = new URL ( file , contentBaseUrl ) . href ;
226
+ const filenameE = document . getElementById ( "md-filename" ) ;
227
+ filenameE . innerHTML = `<code>${ file } </code> (<a href="${ fileAbs } "><code>${ fileAbs } </code></a>)` ;
228
+ const contentE = document . getElementById ( "md-content" ) ;
229
+ contentE . innerHTML = `Loading <code><a href="${ fileAbs } ">${ fileAbs } </a></code> ...`
230
+ + ` (from <code><a href="${ contentAbs } ">${ contentAbs } </a></code>)` ;
231
+ const req = new Request ( contentAbs ) ;
232
+ fetch ( req )
233
+ . then ( ( resp ) => {
234
+ if ( ! resp . ok ) {
235
+ console . log ( resp ) ;
236
+ const error = `${ resp . status } (${ resp . type } ) for ${ resp . url } ` ;
237
+ throw new Error ( error ) ;
238
+ }
239
+ return resp . blob ( )
240
+ } )
241
+ . then ( async ( blob ) => {
242
+ const text = await blob . text ( ) ;
243
+ const baseUrlFull = baseUrl + dirname ( file ) + "/" ;
244
+ let mdHTMLStr = DOMPurify . sanitize ( marked . parse ( text , { baseUrl : baseUrlFull , walkTokens : walkTokens } ) ) ;
245
+ contentE . innerHTML = mdHTMLStr ;
246
+ const mdHTML = ( new DOMParser ) . parseFromString ( mdHTMLStr , "text/html" ) ;
247
+ const selected = mdHTML . querySelectorAll ( "h2" ) ;
248
+ const tocE = document . getElementById ( "md-toc" ) ;
249
+ let ul = "<ul>" ;
250
+ for ( let i = 0 ; i < selected . length ; i ++ ) {
251
+ const f = selected [ i ] ;
252
+ let li = `<li><a href="#${ f . id } ">${ f . innerText } </a></li>` ;
253
+ ul += li ;
254
+ }
255
+ ul += "</ul>" ;
256
+ tocE . innerHTML = ul ;
257
+ return blob ;
258
+ } )
259
+ . catch ( ( error ) => {
260
+ contentE . innerHTML += `<div class="md-error">${ error } </div>` +
261
+ `<p>Please visit <code><a href="${ fileAbs } ">${ fileAbs } </a></code> directly.</p>` ;
262
+ } ) ;
263
+ } ;
264
+ window . onload = function ( ) {
265
+ let file = ( new URL ( document . location ) ) . searchParams . get ( "file" ) ;
266
+ if ( ! file ) file = files [ 0 ] ;
267
+ try {
268
+ render ( file ) ;
269
+ } catch ( error ) {
270
+ document . getElementById ( "md-content" ) . innerHTML += `<div class="md-error">${ error } </div>` ;
271
+ }
272
+ }
273
+ </ script >
274
+
275
+ </ html >
0 commit comments