()
| 130 | } |
| 131 | |
| 132 | function main() { |
| 133 | const mode = process.argv[2] || 'list'; |
| 134 | const root = projectRoot(); |
| 135 | const json = hasFlag('--json'); |
| 136 | |
| 137 | if (mode === '--help' || mode === '-h') { |
| 138 | process.stdout.write(`${usage()}\n`); |
| 139 | return; |
| 140 | } |
| 141 | |
| 142 | if (mode === 'list' || mode === 'status') { |
| 143 | const loops = listLoops(root, { activeOnly: hasFlag('--active') }); |
| 144 | if (json) printJson(loops); |
| 145 | else process.stdout.write(renderList(loops)); |
| 146 | return; |
| 147 | } |
| 148 | |
| 149 | if (mode === 'inspect') { |
| 150 | const id = process.argv[3]; |
| 151 | const loop = readLoop(root, id) || listLoops(root).find((item) => item.id === id); |
| 152 | if (json) printJson(loop || null); |
| 153 | else process.stdout.write(renderInspect(loop)); |
| 154 | process.exit(loop ? 0 : 1); |
| 155 | } |
| 156 | |
| 157 | if (mode === 'templates') { |
| 158 | const templates = listLoopTemplates(); |
| 159 | if (json) printJson(templates); |
| 160 | else process.stdout.write(renderTemplates()); |
| 161 | return; |
| 162 | } |
| 163 | |
| 164 | if (mode === 'plan' || mode === 'register') { |
| 165 | const contract = contractFromArgs(); |
| 166 | const shouldWrite = hasFlag('--write') || mode === 'register'; |
| 167 | const result = shouldWrite ? registerLoop(root, contract) : contract; |
| 168 | if (json) printJson(result); |
| 169 | else { |
| 170 | process.stdout.write(`${shouldWrite ? 'Loop registered' : 'Loop plan'}: ${result.id}\n`); |
| 171 | process.stdout.write(`State: ${result.statePath}\n`); |
| 172 | process.stdout.write(`Verifier: ${result.verifier.command || result.verifier.profile || '(none)'}\n`); |
| 173 | } |
| 174 | return; |
| 175 | } |
| 176 | |
| 177 | if (mode === 'stop') { |
| 178 | const id = process.argv[3]; |
| 179 | if (!id) { |
| 180 | process.stderr.write('Missing loop id.\n'); |
| 181 | process.exit(1); |
| 182 | } |
| 183 | const result = stopLoop(root, id, arg('--status', 'stopped'), arg('--reason', 'user-stop')); |
| 184 | if (json) printJson(result); |
| 185 | else process.stdout.write(`Stopped ${id}: ${result.status}\n`); |
| 186 | return; |
| 187 | } |
| 188 | |
| 189 | process.stderr.write(`${usage()}\n`); |
no test coverage detected