@effect-app/cli 2.1.0-beta.29 → 2.1.0-beta.31

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/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @effect-app/cli
2
2
 
3
+ ## 2.1.0-beta.31
4
+
5
+ ### Patch Changes
6
+
7
+ - e7ad78c: Add `sync-effect-app` to sync vendored Effect App libs by pinned package version.
8
+ The command prefers package-version git tags and supports `--ref latest` for main.
9
+ - e7ad78c: Sync Effect subtrees from a repository URL without requiring a local git remote.
10
+
11
+ ## 2.1.0-beta.30
12
+
13
+ ### Patch Changes
14
+
15
+ - 78d076a: Update effect packages to `4.0.0-beta.84` (`effect`, `@effect/platform-node`, `@effect/platform-browser`, `@effect/atom-vue`, `@effect/sql-sqlite-node`, `@effect/vitest`).
16
+
3
17
  ## 2.1.0-beta.29
4
18
 
5
19
  ### Patch Changes
@@ -1,2 +1,2 @@
1
1
  export declare const patchArgvForWrapCommands: (argv: Array<string>) => void;
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJndi1wYXRjaC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FyZ3YtcGF0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsZUFBTyxNQUFNLHdCQUF3QixTQUFVLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBRyxJQU05RCxDQUFBIn0=
2
+ //# sourceMappingURL=argv-patch.d.ts.map
package/dist/extract.d.ts CHANGED
@@ -8,10 +8,10 @@ import type * as PlatformError from "effect/PlatformError";
8
8
  * JSON export entries that map source files to their compiled .js and .d.ts outputs
9
9
  *
10
10
  * Example output:
11
- * "./utils/helper": { "types": "./dist/utils/helper.d.ts", "default": "./dist/utils/helper.js" },
11
+ * "./utils/helper": { "types": "./dist/utils/helper.d.js", "default": "./dist/utils/helper.js" },
12
12
  *
13
13
  * This allows users to import individual modules instead of the entire package:
14
14
  * import { helper } from 'package/utils/helper' instead of 'package'
15
15
  */
16
16
  export declare const ExtractExportMappingsService: Effect.Effect<(cwd: string) => Effect.Effect<string, PlatformError.PlatformError, never>, never, FileSystem.FileSystem | Path.Path>;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2V4dHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLFVBQVUsTUFBTSxtQkFBbUIsQ0FBQTtBQUcvQyxPQUFPLEtBQUssSUFBSSxNQUFNLGFBQWEsQ0FBQTtBQUNuQyxPQUFPLEtBQUssS0FBSyxhQUFhLE1BQU0sc0JBQXNCLENBQUE7QUFFMUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILGVBQU8sTUFBTSw0QkFBNEIscUlBdURyQyxDQUFBIn0=
17
+ //# sourceMappingURL=extract.d.ts.map
package/dist/gist.d.ts CHANGED
@@ -413,4 +413,4 @@ export declare class GistHandler extends GistHandler_base {
413
413
  static Default: Layer.Layer<GistHandler, never, import("effect/unstable/process/ChildProcessSpawner").ChildProcessSpawner | FileSystem.FileSystem | Path.Path>;
414
414
  }
415
415
  export {};
416
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lzdC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQTtBQUV6QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssVUFBVSxNQUFNLG1CQUFtQixDQUFBO0FBRS9DLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBRXJDLE9BQU8sS0FBSyxJQUFJLE1BQU0sYUFBYSxDQUFBO0FBR25DLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBT3ZDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFBOzs7O0FBRW5ELHFCQUFhLFNBQVUsU0FBUSxlQUE4QjtJQUFFLE9BQU8sRUFBRSxNQUFNLENBQUE7Q0FBRSxDQUFDO0NBQUc7Ozs7Ozs7Ozs7OztBQU9wRixxQkFBYSxTQUFVLFNBQVEsY0FLNUI7Q0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFTjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxxQkFBYSxnQkFBaUIsU0FBUSxxQkFvRHJDO0NBQUc7Ozs7Ozs7Ozs7Ozs7O0FBRUoscUJBQWEsUUFBUyxTQUFRLGFBUTNCO0NBQUc7Ozs7Ozs7O0FBRU47OztHQUdHO0FBQ0gscUJBQWEsY0FBZSxTQUFRLG1CQUdqQztDQUFHO0FBRU4sZUFBTyxNQUFNLGdCQUFnQixzQ0FBK0IsQ0FBQTtBQUM1RCxNQUFNLFdBQVcsZ0JBQWlCLFNBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxnQkFBZ0IsQ0FBQztDQUFHO0FBRXhGOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxxQkFBYSxTQUFTO0lBQ3BCLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQTtJQUN6QixPQUFPLEVBQUUsTUFBTSxDQUFBO0lBRWYsT0FBTyxFQUFFLE1BQU0sQ0FBQTtJQUVmLFlBQVksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQUUsT0FBTyxFQUFFLGdCQUFnQixDQUFDO1FBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztRQUFDLE9BQU8sRUFBRSxNQUFNLENBQUE7S0FBRSxFQUl6RztDQUNGOzs7O0FBVUQsY0FBTSwwQkFBMkIsU0FBUSxnQ0FBK0M7SUFDdEYsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUE7SUFDeEIsUUFBUSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUE7Q0FDL0IsQ0FBQztDQUFHOzs7O0FBRUwsY0FBTSxhQUFjLFNBQVEsbUJBQWtDO0lBQzVELFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFBO0NBQ3pCLENBQUM7Q0FBRzs7SUE4VUM7Ozs7O09BS0c7O0lBR0g7Ozs7O09BS0c7NkJBblRNLE1BQU0sUUFDVDtRQUFFLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQztRQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFFLEtBQ3BELE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLDBCQUEwQixDQUFDO0lBb1R2RDs7Ozs7O09BTUc7O0lBR0g7Ozs7Ozs7Ozs7O09BV0c7O21CQTFOVSxNQUFNO3FCQUNKLE1BQU07ZUFDWjtZQUNMLElBQUksRUFBRSxNQUFNLENBQUE7WUFDWixJQUFJLEVBQUUsTUFBTSxDQUFBO1NBQ2IsRUFBRTttQkFDUSxPQUFPO2FBQ2IsTUFBTTs7Ozs7SUFzTmI7Ozs7Ozs7OztPQVNHOztpQkF0S1EsTUFBTTttQkFDSixNQUFNO2FBQ1osTUFBTTs7SUF1S2I7Ozs7Ozs7O09BUUc7O2lCQTlKUSxNQUFNO21CQUNKLE1BQU07bUJBQ04sTUFBTTthQUNaLE1BQU07O0lBOEpiOzs7Ozs7Ozs7T0FTRzs7aUJBN0pRLE1BQU07bUJBQ0osTUFBTTttQkFDTixNQUFNO21CQUNOLE1BQU07YUFDWixNQUFNOztJQTRKYjs7Ozs7Ozs7T0FRRzs7aUJBN0lRLE1BQU07bUJBQ0osTUFBTTtjQUNYO1lBQ0osSUFBSSxFQUFFLE1BQU0sQ0FBQTtZQUNaLElBQUksRUFBRSxNQUFNLENBQUE7U0FDYjthQUNJLE1BQU07O0lBMEliOzs7OztPQUtHOztpQkFoSDBDLE1BQU07bUJBQWEsTUFBTTs7OztRQXNCdEU7Ozs7O1dBS0c7O1FBR0g7Ozs7O1dBS0c7Ozs7O1FBR0g7Ozs7OztXQU1HOztRQUdIOzs7Ozs7Ozs7OztXQVdHOzs7Ozs7Ozs7Ozs7OztRQUdIOzs7Ozs7Ozs7V0FTRzs7Ozs7O1FBR0g7Ozs7Ozs7O1dBUUc7Ozs7Ozs7UUFHSDs7Ozs7Ozs7O1dBU0c7Ozs7Ozs7O1FBR0g7Ozs7Ozs7O1dBUUc7Ozs7Ozs7Ozs7UUFHSDs7Ozs7V0FLRzs7Ozs7OztBQWphVCxjQUFNLGFBQWMsU0FBUSxrQkFxYTFCO0lBQ0EsTUFBTSxDQUFDLDBCQUEwQix1REFBZ0M7SUFDakUsTUFBTSxDQUFDLE9BQU8sK0dBRWI7Q0FDRjs7O2tCQVd5RixNQUFNOzs7Ozs7Ozs7QUFUaEcscUJBQWEsV0FBWSxTQUFRLGdCQTBNL0I7SUFDQSxNQUFNLENBQUMsMEJBQTBCLHFGQUFnQztJQUNqRSxNQUFNLENBQUMsT0FBTyxpSkFFYjtDQUNGIn0=
416
+ //# sourceMappingURL=gist.d.ts.map
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
2
+ //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ import { GistHandler } from "./gist.js";
14
14
  import { RunCommandService } from "./os-command.js";
15
15
  import { packages } from "./shared.js";
16
16
  import { patchArgvForWrapCommands } from "./argv-patch.js";
17
+ import { syncEffectAppSubtree } from "./sync-effect-app-subtree.js";
17
18
  import { syncEffectSubtree } from "./sync-effect-subtree.js";
18
19
  import { syncDiff, syncPush, syncShared } from "./sync-shared.js";
19
20
  patchArgvForWrapCommands(process.argv);
@@ -464,20 +465,39 @@ NodeRuntime.runMain(Effect
464
465
  .make("sync-effect", {
465
466
  manifests: Flag.string("manifests").pipe(Flag.withAlias("m"), Flag.optional, Flag.withDescription("Comma-separated list of package.json paths to scan (default: package.json)")),
466
467
  prefix: Flag.string("prefix").pipe(Flag.optional, Flag.withDescription("Subtree prefix (default: repos/effect)")),
467
- remote: Flag.string("remote").pipe(Flag.optional, Flag.withDescription("Git remote name (default: effect-smol)")),
468
- remoteUrl: Flag.string("remote-url").pipe(Flag.optional, Flag.withDescription("Git remote URL (default: https://github.com/Effect-TS/effect-smol.git)"))
469
- }, Effect.fn("effa-cli.sync-effect")(function* ({ manifests, prefix, remote, remoteUrl }) {
468
+ url: Flag.string("url").pipe(Flag.optional, Flag.withDescription("Git repository URL (default: https://github.com/Effect-TS/effect-smol.git)"))
469
+ }, Effect.fn("effa-cli.sync-effect")(function* ({ manifests, prefix, url }) {
470
470
  yield* syncEffectSubtree({
471
471
  manifestPaths: Option.match(manifests, {
472
472
  onNone: () => ["package.json"],
473
473
  onSome: (m) => m.split(",").map((p) => p.trim())
474
474
  }),
475
475
  subtreePrefix: Option.getOrElse(prefix, () => "repos/effect"),
476
- remoteName: Option.getOrElse(remote, () => "effect-smol"),
477
- remoteUrl: Option.getOrElse(remoteUrl, () => "https://github.com/Effect-TS/effect-smol.git")
476
+ url: Option.getOrElse(url, () => "https://github.com/Effect-TS/effect-smol.git")
478
477
  });
479
478
  }))
480
479
  .pipe(Command.withDescription("Sync the Effect subtree to the version pinned in package.json"));
480
+ const syncEffectApp = Command
481
+ .make("sync-effect-app", {
482
+ manifests: Flag.string("manifests").pipe(Flag.withAlias("m"), Flag.optional, Flag.withDescription("Comma-separated list of package.json paths to scan (default: package.json)")),
483
+ prefix: Flag.string("prefix").pipe(Flag.optional, Flag.withDescription("Subtree prefix (default: repos/libs)")),
484
+ url: Flag.string("url").pipe(Flag.optional, Flag.withDescription("Git repository URL (default: https://github.com/effect-app/libs.git)")),
485
+ ref: Flag.string("ref").pipe(Flag.optional, Flag.withDescription("Ref escape hatch (branch/tag/sha/latest); latest means main"))
486
+ }, Effect.fn("effa-cli.sync-effect-app")(function* ({ manifests, prefix, ref, url }) {
487
+ yield* syncEffectAppSubtree({
488
+ manifestPaths: Option.match(manifests, {
489
+ onNone: () => ["package.json"],
490
+ onSome: (m) => m.split(",").map((p) => p.trim())
491
+ }),
492
+ ...Option.match(ref, {
493
+ onNone: () => ({}),
494
+ onSome: (ref) => ({ ref })
495
+ }),
496
+ subtreePrefix: Option.getOrElse(prefix, () => "repos/libs"),
497
+ url: Option.getOrElse(url, () => "https://github.com/effect-app/libs.git")
498
+ });
499
+ }))
500
+ .pipe(Command.withDescription("Sync the Effect App libs subtree to the version pinned in package.json"));
481
501
  const SharedLockfileFlag = Flag.file("lockfile").pipe(Flag.optional, Flag.withDescription("Path to lockfile (default: .shared.json)"));
482
502
  const sync = Command
483
503
  .make("sync", {
@@ -528,6 +548,7 @@ NodeRuntime.runMain(Effect
528
548
  gist,
529
549
  nuke,
530
550
  syncEffect,
551
+ syncEffectApp,
531
552
  sync,
532
553
  syncDiffCmd,
533
554
  syncPushCmd
@@ -536,4 +557,4 @@ NodeRuntime.runMain(Effect
536
557
  });
537
558
  })()
538
559
  .pipe(Effect.scoped, Effect.provide(Layer.provideMerge(Layer.merge(GistHandler.Default, RunCommandService.Default), NodeServices.layer))));
539
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0RBQWtEO0FBQ2xELHFDQUFxQztBQUNyQyw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFckUsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLFVBQVUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssSUFBSSxNQUFNLGFBQWEsQ0FBQTtBQUNuQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXRDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRWpFLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUV0QyxXQUFXLENBQUMsT0FBTyxDQUNqQixNQUFNO0tBQ0gsRUFBRSxDQUFDLFVBQVUs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
560
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0RBQWtEO0FBQ2xELHFDQUFxQztBQUNyQyw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFckUsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLFVBQVUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUNyQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssSUFBSSxNQUFNLGFBQWEsQ0FBQTtBQUNuQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXRDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzFELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzVELE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRWpFLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUV0QyxX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
@@ -20,4 +20,4 @@ export declare class RunCommandService extends RunCommandService_base {
20
20
  static Default: Layer.Layer<RunCommandService, never, ChildProcessSpawner>;
21
21
  }
22
22
  export {};
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3MtY29tbWFuZC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL29zLWNvbW1hbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxnQkFBZ0IsQ0FBQTtBQUN6QyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssS0FBSyxNQUFNLGNBQWMsQ0FBQTtBQUVyQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQTs7MEJBb0JoRCxNQUFNLFFBQVEsTUFBTTt3QkFjdEIsTUFBTSxRQUFRLE1BQU07Ozs7Ozs7QUFoQ25EOzs7O0dBSUc7QUFDSCxxQkFBYSxpQkFBa0IsU0FBUSxzQkFzQ3JDO0lBQ0EsTUFBTSxDQUFDLE9BQU8sNkRBQWdDO0NBQy9DIn0=
23
+ //# sourceMappingURL=os-command.d.ts.map
package/dist/shared.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export declare const packages: string[];
2
2
  export declare const EFFECT_APP_LIBS: string;
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGVBQU8sTUFBTSxRQUFRLFVBQTBELENBQUE7QUFFL0UsZUFBTyxNQUFNLGVBQWUsUUFBNEQsQ0FBQSJ9
3
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1,11 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as FileSystem from "effect/FileSystem";
3
+ import { RunCommandService } from "./os-command.js";
4
+ export interface SyncEffectAppConfig {
5
+ readonly manifestPaths: ReadonlyArray<string>;
6
+ readonly subtreePrefix: string;
7
+ readonly url: string;
8
+ readonly ref?: string;
9
+ }
10
+ export declare const syncEffectAppSubtree: (config: SyncEffectAppConfig) => Effect.Effect<undefined, Error | import("effect/PlatformError").PlatformError, FileSystem.FileSystem | RunCommandService>;
11
+ //# sourceMappingURL=sync-effect-app-subtree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-effect-app-subtree.d.ts","sourceRoot":"","sources":["../src/sync-effect-app-subtree.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAG/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEnD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CACtB;AA0ED,eAAO,MAAM,oBAAoB,4JA6K/B,CAAA"}
@@ -0,0 +1,167 @@
1
+ import * as Arr from "effect/Array";
2
+ import * as Effect from "effect/Effect";
3
+ import * as FileSystem from "effect/FileSystem";
4
+ import * as Option from "effect/Option";
5
+ import * as Path from "node:path";
6
+ import { RunCommandService } from "./os-command.js";
7
+ const depSections = ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"];
8
+ const packageManifestPaths = {
9
+ "effect-app": "packages/effect-app/package.json",
10
+ "@effect-app/infra": "packages/infra/package.json",
11
+ "@effect-app/vue": "packages/vue/package.json",
12
+ "@effect-app/vue-components": "packages/vue-components/package.json",
13
+ "@effect-app/cli": "packages/cli/package.json",
14
+ "@effect-app/eslint-codegen-model": "packages/eslint-codegen-model/package.json",
15
+ "@effect-app/eslint-shared-config": "packages/eslint-shared-config/package.json"
16
+ };
17
+ const packagePreference = Object.keys(packageManifestPaths);
18
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
19
+ const isEffectAppPackage = (name) => name === "effect-app" || name.startsWith("@effect-app/");
20
+ const isNonEmptyString = (value) => value !== "";
21
+ const shellQuote = (value) => `'${value.replaceAll("'", "'\\''")}'`;
22
+ const normalizeVersion = (range) => {
23
+ const match = range.match(/\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?/);
24
+ return match?.[0];
25
+ };
26
+ const resolveRequestedRef = (ref) => ref === "latest" ? "main" : ref;
27
+ const parsePackageVersion = (source, packagePath) => {
28
+ const parsed = JSON.parse(source);
29
+ if (!isRecord(parsed) || typeof parsed["version"] !== "string") {
30
+ throw new Error(`Could not read version from ${packagePath}`);
31
+ }
32
+ return parsed["version"];
33
+ };
34
+ const parseDefaultBranch = (source) => {
35
+ const line = source
36
+ .split("\n")
37
+ .find((line) => line.startsWith("ref: refs/heads/") && line.endsWith("\tHEAD"));
38
+ if (!line) {
39
+ throw new Error("Could not resolve default branch for effect-app libs repository");
40
+ }
41
+ return line.slice("ref: refs/heads/".length, -"\tHEAD".length);
42
+ };
43
+ const selectVersionMentions = (mentions) => {
44
+ for (const packageName of packagePreference) {
45
+ const selected = mentions.filter((mention) => mention.name === packageName);
46
+ if (Arr.isArrayNonEmpty(selected))
47
+ return selected;
48
+ }
49
+ return mentions;
50
+ };
51
+ const describeMentions = (mentions) => mentions
52
+ .map((mention) => `${mention.manifestPath} (${mention.section}) ${mention.name}: ${mention.range}`)
53
+ .join("\n");
54
+ export const syncEffectAppSubtree = Effect.fnUntraced(function* (config) {
55
+ const fs = yield* FileSystem.FileSystem;
56
+ const { runGetExitCode, runGetString } = yield* RunCommandService;
57
+ const run = Effect.fnUntraced(function* (command) {
58
+ const exitCode = yield* runGetExitCode(command);
59
+ if (exitCode !== 0) {
60
+ return yield* Effect.fail(new Error(`Command failed with exit code ${exitCode}: ${command}`));
61
+ }
62
+ });
63
+ if (config.ref) {
64
+ const ref = resolveRequestedRef(config.ref);
65
+ yield* Effect.logInfo(`Using effect-app subtree ref: ${ref}`);
66
+ yield* Effect.logInfo(`Using effect-app subtree url: ${config.url}`);
67
+ return yield* run(`git -c status.showUntrackedFiles=no subtree pull --prefix=${shellQuote(config.subtreePrefix)} ${shellQuote(config.url)} ${shellQuote(ref)} --squash`);
68
+ }
69
+ const versionMentions = [];
70
+ for (const manifestPath of config.manifestPaths) {
71
+ if (!(yield* fs.exists(manifestPath)))
72
+ continue;
73
+ const manifest = JSON.parse(yield* fs.readFileString(manifestPath));
74
+ if (!isRecord(manifest))
75
+ continue;
76
+ for (const section of depSections) {
77
+ const deps = manifest[section];
78
+ if (!isRecord(deps))
79
+ continue;
80
+ for (const [name, range] of Object.entries(deps)) {
81
+ if (!isEffectAppPackage(name) || typeof range !== "string")
82
+ continue;
83
+ const normalized = normalizeVersion(range);
84
+ if (!normalized)
85
+ continue;
86
+ versionMentions.push({ manifestPath, section, name, range, normalized });
87
+ }
88
+ }
89
+ }
90
+ if (!Arr.isArrayNonEmpty(versionMentions)) {
91
+ return yield* Effect.fail(new Error("Could not find any effect-app/@effect-app dependency versions in manifests"));
92
+ }
93
+ const selectedMentions = selectVersionMentions(versionMentions);
94
+ const versions = [...new Set(selectedMentions.map((mention) => mention.normalized))];
95
+ if (Arr.isArrayNonEmpty(versions.slice(1))) {
96
+ return yield* Effect.fail(new Error(`Found multiple Effect App versions. Please align first:\n${describeMentions(selectedMentions)}`));
97
+ }
98
+ const version = selectedMentions[0].normalized;
99
+ const packageName = selectedMentions[0].name;
100
+ const packagePath = packageManifestPaths[packageName];
101
+ if (!packagePath) {
102
+ return yield* Effect.fail(new Error(`No effect-app libs package manifest mapping for ${packageName}`));
103
+ }
104
+ const tagCandidates = [
105
+ `${packageName}@${version}`,
106
+ `v${version}`,
107
+ version
108
+ ];
109
+ let remoteRef;
110
+ for (const candidate of tagCandidates) {
111
+ const tagResult = yield* runGetString(`git ls-remote --exit-code --tags ${shellQuote(config.url)} ${shellQuote(`refs/tags/${candidate}`)}`)
112
+ .pipe(Effect.option);
113
+ if (Option.isSome(tagResult)) {
114
+ remoteRef = candidate;
115
+ break;
116
+ }
117
+ }
118
+ if (remoteRef) {
119
+ yield* Effect.logInfo(`Using effect-app package: ${packageName}@${version}`);
120
+ yield* Effect.logInfo(`Using effect-app subtree ref: ${remoteRef}`);
121
+ yield* Effect.logInfo(`Using effect-app subtree url: ${config.url}`);
122
+ return yield* run(`git -c status.showUntrackedFiles=no subtree pull --prefix=${shellQuote(config.subtreePrefix)} ${shellQuote(config.url)} ${shellQuote(remoteRef)} --squash`);
123
+ }
124
+ const defaultBranchOutput = yield* runGetString(`git ls-remote --symref ${shellQuote(config.url)} HEAD`);
125
+ const defaultBranch = yield* Effect.try({
126
+ try: () => parseDefaultBranch(defaultBranchOutput),
127
+ catch: (cause) => cause instanceof Error ? cause : new Error(String(cause))
128
+ });
129
+ const cachePath = (yield* runGetString("git rev-parse --git-path effa-sync/effect-app-libs.git")).trim();
130
+ yield* run(`mkdir -p ${shellQuote(Path.dirname(cachePath))}`);
131
+ if (!(yield* fs.exists(cachePath))) {
132
+ yield* run(`git init --bare ${shellQuote(cachePath)}`);
133
+ }
134
+ yield* run(`git --git-dir=${shellQuote(cachePath)} fetch --prune ${shellQuote(config.url)} ${shellQuote(`+refs/heads/${defaultBranch}:refs/heads/${defaultBranch}`)}`);
135
+ const commits = (yield* runGetString(`git --git-dir=${shellQuote(cachePath)} rev-list ${shellQuote(`refs/heads/${defaultBranch}`)}`))
136
+ .trim()
137
+ .split("\n")
138
+ .filter(isNonEmptyString);
139
+ if (!Arr.isArrayNonEmpty(commits)) {
140
+ return yield* Effect.fail(new Error(`No commits found on ${defaultBranch} for ${config.url}`));
141
+ }
142
+ let commit;
143
+ for (const candidate of commits) {
144
+ const packageJsonResult = yield* runGetString(`git --git-dir=${shellQuote(cachePath)} show ${shellQuote(`${candidate}:${packagePath}`)}`)
145
+ .pipe(Effect.option);
146
+ if (Option.isNone(packageJsonResult))
147
+ continue;
148
+ const candidateVersion = yield* Effect.try({
149
+ try: () => parsePackageVersion(packageJsonResult.value, packagePath),
150
+ catch: (cause) => cause instanceof Error ? cause : new Error(String(cause))
151
+ });
152
+ if (candidateVersion === version) {
153
+ commit = candidate;
154
+ break;
155
+ }
156
+ }
157
+ if (!commit) {
158
+ return yield* Effect.fail(new Error(`No commit found on ${defaultBranch} where ${packagePath} has version ${version}. Tried tags: ${tagCandidates.join(", ")}`));
159
+ }
160
+ const syncRef = "refs/effa-sync/effect-app-selected";
161
+ yield* run(`git --git-dir=${shellQuote(cachePath)} update-ref ${shellQuote(syncRef)} ${shellQuote(commit)}`);
162
+ yield* Effect.logInfo(`Using effect-app package: ${packageName}@${version}`);
163
+ yield* Effect.logInfo(`Using effect-app subtree commit: ${commit}`);
164
+ yield* Effect.logInfo(`Using effect-app subtree url: ${config.url}`);
165
+ yield* run(`git -c status.showUntrackedFiles=no subtree pull --prefix=${shellQuote(config.subtreePrefix)} ${shellQuote(cachePath)} ${shellQuote(syncRef)} --squash`);
166
+ });
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1lZmZlY3QtYXBwLXN1YnRyZWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3luYy1lZmZlY3QtYXBwLXN1YnRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUE7QUFDbkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLFVBQVUsTUFBTSxtQkFBbUIsQ0FBQTtBQUMvQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQWlCbkQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLENBQVUsQ0FBQTtBQUU1RyxNQUFNLG9CQUFvQixHQUEyQjtJQUNuRCxZQUFZLEVBQUUsa0NBQWtDO0lBQ2hELG1CQUFtQixFQUFFLDZCQUE2QjtJQUNsRCxpQkFBaUIsRUFBRSwyQkFBMkI7SUFDOUMsNEJBQTRCLEVBQUUsc0NBQXNDO0lBQ3BFLGlCQUFpQixFQUFFLDJCQUEyQjtJQUM5QyxrQ0FBa0MsRUFBRSw0Q0FBNEM7SUFDaEYsa0NBQWtDLEVBQUUsNENBQTRDO0NBQ2pGLENBQUE7QUFFRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtBQUUzRCxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQWMsRUFBb0MsRUFBRSxDQUNwRSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7QUFFdEUsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLFlB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
@@ -4,8 +4,7 @@ import { RunCommandService } from "./os-command.js";
4
4
  export interface SyncEffectConfig {
5
5
  readonly manifestPaths: ReadonlyArray<string>;
6
6
  readonly subtreePrefix: string;
7
- readonly remoteName: string;
8
- readonly remoteUrl: string;
7
+ readonly url: string;
9
8
  }
10
9
  export declare const syncEffectSubtree: (config: SyncEffectConfig) => Effect.Effect<undefined, Error | import("effect/PlatformError").PlatformError, FileSystem.FileSystem | RunCommandService>;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1lZmZlY3Qtc3VidHJlZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N5bmMtZWZmZWN0LXN1YnRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLFVBQVUsTUFBTSxtQkFBbUIsQ0FBQTtBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUVuRCxNQUFNLFdBQVcsZ0JBQWdCO0lBQy9CLFFBQVEsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzdDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFBO0lBQzlCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFBO0lBQzNCLFFBQVEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFBO0NBQzNCO0FBU0QsZUFBTyxNQUFNLGlCQUFpQix5SkF1RzVCLENBQUEifQ==
10
+ //# sourceMappingURL=sync-effect-subtree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-effect-subtree.d.ts","sourceRoot":"","sources":["../src/sync-effect-subtree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AASD,eAAO,MAAM,iBAAiB,yJAuG5B,CAAA"}
1
+ {"version":3,"file":"sync-effect-subtree.d.ts","sourceRoot":"","sources":["../src/sync-effect-subtree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAWD,eAAO,MAAM,iBAAiB,yJAmG5B,CAAA"}
@@ -3,6 +3,7 @@ import * as FileSystem from "effect/FileSystem";
3
3
  import * as Option from "effect/Option";
4
4
  import { RunCommandService } from "./os-command.js";
5
5
  const depSections = ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"];
6
+ const shellQuote = (value) => `'${value.replaceAll("'", "'\\''")}'`;
6
7
  const normalizeVersion = (range) => {
7
8
  const match = range.match(/\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?/);
8
9
  return match?.[0];
@@ -52,15 +53,10 @@ export const syncEffectSubtree = Effect.fnUntraced(function* (config) {
52
53
  `@effect/effect@${version}`,
53
54
  `@effect/ai-anthropic@${version}`
54
55
  ];
55
- // ensure remote exists
56
- const remoteResult = yield* runGetString(`git remote get-url ${config.remoteName}`).pipe(Effect.option);
57
- if (Option.isNone(remoteResult)) {
58
- yield* runGetExitCode(`git remote add ${config.remoteName} ${config.remoteUrl}`);
59
- }
60
- yield* runGetExitCode(`git fetch ${config.remoteName} --tags`);
56
+ const url = shellQuote(config.url);
61
57
  let ref;
62
58
  for (const candidate of candidateRefs) {
63
- const tagResult = yield* runGetString(`git ls-remote --exit-code --tags ${config.remoteName} refs/tags/${candidate}`)
59
+ const tagResult = yield* runGetString(`git ls-remote --exit-code --tags ${url} ${shellQuote(`refs/tags/${candidate}`)}`)
64
60
  .pipe(Effect.option);
65
61
  if (Option.isSome(tagResult)) {
66
62
  ref = candidate;
@@ -72,6 +68,7 @@ export const syncEffectSubtree = Effect.fnUntraced(function* (config) {
72
68
  }
73
69
  yield* Effect.logInfo(`Using effect version: ${version}`);
74
70
  yield* Effect.logInfo(`Using subtree ref: ${ref}`);
75
- yield* runGetExitCode(`git -c status.showUntrackedFiles=no subtree pull --prefix=${config.subtreePrefix} ${config.remoteName} ${ref} --squash`);
71
+ yield* Effect.logInfo(`Using subtree url: ${config.url}`);
72
+ yield* runGetExitCode(`git -c status.showUntrackedFiles=no subtree pull --prefix=${shellQuote(config.subtreePrefix)} ${url} ${shellQuote(ref)} --squash`);
76
73
  });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1lZmZlY3Qtc3VidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zeW5jLWVmZmVjdC1zdWJ0cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxVQUFVLE1BQU0sbUJBQW1CLENBQUE7QUFDL0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFTbkQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLENBQVUsQ0FBQTtBQUU1RyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDekMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO0lBQzlELE9BQU8sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDbkIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBQyxNQUF3QjtJQUNuRixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFBO0lBQ3ZDLE1BQU0sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsaUJBQWlCLENBQUE7SUFFakUsTUFBTSxlQUFlLEdBTWhCLEVBQUUsQ0FBQTtJQUVQLEtBQUssTUFBTSxZQUFZLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFBRSxTQUFRO1FBRS9DLE1BQU0sUUFBUSxHQUFHLElB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
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1lZmZlY3Qtc3VidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zeW5jLWVmZmVjdC1zdWJ0cmVlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sZUFBZSxDQUFBO0FBQ3ZDLE9BQU8sS0FBSyxVQUFVLE1BQU0sbUJBQW1CLENBQUE7QUFDL0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFRbkQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLENBQVUsQ0FBQTtBQUU1RyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFBO0FBRTNFLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtJQUN6QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUE7SUFDOUQsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNuQixDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFDLE1BQXdCO0lBQ25GLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUE7SUFDdkMsTUFBTSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQTtJQUVqRSxNQUFNLGVBQWUsR0FNaEIsRUFBRSxDQUFBO0lBRVAsS0FBSyxNQUFNLFlBQVksSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7UUFD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
@@ -55,4 +55,4 @@ export declare const syncPush: (opts?: {
55
55
  branch?: string | undefined;
56
56
  pr?: boolean | undefined;
57
57
  } | undefined) => Effect.Effect<void, Error | import("effect/PlatformError").PlatformError, FileSystem.FileSystem | Path.Path | RunCommandService>;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1zaGFyZWQuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zeW5jLXNoYXJlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEtBQUssVUFBVSxNQUFNLG1CQUFtQixDQUFBO0FBQy9DLE9BQU8sS0FBSyxJQUFJLE1BQU0sYUFBYSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRW5EOzs7OztHQUtHO0FBQ0gsTUFBTSxXQUFXLGNBQWM7SUFDN0IsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUE7SUFDckIsUUFBUSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUE7SUFDcEIsUUFBUSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDeEMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUM1QjtBQW9IRDs7Ozs7O0dBTUc7QUFDSCxlQUFPLE1BQU0sVUFBVTttQkFDRSxNQUFNO2FBQVcsT0FBTztVQUFRLE1BQU0sR0FBRyxTQUFTO2tKQWlEekUsQ0FBQTtBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsZUFBTyxNQUFNLFFBQVE7bUJBQXNELE1BQU07a0pBaUQvRSxDQUFBO0FBRUY7Ozs7Ozs7OztHQVNHO0FBQ0gsZUFBTyxNQUFNLFFBQVE7bUJBQ0osTUFBTSxHQUFHLFNBQVM7Y0FDdkIsTUFBTSxHQUFHLFNBQVM7YUFDbkIsTUFBTSxHQUFHLFNBQVM7U0FDdEIsT0FBTyxHQUFHLFNBQVM7a0pBa0Z4QixDQUFBIn0=
58
+ //# sourceMappingURL=sync-shared.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/cli",
3
- "version": "2.1.0-beta.29",
3
+ "version": "2.1.0-beta.31",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "bin": {
@@ -9,8 +9,8 @@
9
9
  "effect-app-cli": "./bin.js"
10
10
  },
11
11
  "dependencies": {
12
- "@effect/platform-node": "4.0.0-beta.83",
13
- "effect": "4.0.0-beta.83",
12
+ "@effect/platform-node": "4.0.0-beta.84",
13
+ "effect": "4.0.0-beta.84",
14
14
  "js-yaml": "4.2.0",
15
15
  "node-watch": "^0.7.4"
16
16
  },
@@ -20,7 +20,7 @@
20
20
  "json5": "^2.2.3",
21
21
  "typescript": "npm:@typescript/native-preview@beta",
22
22
  "vitest": "^4.1.7",
23
- "effect-app": "4.0.0-beta.265"
23
+ "effect-app": "4.0.0-beta.271"
24
24
  },
25
25
  "typesVersions": {
26
26
  "*": {
@@ -58,6 +58,10 @@
58
58
  "types": "./dist/sync-effect-subtree.d.ts",
59
59
  "default": "./dist/sync-effect-subtree.js"
60
60
  },
61
+ "./sync-effect-app-subtree": {
62
+ "types": "./dist/sync-effect-app-subtree.d.ts",
63
+ "default": "./dist/sync-effect-app-subtree.js"
64
+ },
61
65
  "./sync-shared": {
62
66
  "types": "./dist/sync-shared.d.ts",
63
67
  "default": "./dist/sync-shared.js"
package/src/index.ts CHANGED
@@ -16,6 +16,7 @@ import { RunCommandService } from "./os-command.js"
16
16
  import { packages } from "./shared.js"
17
17
 
18
18
  import { patchArgvForWrapCommands } from "./argv-patch.js"
19
+ import { syncEffectAppSubtree } from "./sync-effect-app-subtree.js"
19
20
  import { syncEffectSubtree } from "./sync-effect-subtree.js"
20
21
  import { syncDiff, syncPush, syncShared } from "./sync-shared.js"
21
22
 
@@ -727,31 +728,69 @@ NodeRuntime.runMain(
727
728
  Flag.optional,
728
729
  Flag.withDescription("Subtree prefix (default: repos/effect)")
729
730
  ),
730
- remote: Flag.string("remote").pipe(
731
- Flag.optional,
732
- Flag.withDescription("Git remote name (default: effect-smol)")
733
- ),
734
- remoteUrl: Flag.string("remote-url").pipe(
731
+ url: Flag.string("url").pipe(
735
732
  Flag.optional,
736
733
  Flag.withDescription(
737
- "Git remote URL (default: https://github.com/Effect-TS/effect-smol.git)"
734
+ "Git repository URL (default: https://github.com/Effect-TS/effect-smol.git)"
738
735
  )
739
736
  )
740
737
  },
741
- Effect.fn("effa-cli.sync-effect")(function*({ manifests, prefix, remote, remoteUrl }) {
738
+ Effect.fn("effa-cli.sync-effect")(function*({ manifests, prefix, url }) {
742
739
  yield* syncEffectSubtree({
743
740
  manifestPaths: Option.match(manifests, {
744
741
  onNone: () => ["package.json"],
745
742
  onSome: (m) => m.split(",").map((p) => p.trim())
746
743
  }),
747
744
  subtreePrefix: Option.getOrElse(prefix, () => "repos/effect"),
748
- remoteName: Option.getOrElse(remote, () => "effect-smol"),
749
- remoteUrl: Option.getOrElse(remoteUrl, () => "https://github.com/Effect-TS/effect-smol.git")
745
+ url: Option.getOrElse(url, () => "https://github.com/Effect-TS/effect-smol.git")
750
746
  })
751
747
  })
752
748
  )
753
749
  .pipe(Command.withDescription("Sync the Effect subtree to the version pinned in package.json"))
754
750
 
751
+ const syncEffectApp = Command
752
+ .make(
753
+ "sync-effect-app",
754
+ {
755
+ manifests: Flag.string("manifests").pipe(
756
+ Flag.withAlias("m"),
757
+ Flag.optional,
758
+ Flag.withDescription(
759
+ "Comma-separated list of package.json paths to scan (default: package.json)"
760
+ )
761
+ ),
762
+ prefix: Flag.string("prefix").pipe(
763
+ Flag.optional,
764
+ Flag.withDescription("Subtree prefix (default: repos/libs)")
765
+ ),
766
+ url: Flag.string("url").pipe(
767
+ Flag.optional,
768
+ Flag.withDescription(
769
+ "Git repository URL (default: https://github.com/effect-app/libs.git)"
770
+ )
771
+ ),
772
+ ref: Flag.string("ref").pipe(
773
+ Flag.optional,
774
+ Flag.withDescription("Ref escape hatch (branch/tag/sha/latest); latest means main")
775
+ )
776
+ },
777
+ Effect.fn("effa-cli.sync-effect-app")(function*({ manifests, prefix, ref, url }) {
778
+ yield* syncEffectAppSubtree({
779
+ manifestPaths: Option.match(manifests, {
780
+ onNone: () => ["package.json"],
781
+ onSome: (m) => m.split(",").map((p) => p.trim())
782
+ }),
783
+ ...Option.match(ref, {
784
+ onNone: () => ({}),
785
+ onSome: (ref) => ({ ref })
786
+ }),
787
+ subtreePrefix: Option.getOrElse(prefix, () => "repos/libs"),
788
+ url: Option.getOrElse(url, () => "https://github.com/effect-app/libs.git")
789
+ })
790
+ })
791
+ )
792
+ .pipe(Command.withDescription("Sync the Effect App libs subtree to the version pinned in package.json"))
793
+
755
794
  const SharedLockfileFlag = Flag.file("lockfile").pipe(
756
795
  Flag.optional,
757
796
  Flag.withDescription("Path to lockfile (default: .shared.json)")
@@ -838,6 +877,7 @@ NodeRuntime.runMain(
838
877
  gist,
839
878
  nuke,
840
879
  syncEffect,
880
+ syncEffectApp,
841
881
  sync,
842
882
  syncDiffCmd,
843
883
  syncPushCmd
@@ -0,0 +1,260 @@
1
+ import * as Arr from "effect/Array"
2
+ import * as Effect from "effect/Effect"
3
+ import * as FileSystem from "effect/FileSystem"
4
+ import * as Option from "effect/Option"
5
+ import * as Path from "node:path"
6
+ import { RunCommandService } from "./os-command.js"
7
+
8
+ export interface SyncEffectAppConfig {
9
+ readonly manifestPaths: ReadonlyArray<string>
10
+ readonly subtreePrefix: string
11
+ readonly url: string
12
+ readonly ref?: string
13
+ }
14
+
15
+ interface VersionMention {
16
+ readonly manifestPath: string
17
+ readonly section: string
18
+ readonly name: string
19
+ readonly range: string
20
+ readonly normalized: string
21
+ }
22
+
23
+ const depSections = ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"] as const
24
+
25
+ const packageManifestPaths: Record<string, string> = {
26
+ "effect-app": "packages/effect-app/package.json",
27
+ "@effect-app/infra": "packages/infra/package.json",
28
+ "@effect-app/vue": "packages/vue/package.json",
29
+ "@effect-app/vue-components": "packages/vue-components/package.json",
30
+ "@effect-app/cli": "packages/cli/package.json",
31
+ "@effect-app/eslint-codegen-model": "packages/eslint-codegen-model/package.json",
32
+ "@effect-app/eslint-shared-config": "packages/eslint-shared-config/package.json"
33
+ }
34
+
35
+ const packagePreference = Object.keys(packageManifestPaths)
36
+
37
+ const isRecord = (value: unknown): value is Record<string, unknown> =>
38
+ typeof value === "object" && value !== null && !Array.isArray(value)
39
+
40
+ const isEffectAppPackage = (name: string) => name === "effect-app" || name.startsWith("@effect-app/")
41
+
42
+ const isNonEmptyString = (value: string) => value !== ""
43
+
44
+ const shellQuote = (value: string) => `'${value.replaceAll("'", "'\\''")}'`
45
+
46
+ const normalizeVersion = (range: string) => {
47
+ const match = range.match(/\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?/)
48
+ return match?.[0]
49
+ }
50
+
51
+ const resolveRequestedRef = (ref: string) => ref === "latest" ? "main" : ref
52
+
53
+ const parsePackageVersion = (source: string, packagePath: string) => {
54
+ const parsed: unknown = JSON.parse(source)
55
+ if (!isRecord(parsed) || typeof parsed["version"] !== "string") {
56
+ throw new Error(`Could not read version from ${packagePath}`)
57
+ }
58
+ return parsed["version"]
59
+ }
60
+
61
+ const parseDefaultBranch = (source: string) => {
62
+ const line = source
63
+ .split("\n")
64
+ .find((line) => line.startsWith("ref: refs/heads/") && line.endsWith("\tHEAD"))
65
+
66
+ if (!line) {
67
+ throw new Error("Could not resolve default branch for effect-app libs repository")
68
+ }
69
+
70
+ return line.slice("ref: refs/heads/".length, -"\tHEAD".length)
71
+ }
72
+
73
+ const selectVersionMentions = (mentions: Arr.NonEmptyArray<VersionMention>) => {
74
+ for (const packageName of packagePreference) {
75
+ const selected = mentions.filter((mention) => mention.name === packageName)
76
+ if (Arr.isArrayNonEmpty(selected)) return selected
77
+ }
78
+
79
+ return mentions
80
+ }
81
+
82
+ const describeMentions = (mentions: ReadonlyArray<VersionMention>) =>
83
+ mentions
84
+ .map((mention) => `${mention.manifestPath} (${mention.section}) ${mention.name}: ${mention.range}`)
85
+ .join("\n")
86
+
87
+ export const syncEffectAppSubtree = Effect.fnUntraced(function*(config: SyncEffectAppConfig) {
88
+ const fs = yield* FileSystem.FileSystem
89
+ const { runGetExitCode, runGetString } = yield* RunCommandService
90
+
91
+ const run = Effect.fnUntraced(function*(command: string) {
92
+ const exitCode = yield* runGetExitCode(command)
93
+ if (exitCode !== 0) {
94
+ return yield* Effect.fail(new Error(`Command failed with exit code ${exitCode}: ${command}`))
95
+ }
96
+ })
97
+
98
+ if (config.ref) {
99
+ const ref = resolveRequestedRef(config.ref)
100
+ yield* Effect.logInfo(`Using effect-app subtree ref: ${ref}`)
101
+ yield* Effect.logInfo(`Using effect-app subtree url: ${config.url}`)
102
+ return yield* run(
103
+ `git -c status.showUntrackedFiles=no subtree pull --prefix=${shellQuote(config.subtreePrefix)} ${
104
+ shellQuote(config.url)
105
+ } ${shellQuote(ref)} --squash`
106
+ )
107
+ }
108
+
109
+ const versionMentions: Array<VersionMention> = []
110
+
111
+ for (const manifestPath of config.manifestPaths) {
112
+ if (!(yield* fs.exists(manifestPath))) continue
113
+
114
+ const manifest: unknown = JSON.parse(yield* fs.readFileString(manifestPath))
115
+ if (!isRecord(manifest)) continue
116
+
117
+ for (const section of depSections) {
118
+ const deps = manifest[section]
119
+ if (!isRecord(deps)) continue
120
+
121
+ for (const [name, range] of Object.entries(deps)) {
122
+ if (!isEffectAppPackage(name) || typeof range !== "string") continue
123
+
124
+ const normalized = normalizeVersion(range)
125
+ if (!normalized) continue
126
+
127
+ versionMentions.push({ manifestPath, section, name, range, normalized })
128
+ }
129
+ }
130
+ }
131
+
132
+ if (!Arr.isArrayNonEmpty(versionMentions)) {
133
+ return yield* Effect.fail(
134
+ new Error("Could not find any effect-app/@effect-app dependency versions in manifests")
135
+ )
136
+ }
137
+
138
+ const selectedMentions = selectVersionMentions(versionMentions)
139
+ const versions = [...new Set(selectedMentions.map((mention) => mention.normalized))]
140
+
141
+ if (Arr.isArrayNonEmpty(versions.slice(1))) {
142
+ return yield* Effect.fail(
143
+ new Error(`Found multiple Effect App versions. Please align first:\n${describeMentions(selectedMentions)}`)
144
+ )
145
+ }
146
+
147
+ const version = selectedMentions[0].normalized
148
+ const packageName = selectedMentions[0].name
149
+ const packagePath = packageManifestPaths[packageName]
150
+
151
+ if (!packagePath) {
152
+ return yield* Effect.fail(
153
+ new Error(`No effect-app libs package manifest mapping for ${packageName}`)
154
+ )
155
+ }
156
+
157
+ const tagCandidates = [
158
+ `${packageName}@${version}`,
159
+ `v${version}`,
160
+ version
161
+ ]
162
+
163
+ let remoteRef: string | undefined
164
+ for (const candidate of tagCandidates) {
165
+ const tagResult = yield* runGetString(
166
+ `git ls-remote --exit-code --tags ${shellQuote(config.url)} ${shellQuote(`refs/tags/${candidate}`)}`
167
+ )
168
+ .pipe(Effect.option)
169
+
170
+ if (Option.isSome(tagResult)) {
171
+ remoteRef = candidate
172
+ break
173
+ }
174
+ }
175
+
176
+ if (remoteRef) {
177
+ yield* Effect.logInfo(`Using effect-app package: ${packageName}@${version}`)
178
+ yield* Effect.logInfo(`Using effect-app subtree ref: ${remoteRef}`)
179
+ yield* Effect.logInfo(`Using effect-app subtree url: ${config.url}`)
180
+ return yield* run(
181
+ `git -c status.showUntrackedFiles=no subtree pull --prefix=${shellQuote(config.subtreePrefix)} ${
182
+ shellQuote(config.url)
183
+ } ${shellQuote(remoteRef)} --squash`
184
+ )
185
+ }
186
+
187
+ const defaultBranchOutput = yield* runGetString(`git ls-remote --symref ${shellQuote(config.url)} HEAD`)
188
+ const defaultBranch = yield* Effect.try({
189
+ try: () => parseDefaultBranch(defaultBranchOutput),
190
+ catch: (cause) => cause instanceof Error ? cause : new Error(String(cause))
191
+ })
192
+
193
+ const cachePath = (yield* runGetString("git rev-parse --git-path effa-sync/effect-app-libs.git")).trim()
194
+ yield* run(`mkdir -p ${shellQuote(Path.dirname(cachePath))}`)
195
+
196
+ if (!(yield* fs.exists(cachePath))) {
197
+ yield* run(`git init --bare ${shellQuote(cachePath)}`)
198
+ }
199
+
200
+ yield* run(
201
+ `git --git-dir=${shellQuote(cachePath)} fetch --prune ${shellQuote(config.url)} ${
202
+ shellQuote(`+refs/heads/${defaultBranch}:refs/heads/${defaultBranch}`)
203
+ }`
204
+ )
205
+
206
+ const commits = (yield* runGetString(
207
+ `git --git-dir=${shellQuote(cachePath)} rev-list ${shellQuote(`refs/heads/${defaultBranch}`)}`
208
+ ))
209
+ .trim()
210
+ .split("\n")
211
+ .filter(isNonEmptyString)
212
+
213
+ if (!Arr.isArrayNonEmpty(commits)) {
214
+ return yield* Effect.fail(
215
+ new Error(`No commits found on ${defaultBranch} for ${config.url}`)
216
+ )
217
+ }
218
+
219
+ let commit: string | undefined
220
+ for (const candidate of commits) {
221
+ const packageJsonResult = yield* runGetString(
222
+ `git --git-dir=${shellQuote(cachePath)} show ${shellQuote(`${candidate}:${packagePath}`)}`
223
+ )
224
+ .pipe(Effect.option)
225
+
226
+ if (Option.isNone(packageJsonResult)) continue
227
+
228
+ const candidateVersion = yield* Effect.try({
229
+ try: () => parsePackageVersion(packageJsonResult.value, packagePath),
230
+ catch: (cause) => cause instanceof Error ? cause : new Error(String(cause))
231
+ })
232
+
233
+ if (candidateVersion === version) {
234
+ commit = candidate
235
+ break
236
+ }
237
+ }
238
+
239
+ if (!commit) {
240
+ return yield* Effect.fail(
241
+ new Error(
242
+ `No commit found on ${defaultBranch} where ${packagePath} has version ${version}. Tried tags: ${
243
+ tagCandidates.join(", ")
244
+ }`
245
+ )
246
+ )
247
+ }
248
+
249
+ const syncRef = "refs/effa-sync/effect-app-selected"
250
+ yield* run(`git --git-dir=${shellQuote(cachePath)} update-ref ${shellQuote(syncRef)} ${shellQuote(commit)}`)
251
+
252
+ yield* Effect.logInfo(`Using effect-app package: ${packageName}@${version}`)
253
+ yield* Effect.logInfo(`Using effect-app subtree commit: ${commit}`)
254
+ yield* Effect.logInfo(`Using effect-app subtree url: ${config.url}`)
255
+ yield* run(
256
+ `git -c status.showUntrackedFiles=no subtree pull --prefix=${shellQuote(config.subtreePrefix)} ${
257
+ shellQuote(cachePath)
258
+ } ${shellQuote(syncRef)} --squash`
259
+ )
260
+ })
@@ -6,12 +6,13 @@ import { RunCommandService } from "./os-command.js"
6
6
  export interface SyncEffectConfig {
7
7
  readonly manifestPaths: ReadonlyArray<string>
8
8
  readonly subtreePrefix: string
9
- readonly remoteName: string
10
- readonly remoteUrl: string
9
+ readonly url: string
11
10
  }
12
11
 
13
12
  const depSections = ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"] as const
14
13
 
14
+ const shellQuote = (value: string) => `'${value.replaceAll("'", "'\\''")}'`
15
+
15
16
  const normalizeVersion = (range: string) => {
16
17
  const match = range.match(/\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?/)
17
18
  return match?.[0]
@@ -87,19 +88,12 @@ export const syncEffectSubtree = Effect.fnUntraced(function*(config: SyncEffectC
87
88
  `@effect/ai-anthropic@${version}`
88
89
  ]
89
90
 
90
- // ensure remote exists
91
- const remoteResult = yield* runGetString(`git remote get-url ${config.remoteName}`).pipe(Effect.option)
92
-
93
- if (Option.isNone(remoteResult)) {
94
- yield* runGetExitCode(`git remote add ${config.remoteName} ${config.remoteUrl}`)
95
- }
96
-
97
- yield* runGetExitCode(`git fetch ${config.remoteName} --tags`)
91
+ const url = shellQuote(config.url)
98
92
 
99
93
  let ref: string | undefined
100
94
  for (const candidate of candidateRefs) {
101
95
  const tagResult = yield* runGetString(
102
- `git ls-remote --exit-code --tags ${config.remoteName} refs/tags/${candidate}`
96
+ `git ls-remote --exit-code --tags ${url} ${shellQuote(`refs/tags/${candidate}`)}`
103
97
  )
104
98
  .pipe(Effect.option)
105
99
 
@@ -117,7 +111,10 @@ export const syncEffectSubtree = Effect.fnUntraced(function*(config: SyncEffectC
117
111
 
118
112
  yield* Effect.logInfo(`Using effect version: ${version}`)
119
113
  yield* Effect.logInfo(`Using subtree ref: ${ref}`)
114
+ yield* Effect.logInfo(`Using subtree url: ${config.url}`)
120
115
  yield* runGetExitCode(
121
- `git -c status.showUntrackedFiles=no subtree pull --prefix=${config.subtreePrefix} ${config.remoteName} ${ref} --squash`
116
+ `git -c status.showUntrackedFiles=no subtree pull --prefix=${shellQuote(config.subtreePrefix)} ${url} ${
117
+ shellQuote(ref)
118
+ } --squash`
122
119
  )
123
120
  })
package/tsconfig.json CHANGED
@@ -34,6 +34,7 @@
34
34
  "moduleResolution": "Node16",
35
35
  "noErrorTruncation": true,
36
36
  "forceConsistentCasingInFileNames": true,
37
+ "erasableSyntaxOnly": true,
37
38
  "rewriteRelativeImportExtensions": true,
38
39
  "allowImportingTsExtensions": true,
39
40
  "types": [