From dd2299350ddacfb4f93f4d3e087995d490cbc118 Mon Sep 17 00:00:00 2001 From: Tim Jacomb Date: Sun, 20 Aug 2023 16:25:30 +0100 Subject: [PATCH] Integrate with Prism API plugin --- plugin/pom.xml | 5 + .../plugins/casc/ConfigurationAsCode.java | 6 + .../casc/ConfigurationAsCode/viewExport.jelly | 9 +- .../io/jenkins/plugins/casc/assets/prism.css | 126 ------------------ .../io/jenkins/plugins/casc/assets/prism.js | 4 - 5 files changed, 15 insertions(+), 135 deletions(-) delete mode 100644 plugin/src/main/resources/io/jenkins/plugins/casc/assets/prism.css delete mode 100644 plugin/src/main/resources/io/jenkins/plugins/casc/assets/prism.js diff --git a/plugin/pom.xml b/plugin/pom.xml index e4d910a414..991fe9d0d9 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -78,6 +78,11 @@ io.jenkins.plugins commons-text-api + + io.jenkins.plugins + prism-api + 1.29.0-7-rc295.1064eb_c55f37 + io.jenkins.plugins snakeyaml-api diff --git a/plugin/src/main/java/io/jenkins/plugins/casc/ConfigurationAsCode.java b/plugin/src/main/java/io/jenkins/plugins/casc/ConfigurationAsCode.java index ccd42c3640..5046908839 100644 --- a/plugin/src/main/java/io/jenkins/plugins/casc/ConfigurationAsCode.java +++ b/plugin/src/main/java/io/jenkins/plugins/casc/ConfigurationAsCode.java @@ -31,6 +31,7 @@ import io.jenkins.plugins.casc.model.Source; import io.jenkins.plugins.casc.yaml.YamlSource; import io.jenkins.plugins.casc.yaml.YamlUtils; +import io.jenkins.plugins.prism.PrismConfiguration; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; @@ -484,6 +485,11 @@ public void doViewExport(StaplerRequest req, StaplerResponse res) throws Excepti req.getView(this, "viewExport.jelly").forward(req, res); } + @Restricted(NoExternalUse.class) + public PrismConfiguration getPrismConfiguration() { + return PrismConfiguration.getInstance(); + } + @Restricted(NoExternalUse.class) public void doReference(StaplerRequest req, StaplerResponse res) throws Exception { if (!Jenkins.get().hasPermission(Jenkins.SYSTEM_READ)) { diff --git a/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/viewExport.jelly b/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/viewExport.jelly index 7396325583..c0c6305eb2 100644 --- a/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/viewExport.jelly +++ b/plugin/src/main/resources/io/jenkins/plugins/casc/ConfigurationAsCode/viewExport.jelly @@ -1,11 +1,10 @@ - + - + + +
       ${export}
     
diff --git a/plugin/src/main/resources/io/jenkins/plugins/casc/assets/prism.css b/plugin/src/main/resources/io/jenkins/plugins/casc/assets/prism.css deleted file mode 100644 index e6db082604..0000000000 --- a/plugin/src/main/resources/io/jenkins/plugins/casc/assets/prism.css +++ /dev/null @@ -1,126 +0,0 @@ -/* PrismJS 1.16.0 -https://prismjs.com/download.html#themes=prism-okaidia&languages=yaml */ -/** - * okaidia theme for JavaScript, CSS and HTML - * Loosely based on Monokai textmate theme by http://www.monokai.nl/ - * @author ocodia - */ - -code.language-yaml, -pre.language-yaml { - color: #f8f8f2; - background: none; - text-shadow: 0 1px rgba(0, 0, 0, 0.3); - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - font-size: 1em; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - - -webkit-hyphens: none; - -moz-hyphens: none; - -ms-hyphens: none; - hyphens: none; -} - -/* Code blocks */ -pre.language-yaml { - padding: 1em; - margin: .5em 0; - overflow: auto; - border-radius: 0.3em; -} - -:not(pre) > code.language-yaml, -pre.language-yaml { - background: #272822; -} - -/* Inline code */ -:not(pre) > code.language-yaml { - padding: .1em; - border-radius: .3em; - white-space: normal; -} - -.token.comment, -.token.prolog, -.token.doctype, -.token.cdata { - color: slategray; -} - -.token.punctuation { - color: #f8f8f2; -} - -.namespace { - opacity: .7; -} - -.token.property, -.token.tag, -.token.constant, -.token.symbol, -.token.deleted { - color: #f92672; -} - -.token.boolean, -.token.number { - color: #ae81ff; -} - -.token.selector, -.token.attr-name, -.token.string, -.token.char, -.token.builtin, -.token.inserted { - color: #a6e22e; -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string, -.token.variable { - color: #f8f8f2; -} - -.token.atrule, -.token.attr-value, -.token.function, -.token.class-name { - color: #e6db74; -} - -.token.keyword { - color: #66d9ef; -} - -.token.regex, -.token.important { - color: #fd971f; -} - -.token.important, -.token.bold { - font-weight: bold; -} -.token.italic { - font-style: italic; -} - -.token.entity { - cursor: help; -} - diff --git a/plugin/src/main/resources/io/jenkins/plugins/casc/assets/prism.js b/plugin/src/main/resources/io/jenkins/plugins/casc/assets/prism.js deleted file mode 100644 index 9ac07ec02c..0000000000 --- a/plugin/src/main/resources/io/jenkins/plugins/casc/assets/prism.js +++ /dev/null @@ -1,4 +0,0 @@ -/* PrismJS 1.16.0 -https://prismjs.com/download.html#themes=prism-okaidia&languages=yaml */ -var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(g){var c=/\blang(?:uage)?-([\w-]+)\b/i,a=0,C={manual:g.Prism&&g.Prism.manual,disableWorkerMessageHandler:g.Prism&&g.Prism.disableWorkerMessageHandler,util:{encode:function(e){return e instanceof M?new M(e.type,C.util.encode(e.content),e.alias):Array.isArray(e)?e.map(C.util.encode):e.replace(/&/g,"&").replace(/e.length)return;if(!(k instanceof M)){if(f&&y!=a.length-1){if(c.lastIndex=v,!(x=c.exec(e)))break;for(var b=x.index+(h?x[1].length:0),w=x.index+x[0].length,A=y,P=v,O=a.length;A"+t.content+""},!g.document)return g.addEventListener&&(C.disableWorkerMessageHandler||g.addEventListener("message",function(e){var a=JSON.parse(e.data),t=a.language,n=a.code,r=a.immediateClose;g.postMessage(C.highlight(n,C.languages[t],t)),r&&g.close()},!1)),C;var e=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return e&&(C.filename=e.src,C.manual||e.hasAttribute("data-manual")||("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(C.highlightAll):window.setTimeout(C.highlightAll,16):document.addEventListener("DOMContentLoaded",C.highlightAll))),C}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism); -Prism.languages.yaml={scalar:{pattern:/([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/,lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:/(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/,lookbehind:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?)(?=[ \t]*(?:$|,|]|}))/m,lookbehind:!0,alias:"number"},boolean:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},null:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im,lookbehind:!0,alias:"important"},string:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}|\s*#))/m,lookbehind:!0,greedy:!0},number:{pattern:/([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im,lookbehind:!0},tag:/![^\s]+/,important:/[&*][\w]+/,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},Prism.languages.yml=Prism.languages.yaml;