aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Rifkin <51220084+jeremy-rifkin@users.noreply.github.com>2022-06-12 08:09:36 -0400
committerJeremy Rifkin <51220084+jeremy-rifkin@users.noreply.github.com>2022-06-12 08:09:36 -0400
commit306acc0f67890184cffbc65a0a383f01187c0155 (patch)
tree788aa4977efeb7f187641bd7cff34dc919e712df
parent7957fb514666d11d9dadc746047f71e87791523e (diff)
downloadcompiler-explorer-gh-3307.tar.gz
compiler-explorer-gh-3307.zip
Improvements to screenshot generation and site template configgh-3307
-rw-r--r--etc/config/site-templates.conf10
-rw-r--r--etc/scripts/generate_site_template_screenshots.js21
-rw-r--r--lib/handlers/site-templates.ts3
-rw-r--r--test/handlers/site-templates-tests.js2
-rw-r--r--views/resources/template_screenshots/TreeIDEMode.dark.pngbin147176 -> 147265 bytes
-rw-r--r--views/resources/template_screenshots/TreeIDEMode.darkplus.pngbin147582 -> 147418 bytes
-rw-r--r--views/resources/template_screenshots/TreeIDEMode.default.pngbin154477 -> 154846 bytes
7 files changed, 26 insertions, 10 deletions
diff --git a/etc/config/site-templates.conf b/etc/config/site-templates.conf
index 90fe5be23..f43f965e1 100644
--- a/etc/config/site-templates.conf
+++ b/etc/config/site-templates.conf
@@ -1,6 +1,6 @@
meta.screenshot_dimentions=1000x800
-Diff of Two Sources=z:OYLghAFBqd5TKALEBjA9gEwKYFFMCWALugE4A0BIEAZgQDbYB2AhgLbYgDkAjF%2BTXRMiAZVQtGIHgBYBQogFUAztgAKAD24AGfgCsp5eiyahUAUgBMAIUtXyKxqiIEh1ZpgDC6egFc2TA3cAGQImbAA5PwAjbFIQC3IAB3QlYhcmL19/A2TU5yEQsMi2GLiEh2wndJEiFlIiTL8AnntsR3ymGrqiQojo2Pj7WvrG7JalYZ7QvpKBiwBKe3QfUlROLksAZlDUXxwAajNNjwA3SpJSI9wzLQBBG9uT9AJMfcx0AH0ldA4PgHcyABrCChIjzI42O4PJ4vfaJUjoNZKJQfYjYNhKCAYJgTfYTTAgEBnJxkI4eUFXSwANn2xPmhwA7JDbvtWfsWD4SHiAF6HTYAEVplQAdKludgIODNsy2ftBKQIPjCWLsB8iPsCHzBVoIRq%2BR4ebqCLZbPSzEyHrLZe8vj9VQDSMDiWYAKxWY0u/lSmVs838h5%2Bh5cRb0bgu/gBLg6cjobgeE3WPHLVbYQ4WTZ8chEbTBxaAkAurSGbjSfhsAtFyPR2NcfhKEBF7NR4PkOCwFAYHD4YhkSjUOiMVgcbiZwTCMQSTgyOTCZRqTTN8j6BJGExoBN2CpVVwQdyjAIWFrBabFUogBlJFJpIT7%2BItXLXpi9U8DC9bjpdEbeJp31rtaqTM%2B/RxG%2Bky3oeQzdEBswgYs3wrGs3BbDseypmSxIXJSUJ3DCrw2t8vwOsCoLegGOHPK88KItgyKokQ6KYtiuJKkS5ykscFKbNcFg0nSjI%2Bqy8oQByXJomw%2BwgEKqBmhadxWmy%2BF2v8QIgvRbCkXJvoMv6ULaUGIZhhGOYxnGG5JghaHphY/BNjo8yLEg2AsDgcSSsWXCluQ5aFuQVb8DWdYNlmOb2eQ%2BbSC6wpUgAnDw0VaFSWhaC6FiHtFmzuZsRmLgFwXNosbbIGgPyJAwsR9liJVlXEuzGMAPCbFoLQDvRpD1hAUTGVEoR1AAniO/AYGwHDCAA8kw9D9YuOBsHVkjTQQpDnAQZz1ou2DqJUnLrJmoJtMZ9AEFEpB9V4ODGUQpAEOWvAtjQRjAEoABqBDYH8o2JMwA0zqI4iSNOY6KCoGjGfoLSrqYG6GEd9aQIs6CJB0a0ALSjVlf7LTue7fmM5DHkUwE5FeHS3vexPpNBZ7jG0mOdGBOPNBj2501BJ6E%2BM9NZIzEyswTMFSHByaIS0l3YDtLahlw4a%2BcZNbqAAHFSyNUtI%2By1SY%2BwNcKWjCjw%2BwQPG1i2OQ%2BzdhcaYZibXhsKVjCkBbPDzDZIWth2VV2xVQ22wM6v1Y1zUMK17WdYu3WsKQU2ZkNI1EONk3GTNc3rNGhBLVUq3GRtW30d9e2S9Gh3HadWDJzZV03Xwiz3Swj0vW9H1fbdP0Tv9siA3OIOLsuhh1euRvWNDUSw25CNI9wqPo%2B%2B6RuEwngM4Es%2BUwMZN5OkpOXqvBRs/z1P/kIn4NPPu%2B0wfS9xBz3Trzz9RnwLSwWYMoviwZUvZdW3AK0rKtqxDmubNrut9aGxsAPU2hBzZbASPsa23t7aQKdnlOyrsQCEBoDQCqgMW5TjbvIDuC4C5IHrODQhqCaBEF6p9IKpBCGDGoUoUh5DKFaBftLPyJkuD8gIGg/Ydc/ixH2J/ZWqtfZ/wAXrE4SgBGKyET/OqoidaZlsrmcgjlnIDDcvmF00hhSNXllodK0VorSAZAyPRDIqTuU8uWHgSUZY5W4IFBISjQqS2snY9%2BtZEHKLOG1ae0ggA
-Diff of Two Compilers=z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIApACYAQuYukl9ZATwDKjdAGFUtAK4sGIM6SuADJ4DJgAcj4ARpjEINIADqgKhE4MHt6%2B/qRJKY4CIWGRLDFx0naYDmlCBEzEBBk%2BfgEVVQI1dQSFEdGx8ba19Y1ZLYNdoT0lfZIAlLaoXsTI7BwA9KsA1AAqAJ4JmBs7C8QbaFgbCLGYpBskG7SoTOgbhhuYqqwJ9AB0JhoAgqECBsFABHLx1TAQIEbBg%2BGYbEwAdisAI26I2xEwBEWDFhPg2ACp8SwTABmVH/ZEAEQ4c1onAArLw/BwtKRUJw3NZrCDjstEWYyTxSARNHS5gBrECMjT6TiSFnijmcXgKEBysVsumkOCwJBoFgJOixciUQ3G%2BhxYBcMxcPh0AixdUQKLKqKhOo7Tgiw1sQQAeQYtG92tIWBYhmA4jD%2BCxVQAbph1WH3pUvE6fbwgZgGWHaHgosQvR4sMqCMQ8Cws3MqAZgAoAGp4TAAdwD%2B1ZIv4ghEYnYUhkgkUKnUYd09oMRhQPMs%2BkL6sgc1QCXyDBTAFoA2SNhvI0sEOTqQpJTsDJLMGrc5U1y4GO5PE09MEJsVSnpcqkBMM/PbP2vujfPp7VaNcOiGR8shA682gYcDxiKXo4hAsYfz0BQxkApCJDmBR%2BQHUUsRWHh6SZJUw05DhVAADgANg3WjJA2YBkGQDZbW%2BLgNggblLGsG5cEIO5zGFG4PCNE0ThErgZl4LUtDmCADVQCSrTNCALUklApxtSQNDlGhaCdYgXTdMMPWYYhQ19FT/QIIMQ2VCMoxjdk4xvPAkxTdk02QDNiOzQRc2VAsixLDAVnZCsqxrPh6ybFt207LMh2EURxEHHt5CUNRlV0AIdJnPi51CxcIGXVc0k3bdd33ZBDzJY9T3PS9bBg28IFcND7RfRCpmQnJki/dJIN/Qa8jSLD%2BvQ9rqlQ0aZvsMDMNfbCUM6bqBk6Kb3xk%2BZFmWPQK0wALSI4ZlSFZdlKJo%2BjGNOHT2Mkb4NBe7jeKsOcNkEogpKFe0NnEy1YkFMkzFk0VxUUpB8CoKh1KyvsMukLKR1y/MEHVSdMdhqgCD2dg5WITHsmJhRcfx/YNTOi6rt4SjqTwOGNmbNsQduhimJYtiOK4hMFA2Dn7uQR6pBel65KhqUZTlPNFUu5VKLVbJ5IleUODMcjrtVSHtRmOYkxMtJ4iAA
-Tree IDE Mode=z:OYLghAFBqd5QCxAFwE4FN0BoCWIIDGAtgIYDW6AgqsAM4gDkAtACIDCAspQNICiA%2BgCEAqgEkAMi34AVAJoAFXgFIAzCwBK6ADYB1HMgQt0AI1EA7AGYB7BlgJWiABxxb0qcSTPAAriWDpRABMQAiUAJkFwwTtvWmQHAHlvZEdkgDEXdDMSInQUBHR%2BdAAPdAJkkmNXLAtM%2Blh0QP0rVCCQADYazLaARgAWLtds3JBSHDMAOgJHRyxQBlscWnMCLW9AxsYABkXaDhJxgGUrb1QCPIYe3YTHLO3bLU9gNoWASiwIRubW4J7BgN%2BAFZ/sM8pxyOhxEtkLQJshisg5oxHKgrAArMrICC0BAkW60V5KLaUImUYgQ/hEcY4IjeIj8DAAR28OAwgQgADVeOpDqIEgA5ADUKgmgMJxNJJECgSKpXKyEqrmxuPxzJIGFJgq1gpxePQtAA9ARWat0FMZprtbr8QaMAQFV5XObHJatWNJtNHOKScSFTR0Mh%2BFpxmQgzhjKh1Th9cq9bQ1RridrBRYiMhAt7dis1htggwdrg9gczMdTud7oWbnd8w8nm1yRR3p8mvEfiAwv9ep1akMcnkMLQTmd9QaClotFY4QikQxSQAJbQTrCCgDuLS0gTAYFJpKYe6YpOkBUFvDMgVJWbMq3Wmxrhf2RyH5cu11uZgrjy89aiUSbX1bbQqJ2vwAJwgn2IA4JOnozpe165hWSwPiWT4XFclZvh%2BdZ5gwf4ti0bQDD2ALtls4EjFBEwILBhbZjeeYFkhxalsOjDoUsVbvnen7PDhrzvEs4IUPIqIYvaFZoiAfxmOgK4ZK4bRhD07xaIwgK2FxBZWIw0gYOggrhCo6HIPc/FYGQpGin0ADsIF9ICYRbICNl2c5WCqQwfQaRW2kLFg9BkSZNZNjAUChRASD2BsvD4aguD4MRoKjMWzo1FYZjIIcBAkK4UlEelyDCLQ6DyMUEkdO5TwhD%2BET%2BdomJQe%2BnxnmwVhrEQ75/FkgRQjJ/J0sYbggAAHFgjhWLQ%2BiNa17WdWNE1TelvXoP1RCDagI11a49qNYcfrIDNdJzcV23ILt%2B3Lat62bXE6oHW1R1Sf5F3jCtA1DcN7yDmWFyGeM8H6aobCpsgRotGaCCqMoEoSmEKj/TmgNhGElGQ8jO7EuMyCCu6ECvAZ1mREm2ogyAIAoljEDhGE8n6fYGVZDCIBKICbBmEohMcyw1PLv4gaBCQCp44SKhEyS1nc8SuHuWp3l3tp7qpUFOxNpFVjRbF8UQIlEFCZC0KwvCiLWBlWU5Xk/RpRlRUlWVd6SX8PEhKQFBbQ16X4N1h0dSA1lYN1l3vRtnTjZNZ3pd775%2B6Hi1mIHa1DZ0J3uyW%2B2R77bs7ele13fH11J2nD0%2B37t2oMgeeJ19qHIqJmKxvi3qkg2hRUmYNJ0gy6DMqyjSctyvICsKoqN8SUoyiUZQVFU6AQAYhQT/KiroK6gqUZ6K%2BK56I%2BUH6fNhmYobBhGUYxnPsqTwq08ryDGYXipstYJptjaXrUJxIb07K9LEUhOr6Axd8LWOsRgDlQoaMcE4pzGwKmbXKlsTaFWKqVcqHYnahAiFEfy1dZzEgXOOKwy41yoA3FuDGlB9wHmJEefSp5zxS3vgwdSj8fIgFAT9cBi5JxGywF/VWv8NaALwNrTISU14zCtplbKcD8rWyQXbAskkgJoJqtEZOWcmpeyLp1ICAdXpXUTvNMO00tFSSAjHcOcc9FBwqmoixOcy7px6EBWx51c5WITsHZ6d1HHOJen1ax7Qq4/UYH9K8iMDIqGBnEDAOQoY7jhgjG8ES2DRPGMAOJMNKBxGCCAVJXhBR7wFkLfGHMxbJmyWTHAFhonoByKvapVNkZsOHBw/BUDqYizKdqWIaTBSiGxqoFgOp0yVJqTkYw3gLD8H0G4QWLQgYEFxKgOJosV4YGQKcMwwycl5OABAfpEAqkEmXAc/iqgxZczvjLRhcstKQWguI3hHw1YCNbEAkREFUYSNgRbGRiDbblQGMojBtUXEe2aoERx/szwVw2tHBaFioXmMarCjOYLU7eJMX8dF9jy7uOuiXQus0nqlzxf4jxvsgmsVnAkiwZ50AWEFGkBICR%2BBzniSoDYtQZJMpZWyshoSAbJN2Rkn0WSRm5LQL0wpgsSB43OQKuG3UqlXI8kwp%2BWBtJfN4e8AoUohp43MiAPow0Jh9HNRay1lrrleSwEQEAgIyIat8rYAKPDTIfHCuFNWThMhxSEfYX1rgNrAB6FsICPZkBuHoBAYwFZjDjHVAATzYrYQNuQMoJDMFoFNd4NikEdBcAsTQ7RnQAG76grAvZIaFFgMw8gWI%2BkZUBJtahsCsUr7UvneBYR4dAOTRhXJxVN3ypG/IkTbZB9sQBKKqugyItUj71CgElEGWAK0bQYNZJxuF3hWEcBY%2BgzBsmDPnVERygomAJBUJe3t8RXX1XUZ7FqWLoU9XxUNP4yKI6vu/ZY8l11sWPrsUSx6QHTquLLqi7FoGfYwbcQBz9VLnzGT0lJBh6qWEMGKMNdoTB2h9AKQQAggow0TBvRANgKjly6UwAZOGfxBStSDW4ejKgVCvFsDqrAeqNgbUNRZQEIpnLtC2CBECYQQJbGssNLYTigWMFtfavoWwrLDRUCp5y6nNOdGdYwV1IBAoergLAJAJwUjJCATAsdeUJ1yPKkBNAmAcC/CwCuSMjhU0Yduc/RgSQLPYysIynDeGCNEZI2RijzHnDBrYxxrjpldW1L4/gBhSn2ztAmD0Ho6mwjtGy7l/LHY9N%2BTdU8kziAQDVreUI9UdB5CeG0IcBAVgVwasDTFwWjUGsyS0M11rXF0Idb9SAUNPQOzDeDf5/rbWR0L2oHQVh%2BowGjk4VA/2co9pNC4rYBBPzbMIMnfI2wDtKpeGqiC6IS74AQFXWmddQ0t07rMvuw9jAmAnrUGeiIF6r03qYHemwWDgkvmettnrTWWuzdB05i2bmPNeeuZh%2BWjBeBymSC0QUIX8OEeAMR0jPQJhhEFJR6jgpaNIyMpx91wU0u2Htex8j7Hmcs5Z8wlHpXDM05Vu8QThPAQC8F0LwXnQPIqB85q/T3Pd1GtsmahyTkXL2UcoCUXjAwj06klsJ1WGEu0%2BuRr9ndy/LcY3ZND2fQgA%3D%3D%3D
-LLVM Ir=g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,selection:(endColumn:18,endLineNumber:6,positionColumn:18,positionLineNumber:6,selectionStartColumn:18,selectionStartLineNumber:6,startColumn:18,startLineNumber:6),source:'int+sum(int*+arr,+int+n)+%7B%0A++++int+value+%3D+0%3B%0A++++for(int+i+%3D+0%3B+i+%3C+n%3B+i%2B%2B)+%7B%0A++++++++value+%2B%3D+arr%5Bi%5D%3B%0A++++%7D%0A++++return+value%3B%0A%7D'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:25.411059109631243,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:ir,i:(compilerName:'x86-64+clang+14.0.0',editorid:1,fontScale:14,fontUsePx:'0',j:1,selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),treeid:'1'),l:'5',n:'0',o:'LLVM+IR+Viewer+x86-64+clang+14.0.0+(Editor+%231,+Compiler+%231)',t:'0')),header:(),k:42.23569365874194,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:clang1400,filters:(b:'0',binary:'1',commentOnly:'0',demangle:'0',directives:'0',execute:'1',intel:'0',libraryCode:'0',trim:'1'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,libs:!(),options:'-O3+-march%3Dskylake',selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1,tree:'1'),l:'5',n:'0',o:'x86-64+clang+14.0.0+(C%2B%2B,+Editor+%231,+Compiler+%231)',t:'0')),k:32.353247231626824,l:'4',n:'0',o:'',s:0,t:'0')),l:'2',n:'0',o:'',t:'0')),version:4
-Preprocessor=g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,selection:(endColumn:1,endLineNumber:6,positionColumn:1,positionLineNumber:6,selectionStartColumn:1,selectionStartLineNumber:6,startColumn:1,startLineNumber:6),source:'%23define+MUL(x,+y)+(x+*+y)+%0A%0Aint+mystery(int+a,+int+b)+%7B%0A++++return+MUL(a+%2B+b,+2)%3B%0A%7D%0A'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:30.466941342614383,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:pp,i:(clang-format:'1',editorid:1,filter-headers:'0',fontScale:14,fontUsePx:'0',j:1,treeid:'1'),l:'5',n:'0',o:'Preprocessor+Output+x86-64+clang+14.0.0+(Editor+%231,+Compiler+%231)',t:'0')),header:(),k:42.496476357000276,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:clang1400,filters:(b:'0',binary:'1',commentOnly:'0',demangle:'0',directives:'0',execute:'1',intel:'0',libraryCode:'0',trim:'1'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,libs:!(),options:'',selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1,tree:'1'),l:'5',n:'0',o:'x86-64+clang+14.0.0+(C%2B%2B,+Editor+%231,+Compiler+%231)',t:'0')),k:27.036582300385337,l:'4',m:100,n:'0',o:'',s:0,t:'0')),l:'2',n:'0',o:'',t:'0')),version:4
+Diff of Two Sources=https://godbolt.org/#z:OYLghAFBqd5TKALEBjA9gEwKYFFMCWALugE4A0BIEAZgQDbYB2AhgLbYgDkAjF%2BTXRMiAZVQtGIHgBYBQogFUAztgAKAD24AGfgCsp5eiyahUAUgBMAIUtXyKxqiIEh1ZpgDC6egFc2TA3cAGQImbAA5PwAjbFIQC3IAB3QlYhcmL19/A2TU5yEQsMi2GLiEh2wndJEiFlIiTL8AnntsR3ymGrqiQojo2Pj7WvrG7JalYZ7QvpKBiwBKe3QfUlROLksAZlDUXxwAajNNjwA3SpJSI9wzLQBBG9uT9AJMfcx0AH0ldA4PgHcyABrCChIjzI42O4PJ4vfaJUjoNZKJQfYjYNhKCAYJgTfYTTAgEBnJxkI4eUFXSwANn2xPmhwA7JDbvtWfsWD4SHiAF6HTYAEVplQAdKludgIODNsy2ftBKQIPjCWLsB8iPsCHzBVoIRq%2BR4ebqCLZbPSzEyHrLZe8vj9VQDSMDiWYAKxWY0u/lSmVs838h5%2Bh5cRb0bgu/gBLg6cjobgeE3WPHLVbYQ4WTZ8chEbTBxaAkAurSGbjSfhsAtFyPR2NcfhKEBF7NR4PkOCwFAYHD4YhkSjUOiMVgcbiZwTCMQSTgyOTCZRqTTN8j6BJGExoBN2CpVVwQdyjAIWFrBabFUogBlJFJpIT7%2BItXLXpi9U8DC9bjpdEbeJp31rtaqTM%2B/RxG%2Bky3oeQzdEBswgYs3wrGs3BbDseypmSxIXJSUJ3DCrw2t8vwOsCoLegGOHPK88KItgyKokQ6KYtiuJKkS5ykscFKbNcFg0nSjI%2Bqy8oQByXJomw%2BwgEKqBmhadxWmy%2BF2v8QIgvRbCkXJvoMv6ULaUGIZhhGOYxnGG5JghaHphY/BNjo8yLEg2AsDgcSSsWXCluQ5aFuQVb8DWdYNlmOb2eQ%2BbSC6wpUgAnDw0VaFSWhaC6FiHtFmzuZsRmLgFwXNosbbIGgPyJAwsR9liJVlXEuzGMAPCbFoLQDvRpD1hAUTGVEoR1AAniO/AYGwHDCAA8kw9D9YuOBsHVkjTQQpDnAQZz1ou2DqJUnLrJmoJtMZ9AEFEpB9V4ODGUQpAEOWvAtjQRjAEoABqBDYH8o2JMwA0zqI4iSNOY6KCoGjGfoLSrqYG6GEd9aQIs6CJB0a0ALSjVlf7LTue7fmM5DHkUwE5FeHS3vexPpNBZ7jG0mOdGBOPNBj2501BJ6E%2BM9NZIzEyswTMFSHByaIS0l3YDtLahlw4a%2BcZNbqAAHFSyNUtI%2By1SY%2BwNcKWjCjw%2BwQPG1i2OQ%2BzdhcaYZibXhsKVjCkBbPDzDZIWth2VV2xVQ22wM6v1Y1zUMK17WdYu3WsKQU2ZkNI1EONk3GTNc3rNGhBLVUq3GRtW30d9e2S9Gh3HadWDJzZV03Xwiz3Swj0vW9H1fbdP0Tv9siA3OIOLsuhh1euRvWNDUSw25CNI9wqPo%2B%2B6RuEwngM4Es%2BUwMZN5OkpOXqvBRs/z1P/kIn4NPPu%2B0wfS9xBz3Trzz9RnwLSwWYMoviwZUvZdW3AK0rKtqxDmubNrut9aGxsAPU2hBzZbASPsa23t7aQKdnlOyrsQCEBoDQCqgMW5TjbvIDuC4C5IHrODQhqCaBEF6p9IKpBCGDGoUoUh5DKFaBftLPyJkuD8gIGg/Ydc/ixH2J/ZWqtfZ/wAXrE4SgBGKyET/OqoidaZlsrmcgjlnIDDcvmF00hhSNXllodK0VorSAZAyPRDIqTuU8uWHgSUZY5W4IFBISjQqS2snY9%2BtZEHKLOG1ae0ggA
+Diff of Two Compilers=https://godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIApACYAQuYukl9ZATwDKjdAGFUtAK4sGIM6SuADJ4DJgAcj4ARpjEINIADqgKhE4MHt6%2B/qRJKY4CIWGRLDFx0naYDmlCBEzEBBk%2BfgEVVQI1dQSFEdGx8ba19Y1ZLYNdoT0lfZIAlLaoXsTI7BwA9KsA1AAqAJ4JmBs7C8QbaFgbCLGYpBskG7SoTOgbhhuYqqwJ9AB0JhoAgqECBsFABHLx1TAQIEbBg%2BGYbEwAdisAI26I2xEwBEWDFhPg2ACp8SwTABmVH/ZEAEQ4c1onAArLw/BwtKRUJw3NZrCDjstEWYyTxSARNHS5gBrECMjT6TiSFnijmcXgKEBysVsumkOCwJBoFgJOixciUQ3G%2BhxYBcMxcPh0AixdUQKLKqKhOo7Tgiw1sQQAeQYtG92tIWBYhmA4jD%2BCxVQAbph1WH3pUvE6fbwgZgGWHaHgosQvR4sMqCMQ8Cws3MqAZgAoAGp4TAAdwD%2B1ZIv4ghEYnYUhkgkUKnUYd09oMRhQPMs%2BkL6sgc1QCXyDBTAFoA2SNhvI0sEOTqQpJTsDJLMGrc5U1y4GO5PE09MEJsVSnpcqkBMM/PbP2vujfPp7VaNcOiGR8shA682gYcDxiKXo4hAsYfz0BQxkApCJDmBR%2BQHUUsRWHh6SZJUw05DhVAADgANg3WjJA2YBkGQDZbW%2BLgNggblLGsG5cEIO5zGFG4PCNE0ThErgZl4LUtDmCADVQCSrTNCALUklApxtSQNDlGhaCdYgXTdMMPWYYhQ19FT/QIIMQ2VCMoxjdk4xvPAkxTdk02QDNiOzQRc2VAsixLDAVnZCsqxrPh6ybFt207LMh2EURxEHHt5CUNRlV0AIdJnPi51CxcIGXVc0k3bdd33ZBDzJY9T3PS9bBg28IFcND7RfRCpmQnJki/dJIN/Qa8jSLD%2BvQ9rqlQ0aZvsMDMNfbCUM6bqBk6Kb3xk%2BZFmWPQK0wALSI4ZlSFZdlKJo%2BjGNOHT2Mkb4NBe7jeKsOcNkEogpKFe0NnEy1YkFMkzFk0VxUUpB8CoKh1KyvsMukLKR1y/MEHVSdMdhqgCD2dg5WITHsmJhRcfx/YNTOi6rt4SjqTwOGNmbNsQduhimJYtiOK4hMFA2Dn7uQR6pBel65KhqUZTlPNFUu5VKLVbJ5IleUODMcjrtVSHtRmOYkxMtJ4iAA
+Tree IDE Mode=https://godbolt.org/#z:OYLghAFBqd5QCxAFwE4FN0BoCWIIDGAtgIYDW6AgqsAM4gDkAtACIDCAspQNICiA%2BgCEAqgEkAMi34AVAJoAFXgFIAzCwBK6ADYB1HMgQt0AI1EA7AGYB7BlgJWiABxxb0qcSTPAAriWDpRABMQAiUAJkFwwTtvWmQHAHlvZEdkgDEXdDMSInQUBHR%2BdAAPdAJkkmNXLAtM%2Blh0QP0rVCCQADYazLaARgAWLtds3JBSHDMAOgJHRyxQBlscWnMCLW9AxsYABkXaDhJxgGUrb1QCPIYe3YTHLO3bLU9gNoWASiwIRubW4J7BgN%2BAFZ/sM8pxyOhxEtkLQJshisg5oxHKgrAArMrICC0BAkW60V5KLaUImUYgQ/hEcY4IjeIj8DAAR28OAwgQgADVeOpDqIEgA5ADUKgmgMJxNJJECgSKpXKyEqrmxuPxzJIGFJgq1gpxePQtAA9ARWat0FMZprtbr8QaMAQFV5XObHJatWNJtNHOKScSFTR0Mh%2BFpxmQgzhjKh1Th9cq9bQ1RridrBRYiMhAt7dis1htggwdrg9gczMdTud7oWbnd8w8nm1yRR3p8mvEfiAwv9ep1akMcnkMLQTmd9QaClotFY4QikQxSQAJbQTrCCgDuLS0gTAYFJpKYe6YpOkBUFvDMgVJWbMq3Wmxrhf2RyH5cu11uZgrjy89aiUSbX1bbQqJ2vwAJwgn2IA4JOnozpe165hWSwPiWT4XFclZvh%2BdZ5gwf4ti0bQDD2ALtls4EjFBEwILBhbZjeeYFkhxalsOjDoUsVbvnen7PDhrzvEs4IUPIqIYvaFZoiAfxmOgK4ZK4bRhD07xaIwgK2FxBZWIw0gYOggrhCo6HIPc/FYGQpGin0ADsIF9ICYRbICNl2c5WCqQwfQaRW2kLFg9BkSZNZNjAUChRASD2BsvD4aguD4MRoKjMWzo1FYZjIIcBAkK4UlEelyDCLQ6DyMUEkdO5TwhD%2BET%2BdomJQe%2BnxnmwVhrEQ75/FkgRQjJ/J0sYbggAAHFgjhWLQ%2BiNa17WdWNE1TelvXoP1RCDagI11a49qNYcfrIDNdJzcV23ILt%2B3Lat62bXE6oHW1R1Sf5F3jCtA1DcN7yDmWFyGeM8H6aobCpsgRotGaCCqMoEoSmEKj/TmgNhGElGQ8jO7EuMyCCu6ECvAZ1mREm2ogyAIAoljEDhGE8n6fYGVZDCIBKICbBmEohMcyw1PLv4gaBCQCp44SKhEyS1nc8SuHuWp3l3tp7qpUFOxNpFVjRbF8UQIlEFCZC0KwvCiLWBlWU5Xk/RpRlRUlWVd6SX8PEhKQFBbQ16X4N1h0dSA1lYN1l3vRtnTjZNZ3pd775%2B6Hi1mIHa1DZ0J3uyW%2B2R77bs7ele13fH11J2nD0%2B37t2oMgeeJ19qHIqJmKxvi3qkg2hRUmYNJ0gy6DMqyjSctyvICsKoqN8SUoyiUZQVFU6AQAYhQT/KiroK6gqUZ6K%2BK56I%2BUH6fNhmYobBhGUYxnPsqTwq08ryDGYXipstYJptjaXrUJxIb07K9LEUhOr6Axd8LWOsRgDlQoaMcE4pzGwKmbXKlsTaFWKqVcqHYnahAiFEfy1dZzEgXOOKwy41yoA3FuDGlB9wHmJEefSp5zxS3vgwdSj8fIgFAT9cBi5JxGywF/VWv8NaALwNrTISU14zCtplbKcD8rWyQXbAskkgJoJqtEZOWcmpeyLp1ICAdXpXUTvNMO00tFSSAjHcOcc9FBwqmoixOcy7px6EBWx51c5WITsHZ6d1HHOJen1ax7Qq4/UYH9K8iMDIqGBnEDAOQoY7jhgjG8ES2DRPGMAOJMNKBxGCCAVJXhBR7wFkLfGHMxbJmyWTHAFhonoByKvapVNkZsOHBw/BUDqYizKdqWIaTBSiGxqoFgOp0yVJqTkYw3gLD8H0G4QWLQgYEFxKgOJosV4YGQKcMwwycl5OABAfpEAqkEmXAc/iqgxZczvjLRhcstKQWguI3hHw1YCNbEAkREFUYSNgRbGRiDbblQGMojBtUXEe2aoERx/szwVw2tHBaFioXmMarCjOYLU7eJMX8dF9jy7uOuiXQus0nqlzxf4jxvsgmsVnAkiwZ50AWEFGkBICR%2BBzniSoDYtQZJMpZWyshoSAbJN2Rkn0WSRm5LQL0wpgsSB43OQKuG3UqlXI8kwp%2BWBtJfN4e8AoUohp43MiAPow0Jh9HNRay1lrrleSwEQEAgIyIat8rYAKPDTIfHCuFNWThMhxSEfYX1rgNrAB6FsICPZkBuHoBAYwFZjDjHVAATzYrYQNuQMoJDMFoFNd4NikEdBcAsTQ7RnQAG76grAvZIaFFgMw8gWI%2BkZUBJtahsCsUr7UvneBYR4dAOTRhXJxVN3ypG/IkTbZB9sQBKKqugyItUj71CgElEGWAK0bQYNZJxuF3hWEcBY%2BgzBsmDPnVERygomAJBUJe3t8RXX1XUZ7FqWLoU9XxUNP4yKI6vu/ZY8l11sWPrsUSx6QHTquLLqi7FoGfYwbcQBz9VLnzGT0lJBh6qWEMGKMNdoTB2h9AKQQAggow0TBvRANgKjly6UwAZOGfxBStSDW4ejKgVCvFsDqrAeqNgbUNRZQEIpnLtC2CBECYQQJbGssNLYTigWMFtfavoWwrLDRUCp5y6nNOdGdYwV1IBAoergLAJAJwUjJCATAsdeUJ1yPKkBNAmAcC/CwCuSMjhU0Yduc/RgSQLPYysIynDeGCNEZI2RijzHnDBrYxxrjpldW1L4/gBhSn2ztAmD0Ho6mwjtGy7l/LHY9N%2BTdU8kziAQDVreUI9UdB5CeG0IcBAVgVwasDTFwWjUGsyS0M11rXF0Idb9SAUNPQOzDeDf5/rbWR0L2oHQVh%2BowGjk4VA/2co9pNC4rYBBPzbMIMnfI2wDtKpeGqiC6IS74AQFXWmddQ0t07rMvuw9jAmAnrUGeiIF6r03qYHemwWDgkvmettnrTWWuzdB05i2bmPNeeuZh%2BWjBeBymSC0QUIX8OEeAMR0jPQJhhEFJR6jgpaNIyMpx91wU0u2Htex8j7Hmcs5Z8wlHpXDM05Vu8QThPAQC8F0LwXnQPIqB85q/T3Pd1GtsmahyTkXL2UcoCUXjAwj06klsJ1WGEu0%2BuRr9ndy/LcY3ZND2fQgA%3D%3D%3D
+LLVM Ir=https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,selection:(endColumn:18,endLineNumber:6,positionColumn:18,positionLineNumber:6,selectionStartColumn:18,selectionStartLineNumber:6,startColumn:18,startLineNumber:6),source:'int+sum(int*+arr,+int+n)+%7B%0A++++int+value+%3D+0%3B%0A++++for(int+i+%3D+0%3B+i+%3C+n%3B+i%2B%2B)+%7B%0A++++++++value+%2B%3D+arr%5Bi%5D%3B%0A++++%7D%0A++++return+value%3B%0A%7D'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:25.411059109631243,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:ir,i:(compilerName:'x86-64+clang+14.0.0',editorid:1,fontScale:14,fontUsePx:'0',j:1,selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),treeid:'1'),l:'5',n:'0',o:'LLVM+IR+Viewer+x86-64+clang+14.0.0+(Editor+%231,+Compiler+%231)',t:'0')),header:(),k:42.23569365874194,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:clang1400,filters:(b:'0',binary:'1',commentOnly:'0',demangle:'0',directives:'0',execute:'1',intel:'0',libraryCode:'0',trim:'1'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,libs:!(),options:'-O3+-march%3Dskylake',selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1,tree:'1'),l:'5',n:'0',o:'x86-64+clang+14.0.0+(C%2B%2B,+Editor+%231,+Compiler+%231)',t:'0')),k:32.353247231626824,l:'4',n:'0',o:'',s:0,t:'0')),l:'2',n:'0',o:'',t:'0')),version:4
+Preprocessor=https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,selection:(endColumn:1,endLineNumber:6,positionColumn:1,positionLineNumber:6,selectionStartColumn:1,selectionStartLineNumber:6,startColumn:1,startLineNumber:6),source:'%23define+MUL(x,+y)+(x+*+y)+%0A%0Aint+mystery(int+a,+int+b)+%7B%0A++++return+MUL(a+%2B+b,+2)%3B%0A%7D%0A'),l:'5',n:'0',o:'C%2B%2B+source+%231',t:'0')),k:30.466941342614383,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:pp,i:(clang-format:'1',editorid:1,filter-headers:'0',fontScale:14,fontUsePx:'0',j:1,treeid:'1'),l:'5',n:'0',o:'Preprocessor+Output+x86-64+clang+14.0.0+(Editor+%231,+Compiler+%231)',t:'0')),header:(),k:42.496476357000276,l:'4',n:'0',o:'',s:0,t:'0'),(g:!((h:compiler,i:(compiler:clang1400,filters:(b:'0',binary:'1',commentOnly:'0',demangle:'0',directives:'0',execute:'1',intel:'0',libraryCode:'0',trim:'1'),flagsViewOpen:'1',fontScale:14,fontUsePx:'0',j:1,lang:c%2B%2B,libs:!(),options:'',selection:(endColumn:1,endLineNumber:1,positionColumn:1,positionLineNumber:1,selectionStartColumn:1,selectionStartLineNumber:1,startColumn:1,startLineNumber:1),source:1,tree:'1'),l:'5',n:'0',o:'x86-64+clang+14.0.0+(C%2B%2B,+Editor+%231,+Compiler+%231)',t:'0')),k:27.036582300385337,l:'4',m:100,n:'0',o:'',s:0,t:'0')),l:'2',n:'0',o:'',t:'0')),version:4
diff --git a/etc/scripts/generate_site_template_screenshots.js b/etc/scripts/generate_site_template_screenshots.js
index 28d24e64d..127c9e67e 100644
--- a/etc/scripts/generate_site_template_screenshots.js
+++ b/etc/scripts/generate_site_template_screenshots.js
@@ -77,6 +77,19 @@ function partition(array, filter) {
return [pass, fail];
}
+async function PromisePoolExecutor(jobs, max_concurrency) {
+ async function worker(iterator) {
+ for(const [_, job] of iterator) {
+ await job();
+ }
+ }
+ const iterator = jobs.entries();
+ const workers = new Array(max_concurrency).fill(iterator).map(worker);
+ await Promise.allSettled(workers);
+}
+
+// end utils
+
async function generate_screenshot(url, output_path, settings) {
const browser = await puppeteer.launch({
dumpio: true,
@@ -111,6 +124,7 @@ async function generate_screenshot(url, output_path, settings) {
.split("\n")
.filter(l => l !== "")
.map(splitProperty)
+ .map(pair => [pair[0], pair[1].replace(/^https:\/\/godbolt.org\/#/, "")])
.map(([name, data]) => [!name.startsWith("meta.") ? name.replaceAll(/[^a-z]/gi, "") : name, data]),
([name, _]) => name.startsWith("meta.")
);
@@ -128,12 +142,12 @@ async function generate_screenshot(url, output_path, settings) {
if(!fs.existsSync(output_dir)) {
fs.mkdirSync(output_dir, { recursive: true });
}
- const promises = [];
+ const jobs = [];
for(const [name, data] of templates) {
for(const [theme, colourScheme] of themes) {
const path = `${output_dir}/${name}.${theme}.png`;
if(!fs.existsSync(path)) {
- promises.push(generate_screenshot(
+ jobs.push(() => generate_screenshot(
`${godbolt}/e#${data}`,
path,
Object.assign(Object.assign({}, defaultSettings), {theme, colourScheme})
@@ -141,5 +155,6 @@ async function generate_screenshot(url, output_path, settings) {
}
}
}
- await Promise.all(promises);
+ // don't launch too many chrome instances concurrently
+ await PromisePoolExecutor(jobs, 4);
})();
diff --git a/lib/handlers/site-templates.ts b/lib/handlers/site-templates.ts
index 578a44aab..d40f25d81 100644
--- a/lib/handlers/site-templates.ts
+++ b/lib/handlers/site-templates.ts
@@ -54,7 +54,8 @@ export function loadSiteTemplates(configDir: string) {
.readFileSync(configDir + '/site-templates.conf', 'utf-8')
.split('\n')
.filter(l => l !== '')
- .map(splitProperty),
+ .map(splitProperty)
+ .map(pair => [pair[0], pair[1].replace(/^https:\/\/godbolt.org\/#/, '')]),
([name, _]) => name.startsWith('meta.'),
);
siteTemplates.meta = Object.fromEntries(meta);
diff --git a/test/handlers/site-templates-tests.js b/test/handlers/site-templates-tests.js
index 727d983ea..967cdb4d4 100644
--- a/test/handlers/site-templates-tests.js
+++ b/test/handlers/site-templates-tests.js
@@ -1,6 +1,6 @@
import {assert} from 'chai';
-import {loadSiteTemplates, getSiteTemplates} from '../../lib/handlers/site-templates';
+import {getSiteTemplates, loadSiteTemplates} from '../../lib/handlers/site-templates';
describe('Site Templates Backend', () => {
before(() => {
diff --git a/views/resources/template_screenshots/TreeIDEMode.dark.png b/views/resources/template_screenshots/TreeIDEMode.dark.png
index 349acd164..4539af4d3 100644
--- a/views/resources/template_screenshots/TreeIDEMode.dark.png
+++ b/views/resources/template_screenshots/TreeIDEMode.dark.png
Binary files differ
diff --git a/views/resources/template_screenshots/TreeIDEMode.darkplus.png b/views/resources/template_screenshots/TreeIDEMode.darkplus.png
index 72f7ba80d..866cf8f03 100644
--- a/views/resources/template_screenshots/TreeIDEMode.darkplus.png
+++ b/views/resources/template_screenshots/TreeIDEMode.darkplus.png
Binary files differ
diff --git a/views/resources/template_screenshots/TreeIDEMode.default.png b/views/resources/template_screenshots/TreeIDEMode.default.png
index 4f9e3e451..e0a24686f 100644
--- a/views/resources/template_screenshots/TreeIDEMode.default.png
+++ b/views/resources/template_screenshots/TreeIDEMode.default.png
Binary files differ