Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
d65315d
project: simplify from-fs by excluding the project file
josephjclark Dec 16, 2025
d73917d
rewwrite tests
josephjclark Dec 16, 2025
6011f25
more from-fs tests
josephjclark Dec 16, 2025
9f63e8f
tidy
josephjclark Dec 17, 2025
c5aa8e7
start refactoring deploy
josephjclark Dec 18, 2025
832437d
types
josephjclark Jan 14, 2026
31c776d
add project diff
josephjclark Jan 14, 2026
e47ee1c
refactor
josephjclark Jan 14, 2026
66afe2b
change semantics
josephjclark Jan 14, 2026
1598eaa
change semantics to just a,b
josephjclark Jan 14, 2026
e33e362
fix a bug issue where we modelled v1 state wronggit status
josephjclark Jan 14, 2026
f345f0a
also update jobs, triggers, edges
josephjclark Jan 14, 2026
416c2bc
deploy basically works now
josephjclark Jan 14, 2026
b01ce25
merge more project and workflow props
josephjclark Jan 14, 2026
b27bd2d
include name in project.yaml
josephjclark Jan 15, 2026
9797ff7
tweak merge to use sandbox or merge strategies
josephjclark Jan 15, 2026
d059cfa
types
josephjclark Jan 15, 2026
88b8b0e
update tests to reflect project changes
josephjclark Jan 15, 2026
a0acab7
undo edit
josephjclark Jan 15, 2026
1b5e837
changeset
josephjclark Jan 15, 2026
274f0ff
types
josephjclark Jan 15, 2026
ab96e90
deploy: confirm and dry run options
josephjclark Jan 15, 2026
b511639
use logger for confirm, nice
josephjclark Jan 15, 2026
e386418
use logger for confirm, nice
josephjclark Jan 15, 2026
17dbab3
better deploy output
josephjclark Jan 15, 2026
eb0bf4f
update integration tests
josephjclark Jan 15, 2026
3e7538b
project: support sandboxy keys
josephjclark Jan 15, 2026
3c1294d
cli: tidy
josephjclark Jan 15, 2026
ef06f98
changeset
josephjclark Jan 15, 2026
8fe7aee
update deploy to write back final file
josephjclark Jan 15, 2026
2a512b1
error hanlding
josephjclark Jan 15, 2026
4c50434
types
josephjclark Jan 15, 2026
37285f7
deploy: revert diff
josephjclark Jan 15, 2026
b5dfa41
rmeove logging
josephjclark Jan 15, 2026
7bc29b4
logging
josephjclark Jan 15, 2026
1f224bf
update messaging
josephjclark Jan 15, 2026
c016a90
log update
josephjclark Jan 15, 2026
c978179
version: cli@1.24.0
josephjclark Jan 15, 2026
b0e4aaa
comments
josephjclark Jan 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions integration-tests/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# @openfn/integration-tests-cli

## 1.0.10

### Patch Changes

- Updated dependencies [e33e362]
- Updated dependencies [1b5e837]
- @openfn/project@0.12.0

## 1.0.9

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion integration-tests/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@openfn/integration-tests-cli",
"private": true,
"version": "1.0.9",
"version": "1.0.10",
"description": "CLI integration tests",
"author": "Open Function Group <admin@openfn.org>",
"license": "ISC",
Expand Down
28 changes: 18 additions & 10 deletions integration-tests/cli/test/project-v1.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,26 +27,30 @@ requires_mfa: false
retention_policy: retain_all
version_history: []
workflows:
- name: my workflow
my-workflow:
name: my workflow
id: 0afbefab-5824-4911-aaae-a19f20106dec
concurrency: null
inserted_at: 2025-10-07T10:00:23Z
updated_at: 2025-10-07T10:00:29Z
deleted_at: null
lock_version: 2
jobs:
- name: Transform data
transform-data:
name: Transform data
body: |
fn(() => ({ x: 1}))
adaptor: "@openfn/language-common@latest"
id: b8b780f3-98dd-4244-880b-e534d8f24547
project_credential_id: null
triggers:
- type: webhook
webhook:
type: webhook
enabled: true
id: 3b4a47c0-7242-4f0c-8886-838e34762654
edges:
- id: 33dce70f-047f-4508-82fd-950eb508519b
webhook->transform-data:
id: 33dce70f-047f-4508-82fd-950eb508519b
target_job_id: b8b780f3-98dd-4244-880b-e534d8f24547
enabled: true
source_trigger_id: 3b4a47c0-7242-4f0c-8886-838e34762654
Expand All @@ -73,25 +77,29 @@ requires_mfa: false
retention_policy: retain_all
version_history: []
workflows:
- name: my workflow
my-workflow:
name: my workflow
id: 9e2cc86a-8896-4a5a-9467-9c4128207fd3
concurrency: null
inserted_at: 2025-10-07T10:00:36Z
updated_at: 2025-10-07T10:00:53Z
deleted_at: null
lock_version: 3
jobs:
- name: Transform data
transform-data:
name: Transform data
body: log('hello world')
adaptor: "@openfn/language-common@latest"
id: 8d627978-ebb9-4fb2-8cda-9b31c10c963e
project_credential_id: null
triggers:
- type: webhook
webhook:
type: webhook
enabled: true
id: 7bb476cc-0292-4573-89d0-b13417bc648e
edges:
- id: 4c68d22a-4ba7-4d8f-8103-6f4f15c4e7d2
webhook->transform-data:
id: 4c68d22a-4ba7-4d8f-8103-6f4f15c4e7d2
target_job_id: 8d627978-ebb9-4fb2-8cda-9b31c10c963e
enabled: true
source_trigger_id: 7bb476cc-0292-4573-89d0-b13417bc648e
Expand Down Expand Up @@ -133,10 +141,10 @@ test.serial('Checkout a project', async (t) => {
workflowYaml,
`id: my-workflow
name: my workflow
start: trigger-webhook
start: webhook
options: {}
steps:
- id: trigger
- id: webhook
type: webhook
next:
transform-data:
Expand Down
26 changes: 26 additions & 0 deletions packages/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
# @openfn/cli

## 1.24.0

### Minor Changes

- Total rewrite of project deploy (aka deploy --beta)

```
openfn deploy
```

This will deploy your currently checked out project to the synced app.

Recommend passing `--log debug` to get richer output of what's happening.

It will prompt for confirmation before posting.

This new function appears stable but is currently undergoing testing. Use with caution.

### Patch Changes

- Updated dependencies [e33e362]
- Updated dependencies [ef06f98]
- Updated dependencies [1b5e837]
- @openfn/lexicon@1.4.0
- @openfn/project@0.12.0

## 1.23.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@openfn/cli",
"version": "1.23.0",
"version": "1.24.0",
"description": "CLI devtools for the OpenFn toolchain",
"engines": {
"node": ">=18",
Expand Down
24 changes: 13 additions & 11 deletions packages/cli/src/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import docgen from './docgen/handler';
import docs from './docs/handler';
import metadata from './metadata/handler';
import pull from './pull/handler';
import * as projects from './projects/handler';
import * as projects from './projects';
import * as repo from './repo/handler';

import createLogger, { CLI, Logger } from './util/logger';
Expand All @@ -23,28 +23,29 @@ import { CLIError } from './errors';

export type CommandList =
| 'apollo'
| 'compile'
| 'collections-get'
| 'collections-set'
| 'collections-remove'
| 'collections-set'
| 'compile'
| 'deploy'
| 'docgen'
| 'docs'
| 'execute'
| 'metadata'
| 'pull'
| 'projects'
| 'project-checkout'
| 'project-deploy'
| 'project-fetch'
| 'project-list'
| 'project-merge'
| 'project-pull'
| 'project-version'
| 'project'
| 'projects'
| 'pull'
| 'repo-clean'
| 'repo-install'
| 'repo-list'
| 'repo-pwd'
| 'project-pull'
| 'project-list'
| 'project-version'
| 'project-merge'
| 'project-checkout'
| 'project-fetch'
| 'test'
| 'version';

Expand All @@ -67,6 +68,7 @@ const handlers = {
['repo-install']: repo.install,
['repo-pwd']: repo.pwd,
['repo-list']: repo.list,
['project-deploy']: projects.deploy,
['project-pull']: projects.pull,
['project-list']: projects.list,
['project-version']: projects.version,
Expand Down
42 changes: 0 additions & 42 deletions packages/cli/src/deploy/beta.ts

This file was deleted.

2 changes: 1 addition & 1 deletion packages/cli/src/deploy/handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
} from '@openfn/deploy';
import type { Logger } from '../util/logger';
import { DeployOptions } from './command';
import * as beta from './beta';
import * as beta from '../projects/deploy';

export type DeployFn = typeof deploy;

Expand Down
6 changes: 5 additions & 1 deletion packages/cli/src/options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -230,12 +230,16 @@ export const compile: CLIOption = {
};

export const confirm: CLIOption = {
name: 'no-confirm',
name: 'confirm',
yargs: {
alias: ['y'],
boolean: true,
description: "Skip confirmation prompts (e.g. 'Are you sure?')",
},
ensure: (opts) => {
if ((opts as any).y) {
opts.confirm = false;
}
setDefaultValue(opts, 'confirm', true);
},
};
Expand Down
2 changes: 2 additions & 0 deletions packages/cli/src/projects/command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import merge from './merge';
import checkout from './checkout';
import fetch from './fetch';
import { command as pull } from './pull';
import { command as deploy } from './deploy';

import type yargs from 'yargs';

Expand All @@ -15,6 +16,7 @@ export const projectsCommand = {
builder: (yargs: yargs.Argv) =>
yargs
.command(pull)
.command(deploy as any)
.command(list)
.command(version)
.command(merge)
Expand Down
Loading