From 5c3f54057a0d63ee964753e1b8bf50a04082b13a Mon Sep 17 00:00:00 2001 From: Konrad Borowski Date: Sat, 21 Dec 2019 18:13:43 +0100 Subject: [PATCH 1/7] Automatically clear CI cache --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8e4f345..4f2d6a4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,6 +15,7 @@ build:release: &build script: - &init rustc --version && cargo --version - cargo build --release --verbose + - &clean_cargo cargo install cargo-cache --git https://github.com/matthiaskrgr/cargo-cache --no-default-features --features ci-autoclean && cargo-cache artifacts: paths: - languages.json @@ -38,6 +39,7 @@ test:stable: &test script: - *init - DATABASE_URL=postgresql://user:password@postgres/db cargo test --verbose --features=database_tests + - *clean_cargo cache: key: ${CI_JOB_NAME} paths: From b62261cacb521e5203c08331147e5625c0c3e7f4 Mon Sep 17 00:00:00 2001 From: Konrad Borowski Date: Sat, 21 Dec 2019 19:52:46 +0100 Subject: [PATCH 2/7] Ensure no monaco-editor-webpack-plugin updates It doesn't follow semver. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1a59de0..06c9a23 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "codemirror": "^5.49.2", "css-loader": "^3.3.0", "monaco-editor": "^0.18.1", - "monaco-editor-webpack-plugin": "^1.7.0", + "monaco-editor-webpack-plugin": "1.7.0", "prismjs": "^1.17.1", "style-loader": "^1.0.1", "ts-loader": "^6.2.1", From a29e5be6b4d08efba1d85b6f97da6f47adc0bc40 Mon Sep 17 00:00:00 2001 From: Konrad Borowski Date: Sun, 22 Dec 2019 14:56:05 +0100 Subject: [PATCH 3/7] Use correct language identifier for Python 3 --- js/views/editor-types/monaco/monaco.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/views/editor-types/monaco/monaco.ts b/js/views/editor-types/monaco/monaco.ts index ef6c617..08c42ec 100644 --- a/js/views/editor-types/monaco/monaco.ts +++ b/js/views/editor-types/monaco/monaco.ts @@ -42,7 +42,7 @@ const languageMap = { plaintext: null, postgresql: 'sql', python2: 'python', - python3: 'python', + python: 'python', raku: null, rust: 'rust', sh: 'shell', From 44299b2998c08237511e609baa0a73f607a5e827 Mon Sep 17 00:00:00 2001 From: Konrad Borowski Date: Sun, 22 Dec 2019 15:13:02 +0100 Subject: [PATCH 4/7] Hide editor on input change --- js/views/editor/editor.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/js/views/editor/editor.ts b/js/views/editor/editor.ts index 298bb4d..c9162eb 100644 --- a/js/views/editor/editor.ts +++ b/js/views/editor/editor.ts @@ -100,6 +100,7 @@ class Editor { } changeToLookLikeNewPaste() { + this.clearOutput() if (this.autodeleteText) { this.autodeleteText.style.display = 'none' } @@ -141,8 +142,7 @@ class Editor { } async run(wrapper, compilerOptions) { - this.output.clear() - this.editor.update() + this.clearOutput() if (this.abortEval) { this.abortEval.abort() } @@ -180,6 +180,11 @@ class Editor { this.output.display(wrapper, response) this.editor.update() } + + clearOutput() { + this.output.clear() + this.editor.update() + } } export default function createEditor(form) { From 274e904cab4430417c2d035d732ffe5f9be63f2b Mon Sep 17 00:00:00 2001 From: Konrad Borowski Date: Mon, 23 Dec 2019 01:32:30 +0100 Subject: [PATCH 5/7] Use csc (C# compiler) directly dotnet is really slow. --- languages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages.json b/languages.json index 68aeca8..392690f 100644 --- a/languages.json +++ b/languages.json @@ -73,7 +73,7 @@ { "identifier": "netcore", "label": "Run", - "code": "dotnet new console &>/dev/null; mv code Program.cs; dotnet run %s" + "code": "ln -fst . /opt/microsoft/home/csharp/bin/Debug/netcoreapp*/*; dotnet /usr/lib64/dotnet/sdk/*/Roslyn/bincore/csc.dll %s code @/opt/microsoft/home/csharp/csopts.txt >&2; dotnet project.dll" } ] } From 880e66e8ed8dbcc511b5c819979d4c99e96a8db1 Mon Sep 17 00:00:00 2001 From: Konrad Borowski Date: Sun, 22 Dec 2019 23:00:56 +0100 Subject: [PATCH 6/7] Run sandbox tests in GitLab CI --- .gitlab-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4f2d6a4..3eec551 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -31,6 +31,8 @@ test:stable: &test stage: test services: - postgres + - name: registry.gitlab.com/pastebin.run/sandbox/master + alias: sandbox variables: POSTGRES_DB: db POSTGRES_USER: user @@ -38,7 +40,7 @@ test:stable: &test image: rust:latest script: - *init - - DATABASE_URL=postgresql://user:password@postgres/db cargo test --verbose --features=database_tests + - DATABASE_URL=postgresql://user:password@postgres/db SANDBOX_URL=http://sandbox:8888 cargo test --verbose --features=database_tests,sandbox_tests - *clean_cargo cache: key: ${CI_JOB_NAME} From 75159ae68785366e8049def54f4309cc0e95f2de Mon Sep 17 00:00:00 2001 From: Konrad Borowski Date: Mon, 23 Dec 2019 10:31:41 +0100 Subject: [PATCH 7/7] Implement a spinner --- js/views/editor/editor.ts | 11 ++++------- js/views/editor/output.ts | 10 +++++++++- js/views/editor/spinner.css | 18 ++++++++++++++++++ 3 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 js/views/editor/spinner.css diff --git a/js/views/editor/editor.ts b/js/views/editor/editor.ts index c9162eb..3c806a3 100644 --- a/js/views/editor/editor.ts +++ b/js/views/editor/editor.ts @@ -100,7 +100,8 @@ class Editor { } changeToLookLikeNewPaste() { - this.clearOutput() + this.output.clear() + this.editor.update() if (this.autodeleteText) { this.autodeleteText.style.display = 'none' } @@ -142,7 +143,8 @@ class Editor { } async run(wrapper, compilerOptions) { - this.clearOutput() + this.output.spin() + this.editor.update() if (this.abortEval) { this.abortEval.abort() } @@ -180,11 +182,6 @@ class Editor { this.output.display(wrapper, response) this.editor.update() } - - clearOutput() { - this.output.clear() - this.editor.update() - } } export default function createEditor(form) { diff --git a/js/views/editor/output.ts b/js/views/editor/output.ts index da50498..28b64f8 100644 --- a/js/views/editor/output.ts +++ b/js/views/editor/output.ts @@ -1,5 +1,5 @@ +import './spinner.css' import { Wrapper } from './types' -import { SplitChunksPlugin } from 'webpack' const filterRegex = /(?:\t\.(?:text|file|section|globl|p2align|type|cfi_.*|size|section)\b|.Lfunc_end).*\n?/g @@ -46,6 +46,14 @@ export default class Output { this.update() } + spin() { + this.output.textContent = '' + const spinner = document.createElement('div') + spinner.className = 'spinner' + this.output.append(spinner) + this.split.append(this.outputContainer) + } + update() { const { stdout, stderr, status } = this.json this.clear() diff --git a/js/views/editor/spinner.css b/js/views/editor/spinner.css new file mode 100644 index 0000000..a2eae0c --- /dev/null +++ b/js/views/editor/spinner.css @@ -0,0 +1,18 @@ +@keyframes spinner { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} + +.spinner { + animation: 1s linear infinite spinner; + border: solid 3px #f5f2f0; + border-bottom-color: #c7c75c; + border-radius: 50%; + width: 50px; + height: 50px; +}