Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
slapos
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Titouan Soulard
slapos
Commits
4056fa7e
Commit
4056fa7e
authored
Sep 27, 2020
by
Jérome Perrin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
software/theia: include a CSS to enable more fonts
parent
7803ee1c
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
328 additions
and
15 deletions
+328
-15
software/theia/buildout.hash.cfg
software/theia/buildout.hash.cfg
+9
-1
software/theia/instance.cfg.in
software/theia/instance.cfg.in
+20
-1
software/theia/preloadTemplate.html
software/theia/preloadTemplate.html
+6
-0
software/theia/slapos.css.in
software/theia/slapos.css.in
+260
-0
software/theia/software.cfg
software/theia/software.cfg
+21
-12
software/theia/test/test.py
software/theia/test/test.py
+12
-1
No files found.
software/theia/buildout.hash.cfg
View file @
4056fa7e
...
...
@@ -15,7 +15,7 @@
[instance]
filename = instance.cfg.in
md5sum =
f95354d4af4a78ad7fd11ebc9281ed19
md5sum =
3bc174f9ec19721ab21491eb51cc45b7
[yarn.lock]
filename = yarn.lock
...
...
@@ -24,3 +24,11 @@ md5sum = d058e73c3d90ac3da44734c2d47eac95
[python-language-server-requirements.txt]
filename = python-language-server-requirements.txt
md5sum = d2ce161244ce9ebce5295302a1b2a7df
[preloadTemplate.html]
filename = preloadTemplate.html
md5sum = 8157c22134200bd862a07c6521ebf799
[slapos.css.in]
filename = slapos.css.in
md5sum = 456dd5931e7c86456c69af062a2d2368
software/theia/instance.cfg.in
View file @
4056fa7e
...
...
@@ -54,7 +54,7 @@ template = inline:
root $${directory:frontend-static}
browse
proxy / $${theia-instance:base-url} {
except public $${favicon.ico:filename}
except
$${frontend-instance-fonts:folder-name} $${frontend-instance-slapos.css:folder-name}
public $${favicon.ico:filename}
}
proxy /services $${theia-instance:base-url} {
websocket
...
...
@@ -83,6 +83,24 @@ port = $${frontend-instance-config:port}
pidfile = $${directory:pidfiles}/$${:_buildout_section_name_}.pid
url = https://$${:hostname}:$${:port}/
[frontend-instance-fonts]
; XXX caddy 1 does not seem to serve different folders at different locations
; so we link fonts in static folder
recipe = plone.recipe.command
location = $${directory:frontend-static}/$${:folder-name}
folder-name = fonts
command =
mkdir $${:location}
ln -s ${source-code-pro-fonts:location} $${:location}/source-code-pro
ln -s ${jetbrains-mono-fonts:location} $${:location}/jetbrains-mono
stop-on-error = true
[frontend-instance-slapos.css]
recipe = slapos.recipe.template:jinja2
template = ${slapos.css.in:output}
rendered = $${directory:frontend-static}/$${:folder-name}/slapos.css
folder-name = css
[frontend-reload]
recipe = slapos.cookbook:wrapper
wrapper-path = $${directory:services}/$${:_buildout_section_name_}
...
...
@@ -323,3 +341,4 @@ project = $${:srv}/project
slapos = $${:srv}/slapos
frontend-static = $${:srv}/frontend-static
frontend-static-public = $${:frontend-static}/public
frontend-static-css = $${:frontend-static}/css
software/theia/preloadTemplate.html
0 → 100644
View file @
4056fa7e
<script>
let
link
=
document
.
createElement
(
'
link
'
);
link
.
rel
=
"
stylesheet
"
;
link
.
href
=
"
/css/slapos.css
"
;
document
.
head
.
appendChild
(
link
);
</script>
\ No newline at end of file
software/theia/slapos.css.in
0 → 100644
View file @
4056fa7e
/* Source Code Pro */
@font-face{
font-family: 'Source Code Pro';
font-weight: 200;
font-style: normal;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-ExtraLight.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-ExtraLight.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-ExtraLight.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-ExtraLight.ttf') format('truetype');
}
@font-face{
font-family: 'Source Code Pro';
font-weight: 200;
font-style: italic;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-ExtraLightIt.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-ExtraLightIt.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-ExtraLightIt.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-ExtraLightIt.ttf') format('truetype');
}
@font-face{
font-family: 'Source Code Pro';
font-weight: 300;
font-style: normal;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-Light.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-Light.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-Light.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-Light.ttf') format('truetype');
}
@font-face{
font-family: 'Source Code Pro';
font-weight: 300;
font-style: italic;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-LightIt.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-LightIt.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-LightIt.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-LightIt.ttf') format('truetype');
}
@font-face{
font-family: 'Source Code Pro';
font-weight: 400;
font-style: normal;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-Regular.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-Regular.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-Regular.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-Regular.ttf') format('truetype');
}
@font-face{
font-family: 'Source Code Pro';
font-weight: 400;
font-style: italic;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-It.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-It.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-It.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-It.ttf') format('truetype');
}
@font-face{
font-family: 'Source Code Pro';
font-weight: 500;
font-style: normal;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-Medium.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-Medium.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-Medium.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-Medium.ttf') format('truetype');
}
@font-face{
font-family: 'Source Code Pro';
font-weight: 500;
font-style: italic;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-MediumIt.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-MediumIt.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-MediumIt.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-MediumIt.ttf') format('truetype');
}
@font-face{
font-family: 'Source Code Pro';
font-weight: 600;
font-style: normal;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-Semibold.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-Semibold.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-Semibold.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-Semibold.ttf') format('truetype');
}
@font-face{
font-family: 'Source Code Pro';
font-weight: 600;
font-style: italic;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-SemiboldIt.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-SemiboldIt.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-SemiboldIt.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-SemiboldIt.ttf') format('truetype');
}
@font-face{
font-family: 'Source Code Pro';
font-weight: 700;
font-style: normal;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-Bold.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-Bold.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-Bold.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-Bold.ttf') format('truetype');
}
@font-face{
font-family: 'Source Code Pro';
font-weight: 700;
font-style: italic;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-BoldIt.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-BoldIt.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-BoldIt.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-BoldIt.ttf') format('truetype');
}
@font-face{
font-family: 'Source Code Pro';
font-weight: 900;
font-style: normal;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-Black.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-Black.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-Black.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-Black.ttf') format('truetype');
}
@font-face{
font-family: 'Source Code Pro';
font-weight: 900;
font-style: italic;
font-stretch: normal;
src: url('/fonts/source-code-pro/WOFF2/TTF/SourceCodePro-BlackIt.ttf.woff2') format('woff2'),
url('/fonts/source-code-pro/WOFF/OTF/SourceCodePro-BlackIt.otf.woff') format('woff'),
url('/fonts/source-code-pro/OTF/SourceCodePro-BlackIt.otf') format('opentype'),
url('/fonts/source-code-pro/TTF/SourceCodePro-BlackIt.ttf') format('truetype');
}
/* JetBrains Mono */
/* CSS come from https://github.com/paleite/typeface-jetbrains-mono/blob/6cbded1fa6283c29b9e5d93e5c70f5702e17bc68/index.css */
/* JetBrainsMono-Bold-Italic - © 2000-2020 JetBrains s.r.o. Developed with drive and IntelliJ IDEA. */
@font-face {
font-family: "JetBrains Mono";
font-style: italic;
font-weight: 700;
font-feature-settings: "calt" 1, "zero" 1;
font-display: swap;
src: url("/fonts/jetbrains-mono/web/eot/JetBrainsMono-Bold-Italic.eot") format("embedded-opentype"),
url("/fonts/jetbrains-mono/web/woff2/JetBrainsMono-Bold-Italic.woff2") format("woff2"),
url("/fonts/jetbrains-mono/web/woff/JetBrainsMono-Bold-Italic.woff") format("woff"),
url("/fonts/jetbrains-mono/ttf/JetBrainsMono-Bold-Italic.ttf") format("truetype");
}
/* JetBrainsMono-Bold - © 2000-2020 JetBrains s.r.o. Developed with drive and IntelliJ IDEA. */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 700;
font-feature-settings: "calt" 1, "zero" 1;
font-display: swap;
src: url("/fonts/jetbrains-mono/web/eot/JetBrainsMono-Bold.eot") format("embedded-opentype"),
url("/fonts/jetbrains-mono/web/woff2/JetBrainsMono-Bold.woff2") format("woff2"),
url("/fonts/jetbrains-mono/web/woff/JetBrainsMono-Bold.woff") format("woff"),
url("/fonts/jetbrains-mono/ttf/JetBrainsMono-Bold.ttf") format("truetype");
}
/* JetBrainsMono-ExtraBold-Italic - © 2000-2020 JetBrains s.r.o. Developed with drive and IntelliJ IDEA. */
@font-face {
font-family: "JetBrains Mono ExtraBold";
font-style: italic;
font-weight: 800;
font-feature-settings: "calt" 1, "zero" 1;
font-display: swap;
src: url("/fonts/jetbrains-mono/web/eot/JetBrainsMono-ExtraBold-Italic.eot") format("embedded-opentype"),
url("/fonts/jetbrains-mono/web/woff2/JetBrainsMono-ExtraBold-Italic.woff2") format("woff2"),
url("/fonts/jetbrains-mono/web/woff/JetBrainsMono-ExtraBold-Italic.woff") format("woff"),
url("/fonts/jetbrains-mono/ttf/JetBrainsMono-ExtraBold-Italic.ttf") format("truetype");
}
/* JetBrainsMono-ExtraBold - © 2000-2020 JetBrains s.r.o. Developed with drive and IntelliJ IDEA. */
@font-face {
font-family: "JetBrains Mono ExtraBold";
font-style: normal;
font-weight: 800;
font-feature-settings: "calt" 1, "zero" 1;
font-display: swap;
src: url("/fonts/jetbrains-mono/web/eot/JetBrainsMono-ExtraBold.eot") format("embedded-opentype"),
url("/fonts/jetbrains-mono/web/woff2/JetBrainsMono-ExtraBold.woff2") format("woff2"),
url("/fonts/jetbrains-mono/web/woff/JetBrainsMono-ExtraBold.woff") format("woff"),
url("/fonts/jetbrains-mono/ttf/JetBrainsMono-ExtraBold.ttf") format("truetype");
}
/* JetBrainsMono-Italic - © 2000-2020 JetBrains s.r.o. Developed with drive and IntelliJ IDEA. */
@font-face {
font-family: "JetBrains Mono";
font-style: italic;
font-weight: 400;
font-feature-settings: "calt" 1, "zero" 1;
font-display: swap;
src: url("/fonts/jetbrains-mono/web/eot/JetBrainsMono-Italic.eot") format("embedded-opentype"),
url("/fonts/jetbrains-mono/web/woff2/JetBrainsMono-Italic.woff2") format("woff2"),
url("/fonts/jetbrains-mono/web/woff/JetBrainsMono-Italic.woff") format("woff"),
url("/fonts/jetbrains-mono/ttf/JetBrainsMono-Italic.ttf") format("truetype");
}
/* JetBrainsMono-Medium-Italic - © 2000-2020 JetBrains s.r.o. Developed with drive and IntelliJ IDEA. */
@font-face {
font-family: "JetBrains Mono Medium";
font-style: italic;
font-weight: 500;
font-feature-settings: "calt" 1, "zero" 1;
font-display: swap;
src: url("/fonts/jetbrains-mono/web/eot/JetBrainsMono-Medium-Italic.eot") format("embedded-opentype"),
url("/fonts/jetbrains-mono/web/woff2/JetBrainsMono-Medium-Italic.woff2") format("woff2"),
url("/fonts/jetbrains-mono/web/woff/JetBrainsMono-Medium-Italic.woff") format("woff"),
url("/fonts/jetbrains-mono/ttf/JetBrainsMono-Medium-Italic.ttf") format("truetype");
}
/* JetBrainsMono-Medium - © 2000-2020 JetBrains s.r.o. Developed with drive and IntelliJ IDEA. */
@font-face {
font-family: "JetBrains Mono Medium";
font-style: normal;
font-weight: 500;
font-feature-settings: "calt" 1, "zero" 1;
font-display: swap;
src: url("/fonts/jetbrains-mono/web/eot/JetBrainsMono-Medium.eot") format("embedded-opentype"),
url("/fonts/jetbrains-mono/web/woff2/JetBrainsMono-Medium.woff2") format("woff2"),
url("/fonts/jetbrains-mono/web/woff/JetBrainsMono-Medium.woff") format("woff"),
url("/fonts/jetbrains-mono/ttf/JetBrainsMono-Medium.ttf") format("truetype");
}
/* JetBrainsMono-Regular - © 2000-2020 JetBrains s.r.o. Developed with drive and IntelliJ IDEA. */
@font-face {
font-family: "JetBrains Mono";
font-style: normal;
font-weight: 400;
font-feature-settings: "calt" 1, "zero" 1;
font-display: swap;
src: url("/fonts/jetbrains-mono/web/eot/JetBrainsMono-Regular.eot") format("embedded-opentype"),
url("/fonts/jetbrains-mono/web/woff2/JetBrainsMono-Regular.woff2") format("woff2"),
url("/fonts/jetbrains-mono/web/woff/JetBrainsMono-Regular.woff") format("woff"),
url("/fonts/jetbrains-mono/ttf/JetBrainsMono-Regular.ttf") format("truetype");
}
software/theia/software.cfg
View file @
4056fa7e
...
...
@@ -11,6 +11,7 @@ extends =
../../component/curl/buildout.cfg
../../component/coreutils/buildout.cfg
../../component/java-jdk/buildout.cfg
../../component/fonts/buildout.cfg
../../stack/slapos.cfg
../../stack/monitor/buildout.cfg
../../component/defaults.cfg
...
...
@@ -116,6 +117,12 @@ eggs =
supervisor
setuptools
[template-base]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:parts-directory}/${:_buildout_section_name_}
mode = 0644
[python-language-server]
version = 0.19.0
recipe = plone.recipe.command
...
...
@@ -127,11 +134,7 @@ location = ${buildout:parts-directory}/${:_buildout_section_name_}
stop-on-error = true
[python-language-server-requirements.txt]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:parts-directory}/${:_buildout_section_name_}
mode = 0644
<= template-base
[theia]
recipe = plone.recipe.command
...
...
@@ -152,10 +155,13 @@ uses = ${yarn.lock:recipe}
THEIA_DEFAULT_PLUGINS = ${:location}/plugins/
[yarn.lock]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:parts-directory}/${:_buildout_section_name_}
mode = 0644
<= template-base
[preloadTemplate.html]
<= template-base
[slapos.css.in]
<= template-base
[package.json]
recipe = slapos.recipe.template:jinja2
...
...
@@ -193,6 +199,11 @@ template =
"java.home": "${java-jdk:location}"
}
}
},
"generator": {
"config": {
"preloadTemplate": "${preloadTemplate.html:output}"
}
}
},
"dependencies": {
...
...
@@ -345,9 +356,7 @@ template =
[instance]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
mode = 0644
<= template-base
output = ${buildout:directory}/instance.cfg
[versions]
...
...
software/theia/test/test.py
View file @
4056fa7e
...
...
@@ -32,6 +32,7 @@ import logging
import
subprocess
import
tempfile
import
time
import
re
from
six.moves.urllib.parse
import
urlparse
,
urljoin
import
pexpect
...
...
@@ -81,6 +82,16 @@ class TestTheia(SlapOSInstanceTestCase):
self
.
assertEqual
(
requests
.
codes
.
ok
,
resp
.
status_code
)
self
.
assertTrue
(
resp
.
raw
)
# there is a CSS referencing fonts
css_text
=
requests
.
get
(
urljoin
(
authenticated_url
,
'/css/slapos.css'
),
verify
=
False
).
text
css_urls
=
re
.
findall
(
r'url\
([
\'"]+([^
\
)]+)[
\
'"
]
+
\
)
', css_text)
self.assertTrue(css_urls)
# and fonts are served
for url in css_urls:
resp = requests.get(urljoin(authenticated_url, url), verify=False)
self.assertEqual(requests.codes.ok, resp.status_code)
self.assertTrue(resp.raw)
def test_theia_slapos(self):
# Make sure we can use the shell and the integrated slapos command
process = pexpect.spawnu(
...
...
@@ -134,7 +145,7 @@ class TestTheia(SlapOSInstanceTestCase):
process
.
wait
()
def
test_theia_shell_execute_tasks
(
self
):
# shell needs to understand -c "com
am
nd" arguments for theia tasks feature
# shell needs to understand -c "com
ma
nd" arguments for theia tasks feature
test_file
=
'{}/test file'
.
format
(
self
.
computer_partition_root_path
)
subprocess
.
check_call
([
'{}/bin/theia-shell'
.
format
(
self
.
computer_partition_root_path
),
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment