pressship 0.1.2 → 0.1.4

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.
Files changed (43) hide show
  1. package/.claude/skills/wordpress-plugin-publish/SKILL.md +153 -0
  2. package/README.md +285 -280
  3. package/assets/logo-new.png +0 -0
  4. package/assets/pressship-dark.png +0 -0
  5. package/assets/pressship-square-dark.png +0 -0
  6. package/assets/pressship-square.png +0 -0
  7. package/assets/pressship-symbol-dark.png +0 -0
  8. package/assets/pressship-symbol.png +0 -0
  9. package/assets/pressship-wordmark-dark.png +0 -0
  10. package/assets/pressship-wordmark.png +0 -0
  11. package/assets/pressship.png +0 -0
  12. package/dist/cli.js +40 -2
  13. package/dist/cli.js.map +1 -1
  14. package/dist/package/ignore.js +2 -0
  15. package/dist/package/ignore.js.map +1 -1
  16. package/dist/plugin/demo.d.ts +44 -0
  17. package/dist/plugin/demo.js +207 -0
  18. package/dist/plugin/demo.js.map +1 -0
  19. package/dist/plugin/info.d.ts +84 -0
  20. package/dist/plugin/info.js +209 -0
  21. package/dist/plugin/info.js.map +1 -0
  22. package/dist/plugin/list.d.ts +24 -0
  23. package/dist/plugin/list.js +174 -0
  24. package/dist/plugin/list.js.map +1 -0
  25. package/dist/svn/credentials.d.ts +9 -0
  26. package/dist/svn/credentials.js +94 -0
  27. package/dist/svn/credentials.js.map +1 -0
  28. package/dist/svn/get.d.ts +45 -0
  29. package/dist/svn/get.js +139 -0
  30. package/dist/svn/get.js.map +1 -0
  31. package/dist/svn/release.d.ts +1 -0
  32. package/dist/svn/release.js +90 -13
  33. package/dist/svn/release.js.map +1 -1
  34. package/dist/svn/subversion.d.ts +18 -0
  35. package/dist/svn/subversion.js +171 -0
  36. package/dist/svn/subversion.js.map +1 -0
  37. package/dist/utils/paths.d.ts +1 -0
  38. package/dist/utils/paths.js +3 -0
  39. package/dist/utils/paths.js.map +1 -1
  40. package/dist/wordpress-org/publish.d.ts +1 -0
  41. package/dist/wordpress-org/publish.js +4 -2
  42. package/dist/wordpress-org/publish.js.map +1 -1
  43. package/package.json +6 -1
@@ -0,0 +1,139 @@
1
+ import { execa } from "execa";
2
+ import { mkdir, readdir } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { z } from "zod";
5
+ import { slugFromHostedTarget } from "../plugin/info.js";
6
+ import { ui } from "../ui.js";
7
+ import { pathExists } from "../utils/paths.js";
8
+ import { ensureSvnAvailable } from "./subversion.js";
9
+ const getOptionsSchema = z.object({
10
+ json: z.boolean().default(false),
11
+ installSvn: z.boolean().default(true)
12
+ });
13
+ export async function getPlugin(slugOrUrl, destination, rawOptions = {}) {
14
+ const options = getOptionsSchema.parse(rawOptions);
15
+ const slug = slugFromHostedTarget(slugOrUrl);
16
+ const checkoutPath = resolveCheckoutPath(slug, destination);
17
+ const runtimeOptions = {
18
+ installSvn: options.installSvn,
19
+ interactive: !options.json && process.stdin.isTTY,
20
+ quiet: options.json
21
+ };
22
+ await ensureSvnAvailable({ autoInstall: runtimeOptions.installSvn, interactive: runtimeOptions.interactive });
23
+ const result = options.json
24
+ ? await checkoutOrUpdatePlugin(slug, checkoutPath, runtimeOptions)
25
+ : await ui.task("Preparing SVN working copy", () => checkoutOrUpdatePlugin(slug, checkoutPath, runtimeOptions), (value) => value.action === "checkout" ? `Checked out ${value.slug}` : `Updated ${value.slug}`);
26
+ if (options.json) {
27
+ console.log(JSON.stringify(result, null, 2));
28
+ return;
29
+ }
30
+ printSvnGetResult(result);
31
+ }
32
+ export async function checkoutOrUpdatePlugin(slug, checkoutPath, options = {}) {
33
+ await ensureSvnAvailable({ autoInstall: options.installSvn, interactive: options.interactive });
34
+ const svnUrl = getPluginSvnUrl(slug);
35
+ const action = await resolveSvnGetAction(checkoutPath);
36
+ const commandOptions = { capture: options.quiet };
37
+ if (action === "checkout") {
38
+ await mkdir(path.dirname(checkoutPath), { recursive: true });
39
+ await runSvn(["checkout", svnUrl, checkoutPath], process.cwd(), commandOptions);
40
+ }
41
+ else {
42
+ await runSvn(["update"], checkoutPath, commandOptions);
43
+ }
44
+ const info = parseSvnInfo(await runSvn(["info"], checkoutPath, { capture: true }));
45
+ return {
46
+ slug,
47
+ action,
48
+ svnUrl,
49
+ path: checkoutPath,
50
+ info,
51
+ layout: await readSvnLayout(checkoutPath)
52
+ };
53
+ }
54
+ export function resolveCheckoutPath(slug, destination) {
55
+ return path.resolve(destination ?? slug);
56
+ }
57
+ export function getPluginSvnUrl(slug) {
58
+ return `https://plugins.svn.wordpress.org/${slug}`;
59
+ }
60
+ export async function resolveSvnGetAction(checkoutPath) {
61
+ if (!pathExists(checkoutPath)) {
62
+ return "checkout";
63
+ }
64
+ if (pathExists(path.join(checkoutPath, ".svn"))) {
65
+ return "update";
66
+ }
67
+ const entries = await readdir(checkoutPath);
68
+ if (entries.length === 0) {
69
+ return "checkout";
70
+ }
71
+ throw new Error(`Target directory already exists and is not an SVN working copy: ${checkoutPath}. Choose another path or remove the directory.`);
72
+ }
73
+ export function parseSvnInfo(output) {
74
+ const values = Object.fromEntries(output
75
+ .split(/\r?\n/)
76
+ .map((line) => line.match(/^([^:]+):\s*(.*)$/))
77
+ .filter((match) => Boolean(match))
78
+ .map((match) => [match[1].toLowerCase(), match[2]]));
79
+ return {
80
+ workingCopyRoot: values["working copy root path"],
81
+ url: values.url,
82
+ relativeUrl: values["relative url"],
83
+ repositoryRoot: values["repository root"],
84
+ repositoryUuid: values["repository uuid"],
85
+ revision: values.revision,
86
+ nodeKind: values["node kind"],
87
+ schedule: values.schedule,
88
+ lastChangedAuthor: values["last changed author"],
89
+ lastChangedRevision: values["last changed rev"],
90
+ lastChangedDate: values["last changed date"]
91
+ };
92
+ }
93
+ async function readSvnLayout(checkoutPath) {
94
+ const tagsPath = path.join(checkoutPath, "tags");
95
+ const tagEntries = pathExists(tagsPath) ? await readdir(tagsPath, { withFileTypes: true }) : [];
96
+ return {
97
+ trunk: pathExists(path.join(checkoutPath, "trunk")),
98
+ assets: pathExists(path.join(checkoutPath, "assets")),
99
+ tags: pathExists(tagsPath),
100
+ tagCount: tagEntries.filter((entry) => entry.isDirectory()).length
101
+ };
102
+ }
103
+ async function runSvn(args, cwd, options = {}) {
104
+ const result = await execa("svn", args, {
105
+ cwd,
106
+ reject: false,
107
+ stdout: options.capture ? "pipe" : "inherit",
108
+ stderr: options.capture ? "pipe" : "inherit"
109
+ }).catch((error) => {
110
+ if (isMissingSvnError(error)) {
111
+ throw new Error("`svn` is required for `pressship get`. Install Subversion and try again.");
112
+ }
113
+ throw error;
114
+ });
115
+ if (result.failed && result.exitCode === undefined && !result.stderr && !result.stdout) {
116
+ throw new Error("`svn` is required for `pressship get`. Install Subversion and try again.");
117
+ }
118
+ if (result.exitCode !== 0) {
119
+ throw new Error(result.stderr || result.stdout || `svn ${args.join(" ")} failed.`);
120
+ }
121
+ return `${result.stdout ?? ""}\n${result.stderr ?? ""}`.trim();
122
+ }
123
+ function isMissingSvnError(error) {
124
+ return (error instanceof Error &&
125
+ ("code" in error ? error.code === "ENOENT" : /ENOENT|not found/i.test(error.message)));
126
+ }
127
+ function printSvnGetResult(result) {
128
+ ui.section(result.slug);
129
+ ui.keyValue("Action", result.action === "checkout" ? "checked out" : "updated");
130
+ ui.keyValue("SVN", ui.path(result.svnUrl));
131
+ ui.keyValue("Path", ui.path(result.path));
132
+ ui.keyValue("Revision", result.info.revision ?? "unknown");
133
+ ui.keyValue("Last rev", result.info.lastChangedRevision ?? "unknown");
134
+ ui.keyValue("Last author", result.info.lastChangedAuthor ?? "unknown");
135
+ ui.keyValue("Trunk", result.layout.trunk ? ui.value("available") : "missing");
136
+ ui.keyValue("Assets", result.layout.assets ? ui.value("available") : "missing");
137
+ ui.keyValue("Tags", result.layout.tags ? `${result.layout.tagCount}` : "missing");
138
+ }
139
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/svn/get.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ declare const releaseOptionsSchema: z.ZodObject<{
9
9
  dryRun: z.ZodDefault<z.ZodBoolean>;
10
10
  yes: z.ZodDefault<z.ZodBoolean>;
11
11
  ignore: z.ZodDefault<z.ZodArray<z.ZodString>>;
12
+ installSvn: z.ZodDefault<z.ZodBoolean>;
12
13
  }, z.core.$strip>;
13
14
  export type ReleaseOptions = z.input<typeof releaseOptionsSchema>;
14
15
  export declare function release(pluginPath: string | undefined, rawOptions: ReleaseOptions): Promise<void>;
@@ -7,6 +7,8 @@ import { listPackageFiles } from "../package/archive.js";
7
7
  import { discoverPluginProject } from "../plugin/discover.js";
8
8
  import { ui } from "../ui.js";
9
9
  import { pathExists } from "../utils/paths.js";
10
+ import { resolveSvnCredentials, resolveSvnUsername } from "./credentials.js";
11
+ import { ensureSvnAvailable, isSvnAvailable } from "./subversion.js";
10
12
  const releaseOptionsSchema = z.object({
11
13
  slug: z.string().optional(),
12
14
  version: z.string().optional(),
@@ -15,7 +17,8 @@ const releaseOptionsSchema = z.object({
15
17
  message: z.string().optional(),
16
18
  dryRun: z.boolean().default(false),
17
19
  yes: z.boolean().default(false),
18
- ignore: z.array(z.string()).default([])
20
+ ignore: z.array(z.string()).default([]),
21
+ installSvn: z.boolean().default(true)
19
22
  });
20
23
  export async function release(pluginPath, rawOptions) {
21
24
  const options = releaseOptionsSchema.parse(rawOptions);
@@ -29,11 +32,15 @@ export async function release(pluginPath, rawOptions) {
29
32
  }
30
33
  const svnDir = path.resolve(options.svnDir ?? path.join(process.cwd(), ".pressship-svn", slug));
31
34
  const message = options.message ?? `Release ${slug} ${version}`;
32
- const plan = createReleaseCommandPlan(slug, svnDir, version, message, options.username);
35
+ const username = options.username ?? (options.dryRun ? undefined : await resolveSvnUsername());
36
+ const plan = createReleaseCommandPlan(slug, svnDir, version, message, username);
33
37
  ui.section("Release");
34
38
  ui.keyValue("SVN", ui.path(`https://plugins.svn.wordpress.org/${slug}`));
35
39
  ui.keyValue("Working copy", ui.path(svnDir));
36
40
  ui.keyValue("Version", ui.value(version));
41
+ if (username) {
42
+ ui.keyValue("SVN user", ui.value(username));
43
+ }
37
44
  if (options.dryRun) {
38
45
  ui.section("Dry-run command plan");
39
46
  for (const command of plan) {
@@ -41,11 +48,15 @@ export async function release(pluginPath, rawOptions) {
41
48
  }
42
49
  return;
43
50
  }
44
- await ui.task("Preparing SVN working copy", () => ensureWorkingCopy(slug, svnDir, options.username));
51
+ await ensureSvnAvailable({ autoInstall: options.installSvn, interactive: process.stdin.isTTY });
52
+ await ui.task("Preparing SVN working copy", () => ensureWorkingCopy(slug, svnDir));
45
53
  await ui.task("Syncing plugin files to trunk", () => syncTrunk(rootDir, path.join(svnDir, "trunk"), options.ignore));
46
- await ui.task("Adding changed files to SVN", () => runSvn(["add", "--force", "trunk"], svnDir));
54
+ await syncAssets(rootDir, path.join(svnDir, "assets"));
55
+ await ui.task("Adding changed files to SVN", () => runSvn(["add", "--force", "."], svnDir));
47
56
  await ui.task("Removing deleted files from SVN", () => deleteMissingFiles(svnDir));
48
57
  await ui.task(`Creating tag ${version}`, () => createTag(version, svnDir));
58
+ await setAssetMimeTypes(svnDir);
59
+ await ui.task("Updating SVN working copy", () => runSvn(["update"], svnDir));
49
60
  const status = await runSvn(["status"], svnDir, { capture: true });
50
61
  ui.section("SVN status");
51
62
  console.log(status || ui.muted("No SVN changes detected."));
@@ -58,21 +69,26 @@ export async function release(pluginPath, rawOptions) {
58
69
  throw new Error("SVN release cancelled before commit.");
59
70
  }
60
71
  }
61
- await ui.task("Committing SVN release", () => runSvn(["commit", "-m", message, ...usernameArgs(options.username)], svnDir));
72
+ const credentials = await resolveSvnCredentials(username);
73
+ await ui.task("Committing SVN release", () => runSvn(["commit", "-m", message, ...svnCredentialArgs(credentials)], svnDir));
62
74
  }
63
75
  export function createReleaseCommandPlan(slug, svnDir, version, message, username) {
64
76
  return [
65
77
  {
66
78
  command: "svn",
67
- args: ["checkout", `https://plugins.svn.wordpress.org/${slug}`, svnDir, ...usernameArgs(username)]
79
+ args: ["checkout", `https://plugins.svn.wordpress.org/${slug}`, svnDir]
68
80
  },
69
- { command: "svn", args: ["add", "--force", "trunk"], cwd: svnDir },
81
+ { command: "svn", args: ["add", "--force", "."], cwd: svnDir },
70
82
  { command: "svn", args: ["copy", "trunk", `tags/${version}`], cwd: svnDir },
83
+ { command: "svn", args: ["update"], cwd: svnDir },
71
84
  { command: "svn", args: ["status"], cwd: svnDir },
72
- { command: "svn", args: ["commit", "-m", message, ...usernameArgs(username)], cwd: svnDir }
85
+ { command: "svn", args: ["commit", "-m", message, ...svnCredentialPreviewArgs(username)], cwd: svnDir }
73
86
  ];
74
87
  }
75
88
  export async function svnRepositoryExists(slug) {
89
+ if (!(await isSvnAvailable())) {
90
+ throw new Error("`svn` is not installed. Pressship can install it when you run a release or get command.");
91
+ }
76
92
  const result = await execa("svn", ["info", `https://plugins.svn.wordpress.org/${slug}`], {
77
93
  reject: false,
78
94
  stdout: "pipe",
@@ -80,14 +96,14 @@ export async function svnRepositoryExists(slug) {
80
96
  });
81
97
  return result.exitCode === 0;
82
98
  }
83
- async function ensureWorkingCopy(slug, svnDir, username) {
99
+ async function ensureWorkingCopy(slug, svnDir) {
84
100
  await mkdir(path.dirname(svnDir), { recursive: true });
85
101
  try {
86
102
  await runSvn(["info"], svnDir, { capture: true });
87
103
  await runSvn(["update"], svnDir);
88
104
  }
89
105
  catch {
90
- await runSvn(["checkout", `https://plugins.svn.wordpress.org/${slug}`, svnDir, ...usernameArgs(username)], process.cwd());
106
+ await runSvn(["checkout", `https://plugins.svn.wordpress.org/${slug}`, svnDir], process.cwd());
91
107
  }
92
108
  }
93
109
  async function syncTrunk(pluginRoot, trunkDir, ignore) {
@@ -101,6 +117,17 @@ async function syncTrunk(pluginRoot, trunkDir, ignore) {
101
117
  await cp(source, destination);
102
118
  }
103
119
  }
120
+ async function syncAssets(pluginRoot, assetsDir) {
121
+ const sourceAssetsDir = path.join(pluginRoot, ".wordpress-org");
122
+ if (!pathExists(sourceAssetsDir)) {
123
+ return;
124
+ }
125
+ await ui.task("Syncing WordPress.org assets", async () => {
126
+ await mkdir(assetsDir, { recursive: true });
127
+ await emptyDirectory(assetsDir);
128
+ await cp(sourceAssetsDir, assetsDir, { recursive: true });
129
+ });
130
+ }
104
131
  async function emptyDirectory(directory) {
105
132
  const entries = await readdir(directory, { withFileTypes: true });
106
133
  for (const entry of entries) {
@@ -129,20 +156,70 @@ async function createTag(version, svnDir) {
129
156
  await mkdir(path.dirname(tagPath), { recursive: true });
130
157
  await runSvn(["copy", "trunk", `tags/${version}`], svnDir);
131
158
  }
159
+ async function setAssetMimeTypes(svnDir) {
160
+ const assetsDir = path.join(svnDir, "assets");
161
+ if (!pathExists(assetsDir)) {
162
+ return;
163
+ }
164
+ const mimeTypes = new Map([
165
+ [".gif", "image/gif"],
166
+ [".jpg", "image/jpeg"],
167
+ [".jpeg", "image/jpeg"],
168
+ [".png", "image/png"],
169
+ [".svg", "image/svg+xml"]
170
+ ]);
171
+ const entries = await readdir(assetsDir, { withFileTypes: true });
172
+ for (const entry of entries) {
173
+ if (!entry.isFile()) {
174
+ continue;
175
+ }
176
+ const mimeType = mimeTypes.get(path.extname(entry.name).toLowerCase());
177
+ if (mimeType) {
178
+ await runSvn(["propset", "svn:mime-type", mimeType, path.posix.join("assets", entry.name)], svnDir);
179
+ }
180
+ }
181
+ }
132
182
  async function runSvn(args, cwd, options = {}) {
133
183
  const result = await execa("svn", args, {
134
184
  cwd,
135
185
  reject: false,
136
186
  stdout: options.capture ? "pipe" : "inherit",
137
187
  stderr: options.capture ? "pipe" : "inherit"
188
+ }).catch((error) => {
189
+ if (isMissingSvnError(error)) {
190
+ throw new Error("`svn` is required for WordPress.org SVN releases. Install Subversion and try again.");
191
+ }
192
+ throw error;
138
193
  });
194
+ if (result.failed && result.exitCode === undefined && !result.stderr && !result.stdout) {
195
+ throw new Error("`svn` is required for WordPress.org SVN releases. Install Subversion and try again.");
196
+ }
139
197
  if (result.exitCode !== 0) {
140
- throw new Error(result.stderr || result.stdout || `svn ${args.join(" ")} failed.`);
198
+ throw new Error(result.stderr || result.stdout || `svn ${redactSvnArgs(args).join(" ")} failed.`);
141
199
  }
142
200
  return `${result.stdout ?? ""}\n${result.stderr ?? ""}`.trim();
143
201
  }
144
- function usernameArgs(username) {
145
- return username ? ["--username", username] : [];
202
+ function svnCredentialArgs(credentials) {
203
+ return [
204
+ "--no-auth-cache",
205
+ "--non-interactive",
206
+ "--username",
207
+ credentials.username,
208
+ "--password",
209
+ credentials.password
210
+ ];
211
+ }
212
+ function svnCredentialPreviewArgs(username) {
213
+ return username
214
+ ? ["--no-auth-cache", "--non-interactive", "--username", username, "--password", "<saved-svn-password>"]
215
+ : [];
216
+ }
217
+ function redactSvnArgs(args) {
218
+ return args.map((arg, index) => (args[index - 1] === "--password" ? "<redacted>" : arg));
219
+ }
220
+ function isMissingSvnError(error) {
221
+ return (error instanceof Error &&
222
+ ("code" in error ? error.code === "ENOENT" : /ENOENT|not found/i.test(error.message)));
146
223
  }
147
224
  function formatCommand(command) {
148
225
  const prefix = command.cwd ? `(cd ${command.cwd} && ` : "";
@@ -1 +1 @@
1
- {"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/svn/release.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/svn/release.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export type SubversionInstallCommand = {
2
+ command: string;
3
+ args: string[];
4
+ };
5
+ export type SubversionInstallPlan = {
6
+ platform: NodeJS.Platform;
7
+ manager?: string;
8
+ commands: SubversionInstallCommand[];
9
+ instructions: string[];
10
+ };
11
+ export type EnsureSvnOptions = {
12
+ autoInstall?: boolean;
13
+ interactive?: boolean;
14
+ };
15
+ export declare function ensureSvnAvailable(options?: EnsureSvnOptions): Promise<void>;
16
+ export declare function isSvnAvailable(): Promise<boolean>;
17
+ export declare function getSubversionInstallPlan(platform: NodeJS.Platform, availableCommands: Iterable<string>): SubversionInstallPlan;
18
+ export declare function formatSubversionInstallInstructions(plan: SubversionInstallPlan): string;
@@ -0,0 +1,171 @@
1
+ import { confirm } from "@inquirer/prompts";
2
+ import { execa } from "execa";
3
+ import { ui } from "../ui.js";
4
+ const INSTALL_COMMANDS = ["brew", "apt-get", "dnf", "yum", "pacman", "zypper", "apk", "sudo", "winget", "choco"];
5
+ export async function ensureSvnAvailable(options = {}) {
6
+ if (await isSvnAvailable()) {
7
+ return;
8
+ }
9
+ const plan = getSubversionInstallPlan(process.platform, await findAvailableInstallCommands());
10
+ const autoInstall = options.autoInstall ?? true;
11
+ const interactive = options.interactive ?? process.stdin.isTTY;
12
+ if (!autoInstall || plan.commands.length === 0) {
13
+ throw new Error(formatSubversionInstallInstructions(plan));
14
+ }
15
+ if (!interactive) {
16
+ throw new Error([
17
+ "Subversion (`svn`) is required, but it is not installed.",
18
+ "Automatic installation needs an interactive terminal.",
19
+ ...plan.instructions.map((instruction) => `- ${instruction}`)
20
+ ].join("\n"));
21
+ }
22
+ ui.warn("Subversion (`svn`) is required, but it is not installed.");
23
+ ui.info(`Detected ${plan.manager}. Pressship can run: ${formatInstallCommands(plan.commands)}`);
24
+ const shouldInstall = await confirm({ message: "Install Subversion now?", default: true });
25
+ if (!shouldInstall) {
26
+ throw new Error(formatSubversionInstallInstructions(plan));
27
+ }
28
+ for (const command of plan.commands) {
29
+ await execa(command.command, command.args, { stdio: "inherit" });
30
+ }
31
+ if (!(await isSvnAvailable())) {
32
+ throw new Error("Subversion install command finished, but `svn` is still not available on PATH. Open a new terminal or install it manually.");
33
+ }
34
+ }
35
+ export async function isSvnAvailable() {
36
+ return commandExists("svn");
37
+ }
38
+ export function getSubversionInstallPlan(platform, availableCommands) {
39
+ const available = new Set(availableCommands);
40
+ if (platform === "darwin") {
41
+ if (available.has("brew")) {
42
+ return {
43
+ platform,
44
+ manager: "Homebrew",
45
+ commands: [{ command: "brew", args: ["install", "subversion"] }],
46
+ instructions: ["Install Subversion with Homebrew: brew install subversion"]
47
+ };
48
+ }
49
+ return {
50
+ platform,
51
+ commands: [],
52
+ instructions: [
53
+ "Install Homebrew from https://brew.sh, then install Subversion: brew install subversion"
54
+ ]
55
+ };
56
+ }
57
+ if (platform === "linux") {
58
+ if (available.has("apt-get")) {
59
+ const updateCommand = privilegedCommand(available, "apt-get", ["update"]);
60
+ const installCommand = privilegedCommand(available, "apt-get", ["install", "-y", "subversion"]);
61
+ return {
62
+ platform,
63
+ manager: "apt",
64
+ commands: [updateCommand, installCommand],
65
+ instructions: ["Install Subversion with apt: sudo apt-get update && sudo apt-get install -y subversion"]
66
+ };
67
+ }
68
+ if (available.has("dnf")) {
69
+ return linuxSingleCommandPlan(platform, available, "dnf", ["install", "-y", "subversion"]);
70
+ }
71
+ if (available.has("yum")) {
72
+ return linuxSingleCommandPlan(platform, available, "yum", ["install", "-y", "subversion"]);
73
+ }
74
+ if (available.has("pacman")) {
75
+ return linuxSingleCommandPlan(platform, available, "pacman", ["-Sy", "--noconfirm", "subversion"]);
76
+ }
77
+ if (available.has("zypper")) {
78
+ return linuxSingleCommandPlan(platform, available, "zypper", ["install", "-y", "subversion"]);
79
+ }
80
+ if (available.has("apk")) {
81
+ const command = privilegedCommand(available, "apk", ["add", "subversion"]);
82
+ return {
83
+ platform,
84
+ manager: "apk",
85
+ commands: [command],
86
+ instructions: ["Install Subversion with apk: sudo apk add subversion"]
87
+ };
88
+ }
89
+ return {
90
+ platform,
91
+ commands: [],
92
+ instructions: [
93
+ "Install Subversion with your system package manager, then rerun Pressship."
94
+ ]
95
+ };
96
+ }
97
+ if (platform === "win32") {
98
+ if (available.has("winget")) {
99
+ return {
100
+ platform,
101
+ manager: "winget",
102
+ commands: [{ command: "winget", args: ["install", "--id", "Apache.Subversion", "-e"] }],
103
+ instructions: ["Install Subversion with winget: winget install --id Apache.Subversion -e"]
104
+ };
105
+ }
106
+ if (available.has("choco")) {
107
+ return {
108
+ platform,
109
+ manager: "Chocolatey",
110
+ commands: [{ command: "choco", args: ["install", "subversion", "-y"] }],
111
+ instructions: ["Install Subversion with Chocolatey: choco install subversion -y"]
112
+ };
113
+ }
114
+ return {
115
+ platform,
116
+ commands: [],
117
+ instructions: [
118
+ "Install Subversion for Windows, then make sure svn.exe is available on PATH."
119
+ ]
120
+ };
121
+ }
122
+ return {
123
+ platform,
124
+ commands: [],
125
+ instructions: ["Install Subversion for your operating system, then rerun Pressship."]
126
+ };
127
+ }
128
+ export function formatSubversionInstallInstructions(plan) {
129
+ return [
130
+ "Subversion (`svn`) is required, but it is not installed.",
131
+ ...plan.instructions.map((instruction) => `- ${instruction}`)
132
+ ].join("\n");
133
+ }
134
+ async function findAvailableInstallCommands() {
135
+ const found = new Set();
136
+ for (const command of INSTALL_COMMANDS) {
137
+ if (await commandExists(command)) {
138
+ found.add(command);
139
+ }
140
+ }
141
+ return found;
142
+ }
143
+ async function commandExists(command) {
144
+ const result = process.platform === "win32"
145
+ ? await execa("where", [command], { reject: false, stdout: "ignore", stderr: "ignore" })
146
+ : await execa("sh", ["-c", `command -v ${quoteShell(command)}`], {
147
+ reject: false,
148
+ stdout: "ignore",
149
+ stderr: "ignore"
150
+ });
151
+ return result.exitCode === 0;
152
+ }
153
+ function linuxSingleCommandPlan(platform, available, manager, args) {
154
+ const command = privilegedCommand(available, manager, args);
155
+ return {
156
+ platform,
157
+ manager,
158
+ commands: [command],
159
+ instructions: [`Install Subversion with ${manager}: sudo ${manager} ${args.join(" ")}`]
160
+ };
161
+ }
162
+ function privilegedCommand(available, command, args) {
163
+ return available.has("sudo") ? { command: "sudo", args: [command, ...args] } : { command, args };
164
+ }
165
+ function formatInstallCommands(commands) {
166
+ return commands.map((command) => `${command.command} ${command.args.join(" ")}`).join(" && ");
167
+ }
168
+ function quoteShell(value) {
169
+ return `'${value.replaceAll("'", "'\\''")}'`;
170
+ }
171
+ //# sourceMappingURL=subversion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subversion.js","sourceRoot":"","sources":["../../src/svn/subversion.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export declare function getConfigDir(): string;
2
2
  export declare function ensureConfigDir(): Promise<string>;
3
3
  export declare function getStorageStatePath(): string;
4
+ export declare function getSvnCredentialsPath(): string;
4
5
  export declare function getDebugDir(): string;
5
6
  export declare function ensureDebugDir(): Promise<string>;
6
7
  export declare function getCacheDir(): string;
@@ -23,6 +23,9 @@ export async function ensureConfigDir() {
23
23
  export function getStorageStatePath() {
24
24
  return path.join(getConfigDir(), "wordpress-org-storage.json");
25
25
  }
26
+ export function getSvnCredentialsPath() {
27
+ return path.join(getConfigDir(), "svn-credentials.json");
28
+ }
26
29
  export function getDebugDir() {
27
30
  return path.join(getConfigDir(), "debug");
28
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,OAAO,GAAG,WAAW,CAAC;AAE5B,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,4BAA4B,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,OAAO,GAAG,WAAW,CAAC;AAE5B,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,4BAA4B,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,sBAAsB,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC"}
@@ -14,6 +14,7 @@ declare const publishOptionsSchema: z.ZodObject<{
14
14
  svnDir: z.ZodOptional<z.ZodString>;
15
15
  username: z.ZodOptional<z.ZodString>;
16
16
  message: z.ZodOptional<z.ZodString>;
17
+ installSvn: z.ZodDefault<z.ZodBoolean>;
17
18
  }, z.core.$strip>;
18
19
  export type PublishOptions = z.input<typeof publishOptionsSchema>;
19
20
  export type PublishAction = "submit" | "release" | "prompt";