@lightward/mechanic-cli 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/LICENSE +21 -0
- package/README.md +424 -0
- package/bin/mechanic.js +5 -0
- package/dist/auth.d.ts +10 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +104 -0
- package/dist/base-command.d.ts +20 -0
- package/dist/base-command.d.ts.map +1 -0
- package/dist/base-command.js +82 -0
- package/dist/client.d.ts +40 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +172 -0
- package/dist/commands/auth/login.d.ts +10 -0
- package/dist/commands/auth/login.d.ts.map +1 -0
- package/dist/commands/auth/login.js +36 -0
- package/dist/commands/auth/logout.d.ts +6 -0
- package/dist/commands/auth/logout.d.ts.map +1 -0
- package/dist/commands/auth/logout.js +10 -0
- package/dist/commands/doctor.d.ts +7 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +106 -0
- package/dist/commands/github/init.d.ts +10 -0
- package/dist/commands/github/init.d.ts.map +1 -0
- package/dist/commands/github/init.js +50 -0
- package/dist/commands/help.d.ts +7 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +10 -0
- package/dist/commands/init.d.ts +13 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +72 -0
- package/dist/commands/shop/status.d.ts +10 -0
- package/dist/commands/shop/status.d.ts.map +1 -0
- package/dist/commands/shop/status.js +138 -0
- package/dist/commands/tasks/bundle.d.ts +16 -0
- package/dist/commands/tasks/bundle.d.ts.map +1 -0
- package/dist/commands/tasks/bundle.js +83 -0
- package/dist/commands/tasks/diff.d.ts +16 -0
- package/dist/commands/tasks/diff.d.ts.map +1 -0
- package/dist/commands/tasks/diff.js +124 -0
- package/dist/commands/tasks/list.d.ts +11 -0
- package/dist/commands/tasks/list.d.ts.map +1 -0
- package/dist/commands/tasks/list.js +57 -0
- package/dist/commands/tasks/open.d.ts +13 -0
- package/dist/commands/tasks/open.d.ts.map +1 -0
- package/dist/commands/tasks/open.js +64 -0
- package/dist/commands/tasks/preview.d.ts +45 -0
- package/dist/commands/tasks/preview.d.ts.map +1 -0
- package/dist/commands/tasks/preview.js +373 -0
- package/dist/commands/tasks/publish.d.ts +16 -0
- package/dist/commands/tasks/publish.d.ts.map +1 -0
- package/dist/commands/tasks/publish.js +16 -0
- package/dist/commands/tasks/pull.d.ts +14 -0
- package/dist/commands/tasks/pull.d.ts.map +1 -0
- package/dist/commands/tasks/pull.js +96 -0
- package/dist/commands/tasks/push.d.ts +60 -0
- package/dist/commands/tasks/push.d.ts.map +1 -0
- package/dist/commands/tasks/push.js +370 -0
- package/dist/commands/tasks/status.d.ts +30 -0
- package/dist/commands/tasks/status.d.ts.map +1 -0
- package/dist/commands/tasks/status.js +183 -0
- package/dist/commands/tasks/unbundle.d.ts +16 -0
- package/dist/commands/tasks/unbundle.d.ts.map +1 -0
- package/dist/commands/tasks/unbundle.js +84 -0
- package/dist/commands/tasks/validate.d.ts +15 -0
- package/dist/commands/tasks/validate.d.ts.map +1 -0
- package/dist/commands/tasks/validate.js +78 -0
- package/dist/config.d.ts +15 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +227 -0
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +18 -0
- package/dist/fs.d.ts +10 -0
- package/dist/fs.d.ts.map +1 -0
- package/dist/fs.js +51 -0
- package/dist/github-workflows.d.ts +6 -0
- package/dist/github-workflows.d.ts.map +1 -0
- package/dist/github-workflows.js +293 -0
- package/dist/hash.d.ts +2 -0
- package/dist/hash.d.ts.map +1 -0
- package/dist/hash.js +5 -0
- package/dist/json.d.ts +4 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +30 -0
- package/dist/tasks.d.ts +48 -0
- package/dist/tasks.d.ts.map +1 -0
- package/dist/tasks.js +546 -0
- package/dist/types.d.ts +144 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/package.json +80 -0
- package/schemas/mechanic.schema.json +13 -0
- package/schemas/task-config.schema.json +23 -0
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
const require = createRequire(import.meta.url);
|
|
3
|
+
const packageJson = require("../package.json");
|
|
4
|
+
const CLI_PACKAGE_SPEC = `${packageJson.name || "@lightward/mechanic-cli"}@${packageJson.version || "latest"}`;
|
|
5
|
+
function withTrailingNewline(lines) {
|
|
6
|
+
return `${lines.join("\n")}\n`;
|
|
7
|
+
}
|
|
8
|
+
function validateWorkflow() {
|
|
9
|
+
return withTrailingNewline([
|
|
10
|
+
"name: Validate Mechanic tasks",
|
|
11
|
+
"",
|
|
12
|
+
"on:",
|
|
13
|
+
" pull_request:",
|
|
14
|
+
" workflow_dispatch:",
|
|
15
|
+
"",
|
|
16
|
+
"permissions:",
|
|
17
|
+
" contents: read",
|
|
18
|
+
"",
|
|
19
|
+
"jobs:",
|
|
20
|
+
" validate:",
|
|
21
|
+
" runs-on: ubuntu-latest",
|
|
22
|
+
" steps:",
|
|
23
|
+
" - name: Check out repository",
|
|
24
|
+
" uses: actions/checkout@v5",
|
|
25
|
+
"",
|
|
26
|
+
" - name: Set up Node",
|
|
27
|
+
" uses: actions/setup-node@v6",
|
|
28
|
+
" with:",
|
|
29
|
+
" node-version: 22",
|
|
30
|
+
"",
|
|
31
|
+
" - name: Install Mechanic CLI",
|
|
32
|
+
` run: npm install -g ${CLI_PACKAGE_SPEC}`,
|
|
33
|
+
"",
|
|
34
|
+
" - name: Validate task files",
|
|
35
|
+
" run: mechanic tasks validate tasks/",
|
|
36
|
+
]);
|
|
37
|
+
}
|
|
38
|
+
function deployWorkflow() {
|
|
39
|
+
return withTrailingNewline([
|
|
40
|
+
"name: Deploy Mechanic tasks",
|
|
41
|
+
"",
|
|
42
|
+
"on:",
|
|
43
|
+
" workflow_dispatch:",
|
|
44
|
+
" inputs:",
|
|
45
|
+
" task_path:",
|
|
46
|
+
' description: "Task file to deploy. Leave blank only when deploy_all is true."',
|
|
47
|
+
" required: false",
|
|
48
|
+
" type: string",
|
|
49
|
+
" deploy_all:",
|
|
50
|
+
' description: "Deploy every task JSON file."',
|
|
51
|
+
" required: true",
|
|
52
|
+
" default: false",
|
|
53
|
+
" type: boolean",
|
|
54
|
+
" mode:",
|
|
55
|
+
' description: "Run a dry-run plan or deploy after the plan succeeds."',
|
|
56
|
+
" required: true",
|
|
57
|
+
" default: dry-run",
|
|
58
|
+
" type: choice",
|
|
59
|
+
" options:",
|
|
60
|
+
" - dry-run",
|
|
61
|
+
" - deploy",
|
|
62
|
+
"",
|
|
63
|
+
"concurrency:",
|
|
64
|
+
" group: mechanic-deploy-production",
|
|
65
|
+
" cancel-in-progress: false",
|
|
66
|
+
"",
|
|
67
|
+
"jobs:",
|
|
68
|
+
" plan:",
|
|
69
|
+
" permissions:",
|
|
70
|
+
" contents: read",
|
|
71
|
+
" runs-on: ubuntu-latest",
|
|
72
|
+
" steps:",
|
|
73
|
+
" - name: Check out repository",
|
|
74
|
+
" uses: actions/checkout@v5",
|
|
75
|
+
"",
|
|
76
|
+
" - name: Set up Node",
|
|
77
|
+
" uses: actions/setup-node@v6",
|
|
78
|
+
" with:",
|
|
79
|
+
" node-version: 22",
|
|
80
|
+
"",
|
|
81
|
+
" - name: Install Mechanic CLI",
|
|
82
|
+
` run: npm install -g ${CLI_PACKAGE_SPEC}`,
|
|
83
|
+
"",
|
|
84
|
+
" - name: Validate task selection",
|
|
85
|
+
" env:",
|
|
86
|
+
" TASK_PATH: ${{ inputs.task_path }}",
|
|
87
|
+
" DEPLOY_ALL: ${{ inputs.deploy_all }}",
|
|
88
|
+
" shell: bash",
|
|
89
|
+
" run: |",
|
|
90
|
+
' if [[ -z "$TASK_PATH" && "$DEPLOY_ALL" != "true" ]]; then',
|
|
91
|
+
' echo "Set task_path or deploy_all=true." >&2',
|
|
92
|
+
" exit 1",
|
|
93
|
+
" fi",
|
|
94
|
+
"",
|
|
95
|
+
' if [[ -n "$TASK_PATH" && "$DEPLOY_ALL" == "true" ]]; then',
|
|
96
|
+
' echo "Use task_path or deploy_all=true, not both." >&2',
|
|
97
|
+
" exit 1",
|
|
98
|
+
" fi",
|
|
99
|
+
"",
|
|
100
|
+
" - name: Validate task files",
|
|
101
|
+
" run: mechanic tasks validate tasks/",
|
|
102
|
+
"",
|
|
103
|
+
" - name: Dry-run deploy plan",
|
|
104
|
+
" env:",
|
|
105
|
+
" MECHANIC_API_TOKEN: ${{ secrets.MECHANIC_API_TOKEN }}",
|
|
106
|
+
" TASK_PATH: ${{ inputs.task_path }}",
|
|
107
|
+
" DEPLOY_ALL: ${{ inputs.deploy_all }}",
|
|
108
|
+
" shell: bash",
|
|
109
|
+
" run: |",
|
|
110
|
+
' if [[ "$DEPLOY_ALL" == "true" ]]; then',
|
|
111
|
+
" mechanic tasks publish --all --dry-run",
|
|
112
|
+
" else",
|
|
113
|
+
' mechanic tasks publish "$TASK_PATH" --dry-run',
|
|
114
|
+
" fi",
|
|
115
|
+
"",
|
|
116
|
+
" deploy:",
|
|
117
|
+
" if: ${{ inputs.mode == 'deploy' }}",
|
|
118
|
+
" needs: plan",
|
|
119
|
+
" permissions:",
|
|
120
|
+
" contents: write",
|
|
121
|
+
" pull-requests: write",
|
|
122
|
+
" runs-on: ubuntu-latest",
|
|
123
|
+
" steps:",
|
|
124
|
+
" - name: Check out repository",
|
|
125
|
+
" uses: actions/checkout@v5",
|
|
126
|
+
"",
|
|
127
|
+
" - name: Set up Node",
|
|
128
|
+
" uses: actions/setup-node@v6",
|
|
129
|
+
" with:",
|
|
130
|
+
" node-version: 22",
|
|
131
|
+
"",
|
|
132
|
+
" - name: Install Mechanic CLI",
|
|
133
|
+
` run: npm install -g ${CLI_PACKAGE_SPEC}`,
|
|
134
|
+
"",
|
|
135
|
+
" - name: Deploy to Mechanic",
|
|
136
|
+
" env:",
|
|
137
|
+
" MECHANIC_API_TOKEN: ${{ secrets.MECHANIC_API_TOKEN }}",
|
|
138
|
+
" TASK_PATH: ${{ inputs.task_path }}",
|
|
139
|
+
" DEPLOY_ALL: ${{ inputs.deploy_all }}",
|
|
140
|
+
" shell: bash",
|
|
141
|
+
" run: |",
|
|
142
|
+
' if [[ "$DEPLOY_ALL" == "true" ]]; then',
|
|
143
|
+
" mechanic tasks publish --all",
|
|
144
|
+
" else",
|
|
145
|
+
' mechanic tasks publish "$TASK_PATH"',
|
|
146
|
+
" fi",
|
|
147
|
+
"",
|
|
148
|
+
" - name: Open sync-state pull request",
|
|
149
|
+
" env:",
|
|
150
|
+
" GH_TOKEN: ${{ github.token }}",
|
|
151
|
+
" shell: bash",
|
|
152
|
+
" run: |",
|
|
153
|
+
' if [[ -z "$(git status --porcelain -- mechanic.json .mechanic tasks)" ]]; then',
|
|
154
|
+
' echo "No Mechanic sync-state changes found."',
|
|
155
|
+
" exit 0",
|
|
156
|
+
" fi",
|
|
157
|
+
"",
|
|
158
|
+
' BRANCH="mechanic-sync/from-deploy"',
|
|
159
|
+
' PR_TITLE="Sync Mechanic deploy state"',
|
|
160
|
+
' PR_BODY_FILE="$(mktemp)"',
|
|
161
|
+
' git add mechanic.json .mechanic tasks',
|
|
162
|
+
' CHANGE_SUMMARY="$(git diff --cached --stat -- mechanic.json .mechanic tasks || true)"',
|
|
163
|
+
" {",
|
|
164
|
+
' echo "Updates local Mechanic task sync state after a GitHub deploy."',
|
|
165
|
+
" echo",
|
|
166
|
+
' echo "Merge this PR before the next GitHub deploy so .mechanic/links.json and task hashes stay current."',
|
|
167
|
+
" echo",
|
|
168
|
+
' echo "## Changed files"',
|
|
169
|
+
" echo",
|
|
170
|
+
" echo '```'",
|
|
171
|
+
' echo "$CHANGE_SUMMARY"',
|
|
172
|
+
" echo '```'",
|
|
173
|
+
' } > "$PR_BODY_FILE"',
|
|
174
|
+
' git config user.name "github-actions[bot]"',
|
|
175
|
+
' git config user.email "41898282+github-actions[bot]@users.noreply.github.com"',
|
|
176
|
+
' git fetch origin "$BRANCH":"refs/remotes/origin/$BRANCH" || true',
|
|
177
|
+
' git checkout -B "$BRANCH"',
|
|
178
|
+
' git commit -m "Sync Mechanic deploy state"',
|
|
179
|
+
' git push --force-with-lease origin "$BRANCH"',
|
|
180
|
+
"",
|
|
181
|
+
' if gh pr view "$BRANCH" >/dev/null 2>&1; then',
|
|
182
|
+
' gh pr edit "$BRANCH" --title "$PR_TITLE" --body-file "$PR_BODY_FILE"',
|
|
183
|
+
" else",
|
|
184
|
+
' gh pr create \\',
|
|
185
|
+
' --title "$PR_TITLE" \\',
|
|
186
|
+
' --body-file "$PR_BODY_FILE" \\',
|
|
187
|
+
' --head "$BRANCH" \\',
|
|
188
|
+
' --base "${{ github.event.repository.default_branch }}"',
|
|
189
|
+
" fi",
|
|
190
|
+
]);
|
|
191
|
+
}
|
|
192
|
+
function syncFromAppWorkflow() {
|
|
193
|
+
return withTrailingNewline([
|
|
194
|
+
"name: Pull Mechanic task updates from app",
|
|
195
|
+
"",
|
|
196
|
+
"on:",
|
|
197
|
+
" workflow_dispatch:",
|
|
198
|
+
"",
|
|
199
|
+
"permissions:",
|
|
200
|
+
" contents: write",
|
|
201
|
+
" pull-requests: write",
|
|
202
|
+
"",
|
|
203
|
+
"concurrency:",
|
|
204
|
+
" group: mechanic-sync-from-app",
|
|
205
|
+
" cancel-in-progress: false",
|
|
206
|
+
"",
|
|
207
|
+
"jobs:",
|
|
208
|
+
" sync:",
|
|
209
|
+
" runs-on: ubuntu-latest",
|
|
210
|
+
" steps:",
|
|
211
|
+
" - name: Check out repository",
|
|
212
|
+
" uses: actions/checkout@v5",
|
|
213
|
+
"",
|
|
214
|
+
" - name: Set up Node",
|
|
215
|
+
" uses: actions/setup-node@v6",
|
|
216
|
+
" with:",
|
|
217
|
+
" node-version: 22",
|
|
218
|
+
"",
|
|
219
|
+
" - name: Install Mechanic CLI",
|
|
220
|
+
` run: npm install -g ${CLI_PACKAGE_SPEC}`,
|
|
221
|
+
"",
|
|
222
|
+
" - name: Pull tasks from Mechanic",
|
|
223
|
+
" env:",
|
|
224
|
+
" MECHANIC_API_TOKEN: ${{ secrets.MECHANIC_API_TOKEN }}",
|
|
225
|
+
" run: mechanic tasks pull --all --force",
|
|
226
|
+
"",
|
|
227
|
+
" - name: Validate task files",
|
|
228
|
+
" run: mechanic tasks validate tasks/",
|
|
229
|
+
"",
|
|
230
|
+
" - name: Open update pull request",
|
|
231
|
+
" env:",
|
|
232
|
+
" GH_TOKEN: ${{ github.token }}",
|
|
233
|
+
" shell: bash",
|
|
234
|
+
" run: |",
|
|
235
|
+
' if [[ -z "$(git status --porcelain -- mechanic.json .mechanic tasks)" ]]; then',
|
|
236
|
+
' echo "No Mechanic changes found."',
|
|
237
|
+
" exit 0",
|
|
238
|
+
" fi",
|
|
239
|
+
"",
|
|
240
|
+
' BRANCH="mechanic-sync/from-app"',
|
|
241
|
+
' PR_TITLE="Pull Mechanic task updates from app"',
|
|
242
|
+
' PR_BODY_FILE="$(mktemp)"',
|
|
243
|
+
' git add mechanic.json .mechanic tasks',
|
|
244
|
+
' CHANGE_SUMMARY="$(git diff --cached --stat -- mechanic.json .mechanic tasks || true)"',
|
|
245
|
+
" {",
|
|
246
|
+
' echo "Updates task files from Mechanic."',
|
|
247
|
+
" echo",
|
|
248
|
+
' echo "## Changed files"',
|
|
249
|
+
" echo",
|
|
250
|
+
' if [[ -n "$CHANGE_SUMMARY" ]]; then',
|
|
251
|
+
" echo '```'",
|
|
252
|
+
' echo "$CHANGE_SUMMARY"',
|
|
253
|
+
" echo '```'",
|
|
254
|
+
" else",
|
|
255
|
+
' echo "No file summary available."',
|
|
256
|
+
" fi",
|
|
257
|
+
" echo",
|
|
258
|
+
' echo "V1 does not prune local files or links for tasks deleted in Mechanic."',
|
|
259
|
+
' } > "$PR_BODY_FILE"',
|
|
260
|
+
' git config user.name "github-actions[bot]"',
|
|
261
|
+
' git config user.email "41898282+github-actions[bot]@users.noreply.github.com"',
|
|
262
|
+
' git fetch origin "$BRANCH":"refs/remotes/origin/$BRANCH" || true',
|
|
263
|
+
' git checkout -B "$BRANCH"',
|
|
264
|
+
' git commit -m "Pull Mechanic task updates from app"',
|
|
265
|
+
' git push --force-with-lease origin "$BRANCH"',
|
|
266
|
+
"",
|
|
267
|
+
' if gh pr view "$BRANCH" >/dev/null 2>&1; then',
|
|
268
|
+
' gh pr edit "$BRANCH" --title "$PR_TITLE" --body-file "$PR_BODY_FILE"',
|
|
269
|
+
" else",
|
|
270
|
+
' gh pr create \\',
|
|
271
|
+
' --title "$PR_TITLE" \\',
|
|
272
|
+
' --body-file "$PR_BODY_FILE" \\',
|
|
273
|
+
' --head "$BRANCH" \\',
|
|
274
|
+
' --base "${{ github.event.repository.default_branch }}"',
|
|
275
|
+
" fi",
|
|
276
|
+
]);
|
|
277
|
+
}
|
|
278
|
+
export function githubWorkflowFiles() {
|
|
279
|
+
return [
|
|
280
|
+
{
|
|
281
|
+
path: ".github/workflows/mechanic-validate.yml",
|
|
282
|
+
contents: validateWorkflow(),
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
path: ".github/workflows/mechanic-deploy.yml",
|
|
286
|
+
contents: deployWorkflow(),
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
path: ".github/workflows/mechanic-sync-from-app.yml",
|
|
290
|
+
contents: syncFromAppWorkflow(),
|
|
291
|
+
},
|
|
292
|
+
];
|
|
293
|
+
}
|
package/dist/hash.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAElD"}
|
package/dist/hash.js
ADDED
package/dist/json.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAIA,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAoBxC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEtD;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAOnE"}
|
package/dist/json.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CliError } from "./errors.js";
|
|
2
|
+
export function sortValue(value) {
|
|
3
|
+
if (Array.isArray(value)) {
|
|
4
|
+
return value.map((item) => sortValue(item));
|
|
5
|
+
}
|
|
6
|
+
if (value && typeof value === "object") {
|
|
7
|
+
return Object.keys(value)
|
|
8
|
+
.sort()
|
|
9
|
+
.reduce((memo, key) => {
|
|
10
|
+
const nextValue = value[key];
|
|
11
|
+
if (nextValue !== undefined) {
|
|
12
|
+
memo[key] = sortValue(nextValue);
|
|
13
|
+
}
|
|
14
|
+
return memo;
|
|
15
|
+
}, {});
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
export function stableStringify(value) {
|
|
20
|
+
return JSON.stringify(sortValue(value), null, 2);
|
|
21
|
+
}
|
|
22
|
+
export function parseJson(contents, source) {
|
|
23
|
+
try {
|
|
24
|
+
return JSON.parse(contents);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
28
|
+
throw new CliError(`Invalid JSON in ${source}: ${message}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
package/dist/tasks.d.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { JsonObject, LinkEntry, Project, TaskEnvelope } from "./types.js";
|
|
2
|
+
export type ResolvedTaskSelector = {
|
|
3
|
+
input: string;
|
|
4
|
+
source: "file" | "helper" | "linked_remote_id" | "slug" | "remote_id";
|
|
5
|
+
slug?: string;
|
|
6
|
+
file?: string;
|
|
7
|
+
helperDir?: string;
|
|
8
|
+
link?: LinkEntry | null;
|
|
9
|
+
remoteId?: string;
|
|
10
|
+
};
|
|
11
|
+
type ResolveTaskSelectorOptions = {
|
|
12
|
+
allowHelperDir?: boolean;
|
|
13
|
+
allowRemoteId?: boolean;
|
|
14
|
+
};
|
|
15
|
+
export declare function taskSlug(input: string): string;
|
|
16
|
+
export declare function taskFiles(project: Project): Promise<string[]>;
|
|
17
|
+
export declare function slugFromTaskFile(filePath: string): string;
|
|
18
|
+
export declare function taskPath(project: Project, slug: string): string;
|
|
19
|
+
export declare function displayTaskPath(project: Project, filePath: string): string;
|
|
20
|
+
export declare function readTaskFile(filePath: string): Promise<JsonObject>;
|
|
21
|
+
export declare function readRawTaskFile(filePath: string): Promise<JsonObject>;
|
|
22
|
+
export declare function writeTaskFilePath(filePath: string, task: JsonObject): Promise<string>;
|
|
23
|
+
export declare function refreshHelperDirForTaskFile(filePath: string): Promise<void>;
|
|
24
|
+
export declare function writeTaskFilePathAndRefreshHelper(filePath: string, task: JsonObject): Promise<string>;
|
|
25
|
+
export declare function writeTaskFile(project: Project, slug: string, task: JsonObject, force?: boolean): Promise<string>;
|
|
26
|
+
export declare function resolveTaskSelector(project: Project, input: string, options?: ResolveTaskSelectorOptions): Promise<ResolvedTaskSelector>;
|
|
27
|
+
export declare function selectedTaskFiles(project: Project, input: string | undefined, all: boolean): Promise<string[]>;
|
|
28
|
+
export declare function remoteChangedSinceLastPull(link: LinkEntry, remote: Pick<TaskEnvelope, "content_hash">): boolean;
|
|
29
|
+
export declare function remoteChangedSinceLastPullDetails(force?: boolean): string;
|
|
30
|
+
export declare function remoteChangedSinceLastPullMessage(relativeFile: string, remoteId: string): string;
|
|
31
|
+
export declare function taskForPush(task: JsonObject): JsonObject;
|
|
32
|
+
export declare function nextAvailableSlug(project: Project, baseSlug: string): Promise<string>;
|
|
33
|
+
export declare function taskFromHelperDir(dirPath: string): Promise<JsonObject>;
|
|
34
|
+
export declare function helperDirForTaskFile(filePath: string): string | null;
|
|
35
|
+
export declare function unbundledHelperDirForTaskFile(filePath: string, task: JsonObject): Promise<string | null>;
|
|
36
|
+
export declare function rawTaskFromHelperDir(dirPath: string): Promise<JsonObject>;
|
|
37
|
+
export declare function unbundleTask(filePath: string, outDir: string): Promise<void>;
|
|
38
|
+
export declare function bundleTask(dirPath: string, outFile: string): Promise<void>;
|
|
39
|
+
export type ValidationResult = {
|
|
40
|
+
ok: boolean;
|
|
41
|
+
source: string;
|
|
42
|
+
errors: string[];
|
|
43
|
+
};
|
|
44
|
+
export declare function validateTask(task: JsonObject, source: string): ValidationResult;
|
|
45
|
+
export declare function validateTaskForPush(task: JsonObject, source: string): ValidationResult;
|
|
46
|
+
export declare function diffTasks(local: JsonObject, remote: JsonObject): string | null;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=tasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"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"}
|