Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions bucket/osmonitor.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"version": "10.6.23",
"description": "Centralized IT administration and network management console for enterprise LANs (10-Day Trial Version).",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Link the required package-request issue for this new manifest.

This is a newly added manifest, but the provided PR context does not show a linked issue number/URL in the description or PR body. Please add one.

Use:
https://github.com/ScoopInstaller/Extras/issues/new?labels=package-request&template=package-request.yml&title=%5BRequest%5D%3A+

Also see:

As per coding guidelines, for a newly added manifest you must include a linked package request issue in the description or PR body.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@bucket/osmonitor.json` at line 3, The new manifest (bucket/osmonitor.json) is
missing a linked package-request issue in its description/PR body; update the
"description" field or the PR body to include the required package-request URL
(use the provided template URL
https://github.com/ScoopInstaller/Extras/issues/new?labels=package-request&template=package-request.yml&title=%5BRequest%5D%3A+)
or explicitly paste the created issue number/URL so the manifest addition for
osmonitor is traceable and complies with the CONTRIBUTING guidelines.

"homepage": "https://www.os-monitor.com",
"license": "Shareware",
"url": "https://www.os-monitor.com/OsMonitorServerSetup10.6.23.exe",
"hash": "51f1371c90667ac4f80a7597e777260dd83e4893a70c2c7276fbc7ac8c2999fc",
Comment on lines +2 to +7

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add checkver/autoupdate for the versioned download URL.

The top-level url hardcodes 10.6.23, but there is no autoupdate mapping to parameterize that path. This will break automated update flow for future releases.

Suggested structure
 {
     "version": "10.6.23",
@@
-    "url": "https://www.os-monitor.com/OsMonitorServerSetup10.6.23.exe",
+    "url": "https://www.os-monitor.com/OsMonitorServerSetup10.6.23.exe",
     "hash": "51f1371c90667ac4f80a7597e777260dd83e4893a70c2c7276fbc7ac8c2999fc",
+    "checkver": {
+        "url": "https://www.os-monitor.com",
+        "regex": "OsMonitorServerSetup([\\d.]+)\\.exe"
+    },
+    "autoupdate": {
+        "url": "https://www.os-monitor.com/OsMonitorServerSetup$version.exe"
+    },

As per coding guidelines, “If the top-level url contains a version number, ensure these paths are properly parameterized in the autoupdate block so future automated updates won't miss them.”

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"version": "10.6.23",
"description": "Centralized IT administration and network management console for enterprise LANs (10-Day Trial Version).",
"homepage": "https://www.os-monitor.com",
"license": "Shareware",
"url": "https://www.os-monitor.com/OsMonitorServerSetup10.6.23.exe",
"hash": "51f1371c90667ac4f80a7597e777260dd83e4893a70c2c7276fbc7ac8c2999fc",
"version": "10.6.23",
"description": "Centralized IT administration and network management console for enterprise LANs (10-Day Trial Version).",
"homepage": "https://www.os-monitor.com",
"license": "Shareware",
"url": "https://www.os-monitor.com/OsMonitorServerSetup10.6.23.exe",
"hash": "51f1371c90667ac4f80a7597e777260dd83e4893a70c2c7276fbc7ac8c2999fc",
"checkver": {
"url": "https://www.os-monitor.com",
"regex": "OsMonitorServerSetup([\\d.]+)\\.exe"
},
"autoupdate": {
"url": "https://www.os-monitor.com/OsMonitorServerSetup$version.exe"
},
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@bucket/osmonitor.json` around lines 2 - 7, The package metadata hardcodes the
version in "url" (currently
"https://www.os-monitor.com/OsMonitorServerSetup10.6.23.exe") but lacks a
checkver/autoupdate mapping; update the "url" to use a parameterized version
token (matching the "version" field) and add an "autoupdate" block plus a
"checkver" pattern so the updater can substitute the new version into the
download path; specifically modify the top-level "url" to reference the version
token used by the manifest and add an "autoupdate" entry that maps the version
token into the filename (and a corresponding checkver regex/source) so
OsMonitorServerSetup{version}.exe will be discovered and downloaded
automatically.

"installer": {
"args": [
"/VERYSILENT",
"/SUPPRESSMSGBOXES",
"/NORESTART",
"/SP-",
"/DIR="$dir""

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify manifest parses as valid JSON
jq . bucket/osmonitor.json

Repository: ScoopInstaller/Extras

Length of output: 124


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Lines 1-60 of bucket/osmonitor.json =="
nl -ba bucket/osmonitor.json | sed -n '1,60p'

echo
echo "== Search for key fields in bucket/osmonitor.json =="
rg -n --hidden --no-ignore bucket/osmonitor.json -S "autoupdate|description|extract_dir|architecture\\.|^\\s*url\\s*:|\"url\"\\s*:|/OsMonitorServerSetup|DIR\\\"|\\$dir"

echo
echo "== Line ending check (CRLF vs LF) =="
python3 - <<'PY'
from pathlib import Path
p = Path("bucket/osmonitor.json")
b = p.read_bytes()
crlf = b.count(b"\r\n")
lf = b.count(b"\n")
print("bytes:", len(b))
print("CRLF count:", crlf)
print("LF count:", lf)
print("Has any bare CR (\\r not part of CRLF):", (b.count(b"\r") - crlf) > 0)
PY

Repository: ScoopInstaller/Extras

Length of output: 168


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Exact content of bucket/osmonitor.json with line numbers (lines 1-40) =="
python3 - <<'PY'
from pathlib import Path
p = Path("bucket/osmonitor.json")
lines = p.read_text(encoding="utf-8", errors="replace").splitlines()
for i in range(1, min(41, len(lines)+1)):
    print(f"{i:>3}: {lines[i-1]}")
PY

echo
echo "== Search key fields =="
python3 - <<'PY'
from pathlib import Path
import re
text = Path("bucket/osmonitor.json").read_text(encoding="utf-8", errors="replace")
patterns = [
    r'"autoupdate"\s*:',
    r'"description"\s*:',
    r'architecture\.[^.]+\.url',
    r'(^\s*url\s*:)',
    r'/OsMonitorServerSetup',
    r'DIR\"|DIR"',
    r'\$dir\b',
    r'OsMonitorServerSetup\d+(\.\d+)*'
]
for pat in patterns:
    m = re.search(pat, text, flags=re.M)
    print(f"{pat}: {'MATCH' if m else 'no match'}")
PY

echo
echo "== Line ending check (CRLF vs LF) =="
python3 - <<'PY'
from pathlib import Path
b = Path("bucket/osmonitor.json").read_bytes()
crlf = b.count(b"\r\n")
lf = b.count(b"\n")
bare_cr = b.count(b"\r") - crlf
print("bytes:", len(b))
print("CRLF count:", crlf)
print("LF count:", lf)
print("Has bare CR:", bare_cr > 0, "(bare_cr_count=", bare_cr, ")")
PY

echo
echo "== Show raw bytes for line 14 (to pinpoint the JSON issue) =="
python3 - <<'PY'
from pathlib import Path
b = Path("bucket/osmonitor.json").read_bytes().splitlines(keepends=False)
i = 14
if i <= len(b):
    line = b[i-1]
    print("Line 14 bytes:", line)
    try:
        print("Line 14 decoded:", line.decode('utf-8', errors='replace'))
    except Exception as e:
        print("Decode error:", e)
else:
    print("File has only", len(b), "lines")
PY

Repository: ScoopInstaller/Extras

Length of output: 1708


Fix invalid JSON in bucket/osmonitor.json (line 14) + add missing autoupdate.

Line 14 contains invalid JSON string escaping ("/DIR="$dir""), so the manifest can’t parse. Update it to escape the inner quotes:

Suggested fix
-            "/DIR="$dir""
+            "/DIR=\"$dir\""

Also, there’s no autoupdate block even though the top-level url hardcodes 10.6.23; add autoupdate and parameterize the version (per Scoop autoupdate rules). If this is a newly added manifest, include the linked Scoop “package request” GitHub issue in description or the PR body (the current description has none).

Contribution docs:
https://github.com/ScoopInstaller/.github/blob/main/.github/CONTRIBUTING.md
https://github.com/ScoopInstaller/Scoop/wiki/App-Manifests

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"/DIR="$dir""
"/DIR=\"$dir\""
🧰 Tools
🪛 Biome (2.4.15)

[error] 14-14: expected , but instead found $dir

(parse)


[error] 14-14: expected , but instead found ""

(parse)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@bucket/osmonitor.json` at line 14, The manifest has invalid JSON at the
string "/DIR="$dir"" — replace it with properly escaped inner quotes (e.g.,
"/DIR=\\"$dir\\"" or equivalent JSON-safe value) inside bucket/osmonitor.json
and ensure the affected field uses the corrected symbol; additionally add an
autoupdate block and parameterize the hardcoded version found in the top-level
"url" (currently "10.6.23") so autoupdate can bump versions, and if this is a
new manifest include the Scoop package-request GitHub issue link in the
"description" or your PR body per Scoop contribution guidelines.

]
},
"uninstaller": {
"file": "unins000.exe",
"args": [
"/VERYSILENT",
"/SUPPRESSMSGBOXES",
"/NORESTART"
]
},
"bin": "OsMonitorServer.exe",
"shortcuts": [
[
"OsMonitorServer.exe",
"OsMonitor Management Console"
]
]
}