Move Custom Scripts out of the repo and add an Import Script picker
Custom Scripts (the Scheduler page's inline editor) used to save into the git-tracked Custom/ folder, so anything saved there would end up on GitHub. They now live in /boot/config/plugins/user.scripts/Varaverk/Scripts, same folder family as Unraid's own User Scripts plugin. Import Script lets you browse the whole server and move an existing script in instead of only creating new ones inline — always a move, never a copy, so no stray duplicate is left where it came from.
This commit is contained in:
@@ -11,6 +11,11 @@ define('DEPLOY_DIR', SCRIPTS_DIR . '/Deployment');
|
||||
define('DATA_DIR', SCRIPTS_DIR . '/data');
|
||||
define('STATE_DIR', SCRIPTS_DIR . '/State_Files');
|
||||
define('LOG_DIR', '/var/log/varaverk');
|
||||
// User-authored custom scripts (scheduler page "+ Create Script") — kept outside the git
|
||||
// repo entirely, alongside the User Scripts plugin's own storage. Any *.sh file placed
|
||||
// directly in this folder is auto-detected and listed — it doesn't have to be created
|
||||
// through the page's editor.
|
||||
define('CUSTOM_SCRIPTS_DIR', $_vv_cfg['CUSTOM_SCRIPTS_DIR'] ?? '/boot/config/plugins/user.scripts/Varaverk/Scripts');
|
||||
unset($_vv_cfg);
|
||||
|
||||
define('VV_SETUP_STATE_FILE', STATE_DIR . '/varaverk_setup.db');
|
||||
|
||||
@@ -97,7 +97,10 @@ function vv_cron_rebuild(array $schedule): bool {
|
||||
$id = $entry['id'];
|
||||
// When a child's orch is enabled it is the sole trigger — suppress independent cron.
|
||||
if (isset($childToOrch[$id]) && !empty($schedule[$childToOrch[$id]]['enabled'])) continue;
|
||||
$script = "$scriptsDir/$id";
|
||||
// Custom Scripts live outside the repo (CUSTOM_SCRIPTS_DIR) — everything else resolves under SCRIPTS_DIR.
|
||||
$script = str_starts_with($id, 'Custom/')
|
||||
? CUSTOM_SCRIPTS_DIR . '/' . substr($id, strlen('Custom/'))
|
||||
: "$scriptsDir/$id";
|
||||
$flags = !empty($entry['log_enabled']) ? ' --log' : '';
|
||||
$lines[] = "{$entry['cron']} bash \"$runner\" \"$id\" \"$script\"$flags";
|
||||
}
|
||||
@@ -278,6 +281,10 @@ function vv_tools_scripts(): array {
|
||||
return $scripts;
|
||||
}
|
||||
|
||||
// Lists every Custom Script for the scheduler page. Discovery is glob-based, not a
|
||||
// registry — any *.sh file dropped directly into CUSTOM_SCRIPTS_DIR (or a platform
|
||||
// adapter's own Custom/ folder) shows up here, whether or not it was created via the
|
||||
// page's "+ Create Script" editor or has a schedule.json entry yet.
|
||||
function vv_custom_scripts(): array {
|
||||
$schedule = vv_schedule_load();
|
||||
$scripts = [];
|
||||
@@ -297,7 +304,7 @@ function vv_custom_scripts(): array {
|
||||
}
|
||||
};
|
||||
|
||||
$collect(SCRIPTS_DIR . '/Custom', 'Custom/');
|
||||
$collect(CUSTOM_SCRIPTS_DIR, 'Custom/');
|
||||
|
||||
// Platform adapter custom scripts (Plugin/<platform>/Custom/)
|
||||
foreach (glob(SCRIPTS_DIR . '/Plugin/*/Custom') ?: [] as $customDir) {
|
||||
|
||||
Reference in New Issue
Block a user