Skip to content

Commit 7d5c048

Browse files
test promote action
1 parent d46046b commit 7d5c048

5 files changed

Lines changed: 357 additions & 4 deletions

File tree

.github/workflows/onPushPackaging.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,10 @@ jobs:
8585
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
8686
AWS_REGION: ${{ vars.AWS_REGION }}
8787
AWS_DEFAULT_REGION: ${{ vars.AWS_REGION }}
88+
- name: Promote uploaded build and generate indexes
89+
run: pnpm -C cli exec oclif promote --root . --version $(node -p "require('./package.json').version") --sha ${GITHUB_SHA::7} --channel stable --indexes --xz --ignore-missing
90+
env:
91+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
92+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
93+
AWS_REGION: ${{ vars.AWS_REGION }}
94+
AWS_DEFAULT_REGION: ${{ vars.AWS_REGION }}

cli/README.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,7 @@ See [docs/usage.md](../docs/usage.md) for full usage and resolution order (flags
290290
- [`powersync pull instance`](#powersync-pull-instance)
291291
- [`powersync status`](#powersync-status)
292292
- [`powersync stop`](#powersync-stop)
293+
- [`powersync update [CHANNEL]`](#powersync-update-channel)
293294
- [`powersync validate`](#powersync-validate)
294295

295296
## `powersync autocomplete [SHELL]`
@@ -1453,6 +1454,44 @@ EXAMPLES
14531454
14541455
_See code: [src/commands/stop.ts](https://github.com/powersync-ja/powersync-js/blob/v0.0.0/src/commands/stop.ts)_
14551456
1457+
## `powersync update [CHANNEL]`
1458+
1459+
update the powersync CLI
1460+
1461+
```
1462+
USAGE
1463+
$ powersync update [CHANNEL] [--force | | [-a | -v <value> | -i]] [-b ]
1464+
1465+
FLAGS
1466+
-a, --available See available versions.
1467+
-b, --verbose Show more details about the available versions.
1468+
-i, --interactive Interactively select version to install. This is ignored if a channel is provided.
1469+
-v, --version=<value> Install a specific version.
1470+
--force Force a re-download of the requested version.
1471+
1472+
DESCRIPTION
1473+
update the powersync CLI
1474+
1475+
EXAMPLES
1476+
Update to the stable channel:
1477+
1478+
$ powersync update stable
1479+
1480+
Update to a specific version:
1481+
1482+
$ powersync update --version 1.0.0
1483+
1484+
Interactively select version:
1485+
1486+
$ powersync update --interactive
1487+
1488+
See available versions:
1489+
1490+
$ powersync update --available
1491+
```
1492+
1493+
_See code: [@oclif/plugin-update](https://github.com/oclif/plugin-update/blob/v4.7.19/src/commands/update.ts)_
1494+
14561495
## `powersync validate`
14571496
14581497
Validate config schema, connections, and sync config before deploy.

cli/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"@oclif/plugin-commands": "^4.1.40",
1616
"@oclif/plugin-help": "^6",
1717
"@oclif/plugin-plugins": "^5",
18+
"@oclif/plugin-update": "^4.7.19",
1819
"@powersync-community/sync-config-rewriter": "^0.1.1",
1920
"@powersync/cli-core": "workspace:*",
2021
"@powersync/cli-plugin-docker": "workspace:*",
@@ -86,7 +87,8 @@
8687
"@oclif/plugin-plugins",
8788
"@powersync/cli-plugin-docker",
8889
"@oclif/plugin-autocomplete",
89-
"@oclif/plugin-commands"
90+
"@oclif/plugin-commands",
91+
"@oclif/plugin-update"
9092
],
9193
"topicSeparator": " ",
9294
"topics": {

patches/oclif@4.22.81.patch

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,26 @@ index 9a255a011cbbfb34a337f67bcbabbbffdaf65c11..006b8eb0ee5432825cf48287c5e46077
5454
const { windows } = config.pjson.oclif;
5555
if (windows && windows.name && windows.keypath) {
5656
await signWindows(o, arch, config, windows);
57+
diff --git a/lib/commands/promote.js b/lib/commands/promote.js
58+
index 680417fe220d77f81ae239130c4ba55602b09497..a16b2db7237f152036434b8ee202d7d35b1bd6b2 100644
59+
--- a/lib/commands/promote.js
60+
+++ b/lib/commands/promote.js
61+
@@ -80,11 +80,14 @@ class Promote extends core_1.Command {
62+
};
63+
if (!s3Config.bucket)
64+
this.error('Cannot determine S3 bucket for promotion');
65+
+ // Buckets with Object Ownership = bucket-owner-enforced reject ACL headers.
66+
+ // Only pass ACL when explicitly configured in package.json.
67+
+ const resolvedAcl = typeof s3Config.acl === 'string' ? s3Config.acl.trim() : undefined;
68+
const awsDefaults = {
69+
- ACL: s3Config.acl ?? client_s3_1.ObjectCannedACL.public_read,
70+
Bucket: s3Config.bucket,
71+
CacheControl: indexDefaults.maxAge,
72+
MetadataDirective: client_s3_1.MetadataDirective.REPLACE,
73+
+ ...(resolvedAcl ? { ACL: resolvedAcl } : {}),
74+
};
75+
const cloudBucketCommitKey = (shortKey) => node_path_1.default.posix.join(s3Config.bucket, (0, upload_util_1.commitAWSDir)(flags.version, flags.sha, s3Config), shortKey);
76+
const cloudChannelKey = (shortKey) => node_path_1.default.posix.join((0, upload_util_1.channelAWSDir)(flags.channel, s3Config), shortKey);
5777
diff --git a/lib/commands/upload/tarballs.js b/lib/commands/upload/tarballs.js
5878
index 1ee76bdc4297e515879ebe6489ad42af632bb6f4..bea8d7379a52005806983b04526cd02030bc6edd 100644
5979
--- a/lib/commands/upload/tarballs.js
@@ -130,3 +150,21 @@ index cbae61146324ef6ac0935c625b7858007ac238d1..4f3f145fc148ef9b76c61b27f99db6b7
130150
else {
131151
const lockpath = (0, node_fs_1.existsSync)(node_path_1.default.join(c.root, 'package-lock.json'))
132152
? node_path_1.default.join(c.root, 'package-lock.json')
153+
diff --git a/lib/version-indexes.js b/lib/version-indexes.js
154+
index 5d9686f486b1e9f5acf375f9e6a0eb06a3ca407f..ab3b55d02b81e74e2817fd686aa909bb91f05503 100644
155+
--- a/lib/version-indexes.js
156+
+++ b/lib/version-indexes.js
157+
@@ -105,11 +105,12 @@ const appendToIndex = async (input) => {
158+
[version]: originalUrl.replace(s3Config.bucket, s3Config.host),
159+
}, s3Config.indexVersionLimit), { spaces: 2 });
160+
// put the file back in the same place
161+
+ const resolvedAcl = typeof s3Config.acl === 'string' ? s3Config.acl.trim() : undefined;
162+
await aws_1.default.s3.uploadFile(jsonFileName, {
163+
- ACL: s3Config.acl ?? client_s3_1.ObjectCannedACL.public_read,
164+
Bucket: s3Config.bucket,
165+
CacheControl: maxAge,
166+
Key: key,
167+
+ ...(resolvedAcl ? { ACL: resolvedAcl } : {}),
168+
}, {
169+
dryRun: input.dryRun,
170+
});

0 commit comments

Comments
 (0)