xcode-mcli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +92 -0
- package/bin/xcode-mcli.ts +16 -0
- package/config/mcporter.json +11 -0
- package/package.json +57 -0
- package/skill/SKILL.md +70 -0
- package/skill/agents/openai.yaml +4 -0
- package/skill/references/api-reference.md +409 -0
- package/skill/references/apple-xcode-26.3.surface.json +1466 -0
- package/skill/references/compatibility.md +91 -0
- package/skill/references/setup.md +120 -0
- package/skill/references/troubleshooting.md +160 -0
- package/src/commands/daemon-restart.ts +22 -0
- package/src/commands/daemon-start.ts +22 -0
- package/src/commands/daemon-status.ts +29 -0
- package/src/commands/daemon-stop.ts +22 -0
- package/src/commands/index.ts +26 -0
- package/src/commands/project-build.ts +50 -0
- package/src/commands/setup.ts +26 -0
- package/src/commands/surface-snapshot.ts +45 -0
- package/src/commands/surface-verify.ts +46 -0
- package/src/commands/tool-command.ts +150 -0
- package/src/commands/windows-list.ts +43 -0
- package/src/commands/windows-use.ts +30 -0
- package/src/commands/xcode-tool-commands.ts +460 -0
- package/src/constants.ts +3 -0
- package/src/core/command-definition.ts +131 -0
- package/src/core/command-dispatch.ts +97 -0
- package/src/core/contracts.ts +25 -0
- package/src/core/errors.ts +52 -0
- package/src/core/package-version.ts +30 -0
- package/src/runtime/daemon-host-entry.ts +8 -0
- package/src/runtime/daemon-host.ts +455 -0
- package/src/runtime/daemon-state.ts +75 -0
- package/src/runtime/env.ts +37 -0
- package/src/runtime/mcp-jsonrpc.ts +114 -0
- package/src/runtime/output.ts +128 -0
- package/src/runtime/tab-resolver.ts +44 -0
- package/src/runtime/xcode-client.ts +192 -0
- package/src/runtime/xcode-surface.ts +166 -0
- package/src/runtime/xcode-tool-definition.ts +14 -0
- package/src/runtime/xcode-windows.ts +65 -0
- package/src/runtime/xcrun.ts +39 -0
package/README.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# xcode-mcli
|
|
2
|
+
|
|
3
|
+
`xcode-mcli` is a macOS CLI for Apple's Xcode MCP bridge exposed through `xcrun mcpbridge`.
|
|
4
|
+
|
|
5
|
+
It gives you a daemon-backed terminal interface to the current Xcode MCP tool surface without registering Xcode MCP inside Codex or another MCP client.
|
|
6
|
+
|
|
7
|
+
## Requirements
|
|
8
|
+
|
|
9
|
+
- macOS
|
|
10
|
+
- Xcode with `Xcode Tools` enabled in `Settings > Intelligence`
|
|
11
|
+
- Node.js 25+
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
For a global install:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install -g xcode-mcli
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Quick Start
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
xcode-mcli setup
|
|
29
|
+
xcode-mcli windows list
|
|
30
|
+
xcode-mcli windows use --tab-identifier windowtab1
|
|
31
|
+
xcode-mcli files read --tab-identifier windowtab1 --file-path Path/To/File.swift
|
|
32
|
+
xcode-mcli project build --tab-identifier windowtab1
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The daemon auto-starts on the first daemon-backed command.
|
|
36
|
+
|
|
37
|
+
## Output Modes
|
|
38
|
+
|
|
39
|
+
- Default output is concise text.
|
|
40
|
+
- `--json` prints a stable wrapper envelope.
|
|
41
|
+
- `--verbose` prints the exact Xcode MCP tool name to `stderr` for tool-backed commands.
|
|
42
|
+
|
|
43
|
+
Example:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
xcode-mcli --json --verbose windows list
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
`--json`, `--verbose`, and `--tab-identifier <id>` can be passed either before the command path or after the specific command.
|
|
50
|
+
|
|
51
|
+
## Command Groups
|
|
52
|
+
|
|
53
|
+
- `setup`
|
|
54
|
+
- `daemon`
|
|
55
|
+
- `windows`
|
|
56
|
+
- `project`
|
|
57
|
+
- `docs`
|
|
58
|
+
- `snippet`
|
|
59
|
+
- `build`
|
|
60
|
+
- `issues`
|
|
61
|
+
- `tests`
|
|
62
|
+
- `preview`
|
|
63
|
+
- `files`
|
|
64
|
+
|
|
65
|
+
## Docs
|
|
66
|
+
|
|
67
|
+
- [docs/api-reference.md](docs/api-reference.md)
|
|
68
|
+
- [docs/compatibility.md](docs/compatibility.md)
|
|
69
|
+
- [docs/setup.md](docs/setup.md)
|
|
70
|
+
- [docs/troubleshooting.md](docs/troubleshooting.md)
|
|
71
|
+
|
|
72
|
+
## Compatibility
|
|
73
|
+
|
|
74
|
+
Pin and verify the Xcode MCP surface with:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npm run compat:xcode-mcp:verify
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The pinned Apple Xcode 26.3 baseline lives at:
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
skill/references/apple-xcode-26.3.surface.json
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Development
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npm test
|
|
90
|
+
make lint
|
|
91
|
+
make verify
|
|
92
|
+
```
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { runXcodeMcliFromProcess } from "../src/core/command-dispatch.ts";
|
|
4
|
+
import { toTemplateError } from "../src/core/errors.ts";
|
|
5
|
+
import { printCommandError } from "../src/runtime/output.ts";
|
|
6
|
+
|
|
7
|
+
try {
|
|
8
|
+
await runXcodeMcliFromProcess();
|
|
9
|
+
} catch (error) {
|
|
10
|
+
const wrapped = toTemplateError(error);
|
|
11
|
+
printCommandError({
|
|
12
|
+
argv: process.argv.slice(2),
|
|
13
|
+
error: wrapped,
|
|
14
|
+
});
|
|
15
|
+
process.exit(wrapped.exitCode);
|
|
16
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/steipete/mcporter/main/mcporter.schema.json",
|
|
3
|
+
"mcpServers": {
|
|
4
|
+
"xcode": {
|
|
5
|
+
"description": "Apple Xcode MCP via xcrun mcpbridge",
|
|
6
|
+
"command": "xcrun",
|
|
7
|
+
"args": ["mcpbridge"],
|
|
8
|
+
"lifecycle": "keep-alive"
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "xcode-mcli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Stable macOS CLI wrapper for Apple's Xcode MCP bridge.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"private": false,
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/pyronaur/xcode-mcli.git"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://github.com/pyronaur/xcode-mcli#readme",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/pyronaur/xcode-mcli/issues"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"bin",
|
|
17
|
+
"config",
|
|
18
|
+
"skill",
|
|
19
|
+
"src"
|
|
20
|
+
],
|
|
21
|
+
"bin": {
|
|
22
|
+
"xcode-mcli": "./bin/xcode-mcli.ts"
|
|
23
|
+
},
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=25"
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"compat:xcode-mcp:pin-26.3": "node ./bin/xcode-mcli.ts surface snapshot --output-file skill/references/apple-xcode-26.3.surface.json",
|
|
29
|
+
"compat:xcode-mcp:snapshot": "node ./bin/xcode-mcli.ts surface snapshot",
|
|
30
|
+
"compat:xcode-mcp:verify": "node ./bin/xcode-mcli.ts surface verify --baseline-file skill/references/apple-xcode-26.3.surface.json",
|
|
31
|
+
"lint": "npm run lint:dprint:fix && npm run lint:oxlint:fix && npm run typecheck && npm run jscpd && npm run knip",
|
|
32
|
+
"lint-dry": "npm run lint:dprint && npm run lint:oxlint && npm run typecheck && npm run jscpd && npm run knip",
|
|
33
|
+
"lint:dprint": "dprint check",
|
|
34
|
+
"lint:oxlint": "oxlint --type-aware --tsconfig tsconfig.json .",
|
|
35
|
+
"lint:dprint:fix": "dprint fmt",
|
|
36
|
+
"lint:oxlint:fix": "oxlint --type-aware --tsconfig tsconfig.json --fix .",
|
|
37
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
38
|
+
"jscpd": "jscpd --config .jscpd.json",
|
|
39
|
+
"knip": "knip",
|
|
40
|
+
"test": "vitest run --maxWorkers 1 --fileParallelism false"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"commander": "^14.0.1",
|
|
44
|
+
"zod": "^4.1.8"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/node": "^24.5.2",
|
|
48
|
+
"dprint": "^0.52.0",
|
|
49
|
+
"jscpd": "^4.0.8",
|
|
50
|
+
"knip": "^5.85.0",
|
|
51
|
+
"oxlint": "^1.50.0",
|
|
52
|
+
"oxlint-plugin-inhuman": "^0.1.7",
|
|
53
|
+
"oxlint-tsgolint": "^0.15.0",
|
|
54
|
+
"typescript": "^5",
|
|
55
|
+
"vitest": "^3.2.4"
|
|
56
|
+
}
|
|
57
|
+
}
|
package/skill/SKILL.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: xcode
|
|
3
|
+
description: Drive Apple Xcode through the local `xcode-mcli` CLI instead of attaching the Xcode MCP server. Use when Codex needs Xcode MCP-equivalent capabilities from the terminal, including window discovery, tab selection, project builds, documentation search, test listing or execution, preview rendering, snippet execution, issue inspection, file reads or mutations, or compatibility verification against pinned Xcode MCP snapshots.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Xcode
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Use `xcode-mcli` as the terminal wrapper for Apple's Xcode MCP bridge.
|
|
11
|
+
|
|
12
|
+
Prefer this skill when the task needs Xcode access but the Xcode MCP server should stay detached from the agent context.
|
|
13
|
+
|
|
14
|
+
## Locate The CLI
|
|
15
|
+
|
|
16
|
+
Use one of these paths:
|
|
17
|
+
|
|
18
|
+
- Global install: `xcode-mcli`
|
|
19
|
+
- Repo checkout: `node ./bin/xcode-mcli.ts`
|
|
20
|
+
|
|
21
|
+
When working from the repo checkout, use the `xcode-mcli` repository root as the default project root unless the user says otherwise.
|
|
22
|
+
|
|
23
|
+
## Start Here
|
|
24
|
+
|
|
25
|
+
1. Run `xcode-mcli setup`.
|
|
26
|
+
2. If the first live Xcode call triggers a macOS approval dialog, wait for the user to click `Allow`.
|
|
27
|
+
3. Run `xcode-mcli windows list`.
|
|
28
|
+
4. If needed, pin the active tab with `xcode-mcli windows use --tab-identifier <id>`.
|
|
29
|
+
5. Run the tool-backed command you need.
|
|
30
|
+
|
|
31
|
+
## Working Rules
|
|
32
|
+
|
|
33
|
+
- Prefer `--json` when the result will be parsed or inspected programmatically.
|
|
34
|
+
- Use `--verbose` when you need the exact Xcode MCP tool name printed to `stderr`.
|
|
35
|
+
- Pass `--tab-identifier <id>` explicitly when multiple Xcode windows are open.
|
|
36
|
+
- Treat `files rm`, `files update`, `files write`, and `files mv --overwrite-existing` as destructive because they require `--yes`.
|
|
37
|
+
- Assume test execution uses the active Xcode destination from the current Xcode window.
|
|
38
|
+
- If a live Xcode command appears stalled, account for the user possibly needing to approve Xcode access before treating it as a failure.
|
|
39
|
+
|
|
40
|
+
## Read The Right Reference
|
|
41
|
+
|
|
42
|
+
- Read `references/setup.md` for install, first-run, daemon, and state-root behavior.
|
|
43
|
+
- Read `references/api-reference.md` for every CLI command, flag, JSON contract, and CLI-to-tool mapping.
|
|
44
|
+
- Read `references/troubleshooting.md` for approval prompts, tab resolution issues, daemon recovery, mutating command caveats, and test-destination behavior.
|
|
45
|
+
- Read `references/compatibility.md` when validating a new Xcode release or checking CLI parity against the pinned MCP baseline.
|
|
46
|
+
- Read `references/apple-xcode-26.3.surface.json` when you need the exact verbatim Xcode MCP tool descriptions, `inputSchema`, `outputSchema`, or top-level surface shape copied from live Xcode 26.3.
|
|
47
|
+
|
|
48
|
+
## Searching The Verbatim Surface Snapshot
|
|
49
|
+
|
|
50
|
+
The snapshot file is large. Search it by tool name first.
|
|
51
|
+
|
|
52
|
+
Useful patterns:
|
|
53
|
+
|
|
54
|
+
- `BuildProject`
|
|
55
|
+
- `DocumentationSearch`
|
|
56
|
+
- `RunSomeTests`
|
|
57
|
+
- `XcodeRead`
|
|
58
|
+
- `XcodeWrite`
|
|
59
|
+
- `XcodeListWindows`
|
|
60
|
+
|
|
61
|
+
When exact parameter or output details matter, trust the JSON snapshot over memory.
|
|
62
|
+
|
|
63
|
+
## Compatibility Workflow
|
|
64
|
+
|
|
65
|
+
When Xcode changes:
|
|
66
|
+
|
|
67
|
+
1. Run `npm run compat:xcode-mcp:verify` from the `xcode-mcli` repository root.
|
|
68
|
+
2. If it fails, read `references/compatibility.md`.
|
|
69
|
+
3. Inspect the exact live-vs-baseline diff with `xcode-mcli surface verify --baseline-file skill/references/apple-xcode-26.3.surface.json --json`.
|
|
70
|
+
4. Use `references/apple-xcode-26.3.surface.json` as the pinned baseline reference.
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
# API Reference
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
`xcode-mcli` exposes Xcode MCP through command groups that map to the current Xcode MCP tool surface.
|
|
6
|
+
|
|
7
|
+
Text mode is the default.
|
|
8
|
+
|
|
9
|
+
`--json` returns a stable wrapper envelope:
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"ok": true,
|
|
14
|
+
"command": "windows list",
|
|
15
|
+
"tool": "XcodeListWindows",
|
|
16
|
+
"data": {
|
|
17
|
+
"windows": []
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Failure shape:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"ok": false,
|
|
27
|
+
"command": "files read",
|
|
28
|
+
"tool": "XcodeRead",
|
|
29
|
+
"error": {
|
|
30
|
+
"kind": "runtime",
|
|
31
|
+
"message": "...",
|
|
32
|
+
"details": {}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
For tool-backed commands, `--verbose` prints `Xcode MCP tool: <ToolName>` to `stderr`.
|
|
38
|
+
|
|
39
|
+
## Shared Flags
|
|
40
|
+
|
|
41
|
+
- `--json`
|
|
42
|
+
Prints the stable JSON wrapper envelope.
|
|
43
|
+
- `--verbose`
|
|
44
|
+
Prints the exact Xcode MCP tool name to `stderr` for tool-backed commands.
|
|
45
|
+
- `--tab-identifier <id>`
|
|
46
|
+
Provides the active Xcode tab identifier for tab-aware commands.
|
|
47
|
+
|
|
48
|
+
Shared flags can be passed before the command path or after the specific command.
|
|
49
|
+
|
|
50
|
+
## Setup
|
|
51
|
+
|
|
52
|
+
### `xcode-mcli setup`
|
|
53
|
+
|
|
54
|
+
Prepares the local state root and verifies `xcrun mcpbridge`.
|
|
55
|
+
|
|
56
|
+
Flags:
|
|
57
|
+
|
|
58
|
+
- `--json`
|
|
59
|
+
- `--verbose`
|
|
60
|
+
|
|
61
|
+
## Surface
|
|
62
|
+
|
|
63
|
+
### `xcode-mcli surface snapshot [--output-file <path>]`
|
|
64
|
+
|
|
65
|
+
Discovers the live Xcode MCP surface through `initialize`, `tools/list`, `prompts/list`, and `resources/list`.
|
|
66
|
+
|
|
67
|
+
Flags:
|
|
68
|
+
|
|
69
|
+
- `--output-file <path>` optional
|
|
70
|
+
- `--json`
|
|
71
|
+
- `--verbose`
|
|
72
|
+
|
|
73
|
+
Without `--output-file`, text mode prints the canonical snapshot JSON.
|
|
74
|
+
|
|
75
|
+
With `--output-file`, the command writes the normalized snapshot to disk and prints the resolved path.
|
|
76
|
+
|
|
77
|
+
### `xcode-mcli surface verify --baseline-file <path>`
|
|
78
|
+
|
|
79
|
+
Compares the live discovered Xcode MCP surface against a baseline snapshot file.
|
|
80
|
+
|
|
81
|
+
Flags:
|
|
82
|
+
|
|
83
|
+
- `--baseline-file <path>` required
|
|
84
|
+
- `--json`
|
|
85
|
+
- `--verbose`
|
|
86
|
+
|
|
87
|
+
Success data includes:
|
|
88
|
+
|
|
89
|
+
- `baselineFile`
|
|
90
|
+
- `compatible`
|
|
91
|
+
- `diff`
|
|
92
|
+
|
|
93
|
+
Failure JSON includes categorized diff details in `error.details`.
|
|
94
|
+
|
|
95
|
+
## Daemon
|
|
96
|
+
|
|
97
|
+
### `xcode-mcli daemon start`
|
|
98
|
+
|
|
99
|
+
Starts the daemon.
|
|
100
|
+
|
|
101
|
+
### `xcode-mcli daemon status`
|
|
102
|
+
|
|
103
|
+
Shows whether the daemon is running and prints its PID when available.
|
|
104
|
+
|
|
105
|
+
### `xcode-mcli daemon stop`
|
|
106
|
+
|
|
107
|
+
Stops the daemon.
|
|
108
|
+
|
|
109
|
+
### `xcode-mcli daemon restart`
|
|
110
|
+
|
|
111
|
+
Restarts the daemon.
|
|
112
|
+
|
|
113
|
+
Daemon commands support:
|
|
114
|
+
|
|
115
|
+
- `--json`
|
|
116
|
+
- `--verbose`
|
|
117
|
+
|
|
118
|
+
## Windows
|
|
119
|
+
|
|
120
|
+
### `xcode-mcli windows list`
|
|
121
|
+
|
|
122
|
+
Calls `XcodeListWindows`.
|
|
123
|
+
|
|
124
|
+
Flags:
|
|
125
|
+
|
|
126
|
+
- `--json`
|
|
127
|
+
- `--verbose`
|
|
128
|
+
|
|
129
|
+
### `xcode-mcli windows use --tab-identifier <id>`
|
|
130
|
+
|
|
131
|
+
Stores the active tab identifier in daemon state.
|
|
132
|
+
|
|
133
|
+
Flags:
|
|
134
|
+
|
|
135
|
+
- `--tab-identifier <id>` required
|
|
136
|
+
- `--json`
|
|
137
|
+
- `--verbose`
|
|
138
|
+
|
|
139
|
+
## Project
|
|
140
|
+
|
|
141
|
+
### `xcode-mcli project build`
|
|
142
|
+
|
|
143
|
+
Calls `BuildProject`.
|
|
144
|
+
|
|
145
|
+
Flags:
|
|
146
|
+
|
|
147
|
+
- `--tab-identifier <id>` optional
|
|
148
|
+
- `--json`
|
|
149
|
+
- `--verbose`
|
|
150
|
+
|
|
151
|
+
If `--tab-identifier` is omitted, the CLI resolves it from the cached active tab or a single open Xcode window.
|
|
152
|
+
|
|
153
|
+
## Docs
|
|
154
|
+
|
|
155
|
+
### `xcode-mcli docs search --query <text> [--framework <name> ...]`
|
|
156
|
+
|
|
157
|
+
Calls `DocumentationSearch`.
|
|
158
|
+
|
|
159
|
+
Flags:
|
|
160
|
+
|
|
161
|
+
- `--query <text>` required
|
|
162
|
+
- `--framework <name>` repeatable
|
|
163
|
+
- `--tab-identifier <id>` optional and ignored by the v1 resolver
|
|
164
|
+
- `--json`
|
|
165
|
+
- `--verbose`
|
|
166
|
+
|
|
167
|
+
## Snippet
|
|
168
|
+
|
|
169
|
+
### `xcode-mcli snippet execute --code-snippet <swift> --source-file-path <path> [--timeout <seconds>] [--tab-identifier <id>]`
|
|
170
|
+
|
|
171
|
+
Calls `ExecuteSnippet`.
|
|
172
|
+
|
|
173
|
+
Flags:
|
|
174
|
+
|
|
175
|
+
- `--code-snippet <swift>` required
|
|
176
|
+
- `--source-file-path <path>` required
|
|
177
|
+
- `--timeout <seconds>` optional
|
|
178
|
+
- `--tab-identifier <id>` optional
|
|
179
|
+
- `--json`
|
|
180
|
+
- `--verbose`
|
|
181
|
+
|
|
182
|
+
## Build
|
|
183
|
+
|
|
184
|
+
### `xcode-mcli build log [--glob <glob>] [--pattern <regex>] [--severity <level>] [--tab-identifier <id>]`
|
|
185
|
+
|
|
186
|
+
Calls `GetBuildLog`.
|
|
187
|
+
|
|
188
|
+
Flags:
|
|
189
|
+
|
|
190
|
+
- `--glob <glob>` optional
|
|
191
|
+
- `--pattern <regex>` optional
|
|
192
|
+
- `--severity <level>` optional
|
|
193
|
+
Allowed values: `error`, `warning`, `remark`
|
|
194
|
+
- `--tab-identifier <id>` optional
|
|
195
|
+
- `--json`
|
|
196
|
+
- `--verbose`
|
|
197
|
+
|
|
198
|
+
## Issues
|
|
199
|
+
|
|
200
|
+
### `xcode-mcli issues list [--glob <glob>] [--pattern <regex>] [--severity <level>] [--tab-identifier <id>]`
|
|
201
|
+
|
|
202
|
+
Calls `XcodeListNavigatorIssues`.
|
|
203
|
+
|
|
204
|
+
Flags:
|
|
205
|
+
|
|
206
|
+
- `--glob <glob>` optional
|
|
207
|
+
- `--pattern <regex>` optional
|
|
208
|
+
- `--severity <level>` optional
|
|
209
|
+
Allowed values: `error`, `warning`, `remark`
|
|
210
|
+
- `--tab-identifier <id>` optional
|
|
211
|
+
- `--json`
|
|
212
|
+
- `--verbose`
|
|
213
|
+
|
|
214
|
+
### `xcode-mcli issues file --file-path <path> [--tab-identifier <id>]`
|
|
215
|
+
|
|
216
|
+
Calls `XcodeRefreshCodeIssuesInFile`.
|
|
217
|
+
|
|
218
|
+
Flags:
|
|
219
|
+
|
|
220
|
+
- `--file-path <path>` required
|
|
221
|
+
- `--tab-identifier <id>` optional
|
|
222
|
+
- `--json`
|
|
223
|
+
- `--verbose`
|
|
224
|
+
|
|
225
|
+
## Tests
|
|
226
|
+
|
|
227
|
+
### `xcode-mcli tests list [--tab-identifier <id>]`
|
|
228
|
+
|
|
229
|
+
Calls `GetTestList`.
|
|
230
|
+
|
|
231
|
+
Flags:
|
|
232
|
+
|
|
233
|
+
- `--tab-identifier <id>` optional
|
|
234
|
+
- `--json`
|
|
235
|
+
- `--verbose`
|
|
236
|
+
|
|
237
|
+
### `xcode-mcli tests run-all [--tab-identifier <id>]`
|
|
238
|
+
|
|
239
|
+
Calls `RunAllTests`.
|
|
240
|
+
|
|
241
|
+
Flags:
|
|
242
|
+
|
|
243
|
+
- `--tab-identifier <id>` optional
|
|
244
|
+
- `--json`
|
|
245
|
+
- `--verbose`
|
|
246
|
+
|
|
247
|
+
### `xcode-mcli tests run-some --test <key=value> --test <key=value> [--tab-identifier <id>]`
|
|
248
|
+
|
|
249
|
+
Calls `RunSomeTests`.
|
|
250
|
+
|
|
251
|
+
Each selected test needs both fields:
|
|
252
|
+
|
|
253
|
+
- `targetName=<target>`
|
|
254
|
+
- `testIdentifier=<identifier>`
|
|
255
|
+
|
|
256
|
+
Flags:
|
|
257
|
+
|
|
258
|
+
- `--test <key=value>` repeatable
|
|
259
|
+
- `--tab-identifier <id>` optional
|
|
260
|
+
- `--json`
|
|
261
|
+
- `--verbose`
|
|
262
|
+
|
|
263
|
+
## Preview
|
|
264
|
+
|
|
265
|
+
### `xcode-mcli preview render --source-file-path <path> [--preview-definition-index-in-file <n>] [--timeout <seconds>] [--tab-identifier <id>]`
|
|
266
|
+
|
|
267
|
+
Calls `RenderPreview`.
|
|
268
|
+
|
|
269
|
+
Flags:
|
|
270
|
+
|
|
271
|
+
- `--source-file-path <path>` required
|
|
272
|
+
- `--preview-definition-index-in-file <n>` optional
|
|
273
|
+
- `--timeout <seconds>` optional
|
|
274
|
+
- `--tab-identifier <id>` optional
|
|
275
|
+
- `--json`
|
|
276
|
+
- `--verbose`
|
|
277
|
+
|
|
278
|
+
## Files
|
|
279
|
+
|
|
280
|
+
### `xcode-mcli files glob [--path <path>] [--pattern <glob>] [--tab-identifier <id>]`
|
|
281
|
+
|
|
282
|
+
Calls `XcodeGlob`.
|
|
283
|
+
|
|
284
|
+
Flags:
|
|
285
|
+
|
|
286
|
+
- `--path <path>` optional
|
|
287
|
+
- `--pattern <glob>` optional
|
|
288
|
+
- `--tab-identifier <id>` optional
|
|
289
|
+
- `--json`
|
|
290
|
+
- `--verbose`
|
|
291
|
+
|
|
292
|
+
### `xcode-mcli files grep --pattern <regex> [--glob <glob>] [--head-limit <n>] [--ignore-case] [--lines-after <n>] [--lines-before <n>] [--lines-context <n>] [--multiline] [--output-mode <mode>] [--path <path>] [--show-line-numbers] [--type <type>] [--tab-identifier <id>]`
|
|
293
|
+
|
|
294
|
+
Calls `XcodeGrep`.
|
|
295
|
+
|
|
296
|
+
Flags:
|
|
297
|
+
|
|
298
|
+
- `--pattern <regex>` required
|
|
299
|
+
- `--glob <glob>` optional
|
|
300
|
+
- `--head-limit <n>` optional
|
|
301
|
+
- `--ignore-case` optional
|
|
302
|
+
- `--lines-after <n>` optional
|
|
303
|
+
- `--lines-before <n>` optional
|
|
304
|
+
- `--lines-context <n>` optional
|
|
305
|
+
- `--multiline` optional
|
|
306
|
+
- `--output-mode <mode>` optional
|
|
307
|
+
Allowed values: `content`, `files_with_matches`, `count`
|
|
308
|
+
- `--path <path>` optional
|
|
309
|
+
- `--show-line-numbers` optional
|
|
310
|
+
- `--type <type>` optional
|
|
311
|
+
- `--tab-identifier <id>` optional
|
|
312
|
+
- `--json`
|
|
313
|
+
- `--verbose`
|
|
314
|
+
|
|
315
|
+
### `xcode-mcli files ls --path <path> [--ignore <pattern> ...] [--recursive] [--tab-identifier <id>]`
|
|
316
|
+
|
|
317
|
+
Calls `XcodeLS`.
|
|
318
|
+
|
|
319
|
+
Flags:
|
|
320
|
+
|
|
321
|
+
- `--path <path>` required
|
|
322
|
+
- `--ignore <pattern>` repeatable
|
|
323
|
+
- `--recursive` optional
|
|
324
|
+
- `--tab-identifier <id>` optional
|
|
325
|
+
- `--json`
|
|
326
|
+
- `--verbose`
|
|
327
|
+
|
|
328
|
+
### `xcode-mcli files mv --source-path <path> --destination-path <path> [--operation <operation>] [--overwrite-existing] [--yes] [--tab-identifier <id>]`
|
|
329
|
+
|
|
330
|
+
Calls `XcodeMV`.
|
|
331
|
+
|
|
332
|
+
Flags:
|
|
333
|
+
|
|
334
|
+
- `--source-path <path>` required
|
|
335
|
+
- `--destination-path <path>` required
|
|
336
|
+
- `--operation <operation>` optional
|
|
337
|
+
- `--overwrite-existing` optional
|
|
338
|
+
- `--yes` required when `--overwrite-existing` is set
|
|
339
|
+
- `--tab-identifier <id>` optional
|
|
340
|
+
- `--json`
|
|
341
|
+
- `--verbose`
|
|
342
|
+
|
|
343
|
+
### `xcode-mcli files mkdir --directory-path <path> [--tab-identifier <id>]`
|
|
344
|
+
|
|
345
|
+
Calls `XcodeMakeDir`.
|
|
346
|
+
|
|
347
|
+
Flags:
|
|
348
|
+
|
|
349
|
+
- `--directory-path <path>` required
|
|
350
|
+
- `--tab-identifier <id>` optional
|
|
351
|
+
- `--json`
|
|
352
|
+
- `--verbose`
|
|
353
|
+
|
|
354
|
+
### `xcode-mcli files rm --path <path> [--delete-files] [--recursive] --yes [--tab-identifier <id>]`
|
|
355
|
+
|
|
356
|
+
Calls `XcodeRM`.
|
|
357
|
+
|
|
358
|
+
Flags:
|
|
359
|
+
|
|
360
|
+
- `--path <path>` required
|
|
361
|
+
- `--delete-files` optional
|
|
362
|
+
- `--recursive` optional
|
|
363
|
+
- `--yes` required
|
|
364
|
+
- `--tab-identifier <id>` optional
|
|
365
|
+
- `--json`
|
|
366
|
+
- `--verbose`
|
|
367
|
+
|
|
368
|
+
### `xcode-mcli files read --file-path <path> [--offset <line>] [--limit <n>] [--tab-identifier <id>]`
|
|
369
|
+
|
|
370
|
+
Calls `XcodeRead`.
|
|
371
|
+
|
|
372
|
+
Flags:
|
|
373
|
+
|
|
374
|
+
- `--file-path <path>` required
|
|
375
|
+
- `--offset <line>` optional
|
|
376
|
+
- `--limit <n>` optional
|
|
377
|
+
- `--tab-identifier <id>` optional
|
|
378
|
+
- `--json`
|
|
379
|
+
- `--verbose`
|
|
380
|
+
|
|
381
|
+
### `xcode-mcli files update --file-path <path> --old-string <text> --new-string <text> [--replace-all] --yes [--tab-identifier <id>]`
|
|
382
|
+
|
|
383
|
+
Calls `XcodeUpdate`.
|
|
384
|
+
|
|
385
|
+
Flags:
|
|
386
|
+
|
|
387
|
+
- `--file-path <path>` required
|
|
388
|
+
- `--old-string <text>` required
|
|
389
|
+
- `--new-string <text>` required
|
|
390
|
+
- `--replace-all` optional
|
|
391
|
+
- `--yes` required
|
|
392
|
+
- `--tab-identifier <id>` optional
|
|
393
|
+
- `--json`
|
|
394
|
+
- `--verbose`
|
|
395
|
+
|
|
396
|
+
### `xcode-mcli files write --file-path <path> (--content <text> | --content-file <path>) --yes [--tab-identifier <id>]`
|
|
397
|
+
|
|
398
|
+
Calls `XcodeWrite`.
|
|
399
|
+
|
|
400
|
+
Flags:
|
|
401
|
+
|
|
402
|
+
- `--file-path <path>` required
|
|
403
|
+
- `--content <text>` optional
|
|
404
|
+
- `--content-file <path>` optional
|
|
405
|
+
- one of `--content` or `--content-file` is required
|
|
406
|
+
- `--yes` required
|
|
407
|
+
- `--tab-identifier <id>` optional
|
|
408
|
+
- `--json`
|
|
409
|
+
- `--verbose`
|