Skip to content

Commit d0b48cf

Browse files
Merge pull request #14 from opengrep/fix-wrong-rule-parsing
fix: wrong multi rule parsing
2 parents b705a4d + df72e96 commit d0b48cf

File tree

5 files changed

+29
-11
lines changed

5 files changed

+29
-11
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "opengrep-playground",
33
"productName": "opengrep-playground",
4-
"version": "1.1.0",
4+
"version": "1.1.1",
55
"description": "Opengrep Playgorund Editor",
66
"main": ".vite/build/main.js",
77
"scripts": {

src/components/RuleEditor.vue

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,20 +49,38 @@ watch(() => store.ruleEditorCode, (newCode) => {
4949
function handleCodeChange(code) {
5050
const parsedYamlCode = yaml.load(code);
5151
if (!parsedYamlCode || !parsedYamlCode.rules || parsedYamlCode.rules.length === 0) {
52+
// when parsed yaml is empty, reset the normalized rule and original rule and disable binary run
53+
store.ruleEditorCode = {
54+
originalRule: code,
55+
normalizedRule: code
56+
};
57+
// Disable the eval button if the rule editor is empty.
58+
// Running the binary by clicking on the evaluate button doesn't make sense when no rule is configured.
59+
store.disableEvalButton = true;
5260
return null;
5361
}
54-
const { paths, ...rest } = parsedYamlCode.rules[0];
5562
56-
store.languageDetails = getLanguageDetails(rest);
63+
const rulesArray = parsedYamlCode.rules.reduce((accumulator, rule) => {
64+
const { paths, ...rest } = rule;
65+
66+
const detectedLanguage = getLanguageDetails(rest);
67+
if (detectedLanguage) {
68+
store.languageDetails = detectedLanguage
69+
}
70+
71+
accumulator.push(rest)
72+
return accumulator;
73+
}, []);
5774
5875
store.ruleEditorCode = {
5976
originalRule: code,
6077
normalizedRule: yaml.dump({
61-
...parsedYamlCode,
62-
rules: [{ ...rest }]
78+
rules: rulesArray
6379
})
6480
};
65-
store.disableBinaryRun = !store.languageDetails;
81+
82+
// Enable the eval button if the rule editor is not empty
83+
store.disableEvalButton = false;
6684
emit('ruleEditorUpdated');
6785
};
6886

src/components/RuleResults.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<div class="results-header">
33
<h3>Results</h3>
4-
<button @click="handleRunBinary" :class="{ 'disabled': store.disableBinaryRun }">Evaluate</button>
4+
<button @click="handleRunBinary" :class="{ 'disabled': store.disableEvalButton }">Evaluate</button>
55
</div>
66

77
<div class="results-container">
@@ -97,7 +97,7 @@ onMounted(async () => {
9797
9898
9999
async function handleRunBinary() {
100-
if (!store.ruleEditorCode) return;
100+
if (!store.ruleEditorCode || store.disableEvalButton) return;
101101
102102
isScanLoading.value = true;
103103
isTestLoading.value = true;

src/store.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,5 @@ export const store = reactive({
1818
codeEditorCode: '',
1919
codeEditorDebugLocation: null,
2020
mustNotMatchTestCases: [],
21-
disableBinaryRun: true,
21+
disableEvalButton: true,
2222
});

0 commit comments

Comments
 (0)