- Add .gitignore: exclude compiled binaries, build artifacts, and Helm values files containing real secrets (authentik, prometheus) - Add all Kubernetes deployment manifests (deployment/) - Add services source code: ha-sync, device-inventory, games-console, paperclip, parts-inventory - Add Ansible orchestration: playbooks, roles, inventory, cloud-init - Add hardware specs, execution plans, scripts, HOMELAB.md - Add skills/homelab/SKILL.md + skills/install.sh to preserve Copilot skill - Remove previously-tracked inventory-cli binary from git index Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
48 lines
No EOL
1.4 KiB
JavaScript
48 lines
No EOL
1.4 KiB
JavaScript
'use strict';
|
|
|
|
module.exports = function stringToParts(str) {
|
|
const result = [];
|
|
|
|
let curPropertyName = '';
|
|
let state = 'DEFAULT';
|
|
for (let i = 0; i < str.length; ++i) {
|
|
// Fall back to treating as property name rather than bracket notation if
|
|
// square brackets contains something other than a number.
|
|
if (state === 'IN_SQUARE_BRACKETS' && !/\d/.test(str[i]) && str[i] !== ']') {
|
|
state = 'DEFAULT';
|
|
curPropertyName = result[result.length - 1] + '[' + curPropertyName;
|
|
result.splice(result.length - 1, 1);
|
|
}
|
|
|
|
if (str[i] === '[') {
|
|
if (state !== 'IMMEDIATELY_AFTER_SQUARE_BRACKETS') {
|
|
result.push(curPropertyName);
|
|
curPropertyName = '';
|
|
}
|
|
state = 'IN_SQUARE_BRACKETS';
|
|
} else if (str[i] === ']') {
|
|
if (state === 'IN_SQUARE_BRACKETS') {
|
|
state = 'IMMEDIATELY_AFTER_SQUARE_BRACKETS';
|
|
result.push(curPropertyName);
|
|
curPropertyName = '';
|
|
} else {
|
|
state = 'DEFAULT';
|
|
curPropertyName += str[i];
|
|
}
|
|
} else if (str[i] === '.') {
|
|
if (state !== 'IMMEDIATELY_AFTER_SQUARE_BRACKETS') {
|
|
result.push(curPropertyName);
|
|
curPropertyName = '';
|
|
}
|
|
state = 'DEFAULT';
|
|
} else {
|
|
curPropertyName += str[i];
|
|
}
|
|
}
|
|
|
|
if (state !== 'IMMEDIATELY_AFTER_SQUARE_BRACKETS') {
|
|
result.push(curPropertyName);
|
|
}
|
|
|
|
return result;
|
|
}; |