pressship 0.1.3 → 0.1.6

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 (39) hide show
  1. package/README.md +282 -356
  2. package/assets/logo-new.png +0 -0
  3. package/assets/pressship-dark.png +0 -0
  4. package/assets/pressship-square-dark.png +0 -0
  5. package/assets/pressship-square.png +0 -0
  6. package/assets/pressship-symbol-dark.png +0 -0
  7. package/assets/pressship-symbol.png +0 -0
  8. package/assets/pressship-wordmark-dark.png +0 -0
  9. package/assets/pressship-wordmark.png +0 -0
  10. package/assets/pressship.png +0 -0
  11. package/dist/cli.js +22 -2
  12. package/dist/cli.js.map +1 -1
  13. package/dist/package/ignore.js +4 -0
  14. package/dist/package/ignore.js.map +1 -1
  15. package/dist/plugin/discover.d.ts +8 -0
  16. package/dist/plugin/discover.js +27 -1
  17. package/dist/plugin/discover.js.map +1 -1
  18. package/dist/plugin/list.d.ts +24 -0
  19. package/dist/plugin/list.js +174 -0
  20. package/dist/plugin/list.js.map +1 -0
  21. package/dist/svn/credentials.d.ts +9 -0
  22. package/dist/svn/credentials.js +94 -0
  23. package/dist/svn/credentials.js.map +1 -0
  24. package/dist/svn/get.d.ts +45 -0
  25. package/dist/svn/get.js +139 -0
  26. package/dist/svn/get.js.map +1 -0
  27. package/dist/svn/release.d.ts +2 -0
  28. package/dist/svn/release.js +113 -18
  29. package/dist/svn/release.js.map +1 -1
  30. package/dist/svn/subversion.d.ts +18 -0
  31. package/dist/svn/subversion.js +171 -0
  32. package/dist/svn/subversion.js.map +1 -0
  33. package/dist/utils/paths.d.ts +1 -0
  34. package/dist/utils/paths.js +3 -0
  35. package/dist/utils/paths.js.map +1 -1
  36. package/dist/wordpress-org/publish.d.ts +2 -0
  37. package/dist/wordpress-org/publish.js +16 -8
  38. package/dist/wordpress-org/publish.js.map +1 -1
  39. package/package.json +2 -1
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/dist/cli.js CHANGED
@@ -7,9 +7,11 @@ import { pack } from "./package/pack.js";
7
7
  import { publish } from "./wordpress-org/publish.js";
8
8
  import { submit } from "./wordpress-org/submit.js";
9
9
  import { status } from "./wordpress-org/state.js";
10
+ import { getPlugin } from "./svn/get.js";
10
11
  import { release } from "./svn/release.js";
11
12
  import { demo } from "./plugin/demo.js";
12
13
  import { info } from "./plugin/info.js";
14
+ import { listPlugins } from "./plugin/list.js";
13
15
  import { version } from "./plugin/version.js";
14
16
  const program = new Command();
15
17
  program
@@ -45,6 +47,22 @@ program
45
47
  .argument("[slug-or-path]", "Local plugin path, WordPress.org plugin slug, or plugin URL")
46
48
  .option("--json", "Print plugin info as JSON")
47
49
  .action((target, options) => run(() => info(target, options))());
50
+ program
51
+ .command("ls")
52
+ .alias("list")
53
+ .description("List WordPress.org plugins for the saved account or a public profile username.")
54
+ .argument("[username]", "WordPress.org username. Defaults to the saved login user.")
55
+ .option("--public", "Use the public author archive even for the saved login user")
56
+ .option("--json", "Print plugin list as JSON")
57
+ .action((username, options) => run(() => listPlugins(username, options))());
58
+ program
59
+ .command("get")
60
+ .description("Checkout or update a WordPress.org plugin SVN repository.")
61
+ .argument("<slug>", "WordPress.org plugin slug or plugin URL")
62
+ .argument("[path]", "Destination directory. Defaults to ./<slug>.")
63
+ .option("--json", "Print checkout details as JSON")
64
+ .option("--no-install-svn", "Do not try to install Subversion automatically when svn is missing")
65
+ .action((slug, destination, options) => run(() => getPlugin(slug, destination, options))());
48
66
  program
49
67
  .command("publish")
50
68
  .description("Submit for review or release an approved plugin, similar to npm publish.")
@@ -59,8 +77,9 @@ program
59
77
  .option("--slug <slug>", "Approved WordPress.org plugin slug for release detection or release")
60
78
  .option("--version <version>", "Version tag to create for release")
61
79
  .option("--svn-dir <path>", "Local SVN working copy directory for release")
62
- .option("--username <username>", "WordPress.org SVN username for release")
80
+ .option("--username <username>", "WordPress.org SVN username for release; defaults to the saved login user")
63
81
  .option("-m, --message <message>", "SVN commit message for release")
82
+ .option("--no-install-svn", "Do not try to install Subversion automatically when svn is missing")
64
83
  .option("--ignore <glob>", "Ignore files in the package; repeat for multiple globs", collectValues, [])
65
84
  .option("-y, --yes", "Continue without interactive confirmations where possible")
66
85
  .action((pluginPath, options) => run(() => publish(pluginPath, options))());
@@ -106,11 +125,12 @@ program
106
125
  .option("--slug <slug>", "Approved WordPress.org plugin slug")
107
126
  .option("--version <version>", "Version tag to create")
108
127
  .option("--svn-dir <path>", "Local SVN working copy directory")
109
- .option("--username <username>", "WordPress.org SVN username")
128
+ .option("--username <username>", "WordPress.org SVN username; defaults to the saved login user")
110
129
  .option("-m, --message <message>", "SVN commit message")
111
130
  .option("--ignore <glob>", "Ignore files in the SVN release; repeat for multiple globs", collectValues, [])
112
131
  .option("--dry-run", "Print the SVN command plan without changing SVN")
113
132
  .option("-y, --yes", "Commit without the final confirmation prompt")
133
+ .option("--no-install-svn", "Do not try to install Subversion automatically when svn is missing")
114
134
  .action((pluginPath, options) => run(() => release(pluginPath, options))());
115
135
  await program.parseAsync(process.argv);
116
136
  function run(action) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAsB,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAoB,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAuB,MAAM,4BAA4B,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAsB,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,MAAM,EAAsB,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,SAAS,EAAmB,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAuB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,IAAI,EAAoB,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAoB,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAoB,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,iEAAiE,CAAC;KAC9E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;KACjD,MAAM,CAAC,CAAC,OAAsB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAEpE,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kFAAkF,CAAC;KAC/F,QAAQ,CAAC,gBAAgB,EAAE,6DAA6D,CAAC;KACzF,MAAM,CAAC,eAAe,EAAE,sCAAsC,CAAC;KAC/D,MAAM,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;KACpD,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;KAC/C,MAAM,CAAC,SAAS,EAAE,qDAAqD,CAAC;KACxE,MAAM,CAAC,gBAAgB,EAAE,kDAAkD,CAAC;KAC5E,MAAM,CAAC,CAAC,MAA0B,EAAE,OAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAEpG,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0EAA0E,CAAC;KACvF,QAAQ,CAAC,gBAAgB,EAAE,6DAA6D,CAAC;KACzF,MAAM,CAAC,QAAQ,EAAE,2BAA2B,CAAC;KAC7C,MAAM,CAAC,CAAC,MAA0B,EAAE,OAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAEpG,OAAO;KACJ,OAAO,CAAC,IAAI,CAAC;KACb,KAAK,CAAC,MAAM,CAAC;KACb,WAAW,CAAC,gFAAgF,CAAC;KAC7F,QAAQ,CAAC,YAAY,EAAE,2DAA2D,CAAC;KACnF,MAAM,CAAC,UAAU,EAAE,6DAA6D,CAAC;KACjF,MAAM,CAAC,QAAQ,EAAE,2BAA2B,CAAC;KAC7C,MAAM,CAAC,CAAC,QAA4B,EAAE,OAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAE/G,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,2DAA2D,CAAC;KACxE,QAAQ,CAAC,QAAQ,EAAE,yCAAyC,CAAC;KAC7D,QAAQ,CAAC,QAAQ,EAAE,8CAA8C,CAAC;KAClE,MAAM,CAAC,QAAQ,EAAE,gCAAgC,CAAC;KAClD,MAAM,CAAC,kBAAkB,EAAE,oEAAoE,CAAC;KAChG,MAAM,CAAC,CAAC,IAAY,EAAE,WAA+B,EAAE,OAAmB,EAAE,EAAE,CAC7E,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,EAAE,CACnD,CAAC;AAEJ,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,0EAA0E,CAAC;KACvF,QAAQ,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACnE,MAAM,CAAC,UAAU,EAAE,uCAAuC,CAAC;KAC3D,MAAM,CAAC,WAAW,EAAE,iCAAiC,CAAC;KACtD,MAAM,CAAC,WAAW,EAAE,+DAA+D,CAAC;KACpF,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,CAAC;KACxE,MAAM,CAAC,yBAAyB,EAAE,iEAAiE,CAAC;KACpG,MAAM,CAAC,qBAAqB,EAAE,sDAAsD,CAAC;KACrF,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;KAC/E,MAAM,CAAC,eAAe,EAAE,qEAAqE,CAAC;KAC9F,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;KAClE,MAAM,CAAC,kBAAkB,EAAE,8CAA8C,CAAC;KAC1E,MAAM,CAAC,uBAAuB,EAAE,0EAA0E,CAAC;KAC3G,MAAM,CAAC,yBAAyB,EAAE,gCAAgC,CAAC;KACnE,MAAM,CAAC,kBAAkB,EAAE,oEAAoE,CAAC;KAChG,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,EAAE,aAAa,EAAE,EAAE,CAAC;KACtG,MAAM,CAAC,WAAW,EAAE,2DAA2D,CAAC;KAChF,MAAM,CAAC,CAAC,UAA8B,EAAE,OAAuB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAElH,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,iEAAiE,CAAC;KAC9E,QAAQ,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACnE,MAAM,CAAC,qBAAqB,EAAE,kDAAkD,CAAC;KACjF,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,EAAE,aAAa,EAAE,EAAE,CAAC;KACtG,MAAM,CAAC,eAAe,EAAE,0DAA0D,CAAC;KACnF,MAAM,CAAC,yBAAyB,EAAE,gDAAgD,CAAC;KACnF,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;KAC/E,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;KACjD,MAAM,CAAC,CAAC,UAA8B,EAAE,OAAoB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAE5G,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,yEAAyE,CAAC;KACtF,QAAQ,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACnE,MAAM,CAAC,WAAW,EAAE,gDAAgD,CAAC;KACrE,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;KACvD,MAAM,CAAC,yBAAyB,EAAE,gDAAgD,CAAC;KACnF,MAAM,CAAC,qBAAqB,EAAE,sDAAsD,CAAC;KACrF,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;KAC/E,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,EAAE,aAAa,EAAE,EAAE,CAAC;KACtG,MAAM,CAAC,WAAW,EAAE,2DAA2D,CAAC;KAChF,MAAM,CAAC,CAAC,UAA8B,EAAE,OAAsB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAEhH,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,QAAQ,CAAC,uBAAuB,EAAE,2DAA2D,CAAC;KAC9F,MAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC;KACvC,MAAM,CAAC,CAAC,UAA8B,EAAE,OAAsB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAEhH,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,6DAA6D,CAAC;KAC1E,QAAQ,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;KACpD,QAAQ,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACnE,MAAM,CAAC,CAAC,IAAY,EAAE,UAA8B,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;AAEpG,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,yEAAyE,CAAC;KACtF,QAAQ,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACnE,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;KAC7D,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;KACtD,MAAM,CAAC,kBAAkB,EAAE,kCAAkC,CAAC;KAC9D,MAAM,CAAC,uBAAuB,EAAE,8DAA8D,CAAC;KAC/F,MAAM,CAAC,yBAAyB,EAAE,oBAAoB,CAAC;KACvD,MAAM,CAAC,iBAAiB,EAAE,4DAA4D,EAAE,aAAa,EAAE,EAAE,CAAC;KAC1G,MAAM,CAAC,WAAW,EAAE,iDAAiD,CAAC;KACtE,MAAM,CAAC,WAAW,EAAE,8CAA8C,CAAC;KACnE,MAAM,CAAC,kBAAkB,EAAE,oEAAoE,CAAC;KAChG,MAAM,CAAC,CAAC,UAA8B,EAAE,OAAuB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAElH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvC,SAAS,GAAG,CAAC,MAA2B;IACtC,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,CAAC;YACH,MAAM,MAAM,EAAE,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,QAAkB;IACtD,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC"}
@@ -9,6 +9,10 @@ export const defaultIgnorePatterns = [
9
9
  ".gitignore",
10
10
  ".github",
11
11
  ".github/**",
12
+ ".wordpress-org",
13
+ ".wordpress-org/**",
14
+ ".pressship-svn",
15
+ ".pressship-svn/**",
12
16
  ".idea",
13
17
  ".idea/**",
14
18
  ".vscode",
@@ -1 +1 @@
1
- {"version":3,"file":"ignore.js","sourceRoot":"","sources":["../../src/package/ignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,WAAW;IACX,MAAM;IACN,SAAS;IACT,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,OAAO;IACP,UAAU;IACV,SAAS;IACT,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,cAAc;IACd,iBAAiB;IACjB,MAAM;IACN,SAAS;IACT,OAAO;IACP,UAAU;IACV,UAAU;IACV,aAAa;IACb,OAAO;IACP,UAAU;IACV,OAAO;IACP,OAAO;IACP,kBAAkB;IAClB,kBAAkB;CACnB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,gBAA0B,EAAE;IACpF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAE1D,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,YAAoB,EAAW,EAAE;QACvC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1D,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ignore.js","sourceRoot":"","sources":["../../src/package/ignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,WAAW;IACX,MAAM;IACN,SAAS;IACT,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,gBAAgB;IAChB,mBAAmB;IACnB,gBAAgB;IAChB,mBAAmB;IACnB,OAAO;IACP,UAAU;IACV,SAAS;IACT,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,cAAc;IACd,iBAAiB;IACjB,MAAM;IACN,SAAS;IACT,OAAO;IACP,UAAU;IACV,UAAU;IACV,aAAa;IACb,OAAO;IACP,UAAU;IACV,OAAO;IACP,OAAO;IACP,kBAAkB;IAClB,kBAAkB;CACnB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,gBAA0B,EAAE;IACpF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAE1D,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,YAAoB,EAAW,EAAE;QACvC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1D,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC;AACJ,CAAC"}
@@ -1,2 +1,10 @@
1
1
  import type { PluginProject } from "../types.js";
2
+ export type PluginProjectPath = {
3
+ inputDir: string;
4
+ rootDir: string;
5
+ svnRootDir?: string;
6
+ };
2
7
  export declare function discoverPluginProject(inputPath: string): Promise<PluginProject>;
8
+ export declare function resolvePluginProjectPath(inputPath: string): PluginProjectPath;
9
+ export declare function isWordPressOrgSvnRoot(inputPath: string): boolean;
10
+ export declare function isWordPressOrgSvnTrunk(inputPath: string): boolean;
@@ -3,10 +3,11 @@ import path from "node:path";
3
3
  import fg from "fast-glob";
4
4
  import { assertPluginHeaders, parsePluginHeaders } from "./headers.js";
5
5
  import { parseReadme } from "./readme.js";
6
+ import { pathExists } from "../utils/paths.js";
6
7
  import { inferSlug } from "../utils/slug.js";
7
8
  const ignoredDirectories = ["node_modules", "vendor", ".git", "dist", "build", "tests"];
8
9
  export async function discoverPluginProject(inputPath) {
9
- const rootDir = path.resolve(inputPath);
10
+ const { rootDir } = resolvePluginProjectPath(inputPath);
10
11
  const mainFile = await findMainPluginFile(rootDir);
11
12
  const mainContents = await readFile(mainFile, "utf8");
12
13
  const headers = assertPluginHeaders(parsePluginHeaders(mainContents));
@@ -23,6 +24,31 @@ export async function discoverPluginProject(inputPath) {
23
24
  version: headers.version
24
25
  };
25
26
  }
27
+ export function resolvePluginProjectPath(inputPath) {
28
+ const inputDir = path.resolve(inputPath);
29
+ if (isWordPressOrgSvnRoot(inputDir)) {
30
+ return {
31
+ inputDir,
32
+ rootDir: path.join(inputDir, "trunk"),
33
+ svnRootDir: inputDir
34
+ };
35
+ }
36
+ if (isWordPressOrgSvnTrunk(inputDir)) {
37
+ return {
38
+ inputDir,
39
+ rootDir: inputDir,
40
+ svnRootDir: path.dirname(inputDir)
41
+ };
42
+ }
43
+ return { inputDir, rootDir: inputDir };
44
+ }
45
+ export function isWordPressOrgSvnRoot(inputPath) {
46
+ return pathExists(path.join(inputPath, ".svn")) && pathExists(path.join(inputPath, "trunk"));
47
+ }
48
+ export function isWordPressOrgSvnTrunk(inputPath) {
49
+ const parentDir = path.dirname(inputPath);
50
+ return path.basename(inputPath) === "trunk" && pathExists(path.join(parentDir, ".svn"));
51
+ }
26
52
  async function findMainPluginFile(rootDir) {
27
53
  const phpFiles = await fg("**/*.php", {
28
54
  cwd: rootDir,
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/plugin/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,kBAAkB,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAExF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAiB;IAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxF,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAE/D,OAAO;QACL,OAAO;QACP,QAAQ;QACR,OAAO;QACP,UAAU;QACV,MAAM;QACN,IAAI;QACJ,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAe;IAC/C,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,UAAU,EAAE;QACpC,GAAG,EAAE,OAAO;QACZ,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC;KACjE,CAAC,CAAC;IAEH,MAAM,UAAU,GAA2C,EAAE,CAAC;IAE9D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAE7C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAe;IACvC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE;QACrD,GAAG,EAAE,OAAO;QACZ,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI;QACf,kBAAkB,EAAE,KAAK;KAC1B,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,aAAa,CAAC,OAAe,EAAE,IAAY;IAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/plugin/discover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { z } from "zod";
2
+ declare const listOptionsSchema: z.ZodObject<{
3
+ json: z.ZodDefault<z.ZodBoolean>;
4
+ public: z.ZodDefault<z.ZodBoolean>;
5
+ }, z.core.$strip>;
6
+ export type ListOptions = z.input<typeof listOptionsSchema>;
7
+ export type ListedPlugin = {
8
+ name: string;
9
+ slug: string;
10
+ url: string;
11
+ author?: string;
12
+ activeInstalls?: string;
13
+ testedWith?: string;
14
+ roles: Array<"contributor" | "committer">;
15
+ };
16
+ export type PluginListResult = {
17
+ username: string;
18
+ source: "public" | "logged-in";
19
+ plugins: ListedPlugin[];
20
+ };
21
+ export declare function listPlugins(username: string | undefined, rawOptions?: ListOptions): Promise<void>;
22
+ export declare function getPluginList(username: string | undefined, options?: ListOptions): Promise<PluginListResult>;
23
+ export declare function parsePluginArchiveHtml(html: string, username: string): ListedPlugin[];
24
+ export {};
@@ -0,0 +1,174 @@
1
+ import { z } from "zod";
2
+ import { hasSavedSession, openBrowserSession } from "../auth/session.js";
3
+ import { getWordPressOrgAccount } from "../auth/whoami.js";
4
+ import { ui } from "../ui.js";
5
+ const listOptionsSchema = z.object({
6
+ json: z.boolean().default(false),
7
+ public: z.boolean().default(false)
8
+ });
9
+ export async function listPlugins(username, rawOptions = {}) {
10
+ const options = listOptionsSchema.parse(rawOptions);
11
+ const result = options.json
12
+ ? await getPluginList(username, options)
13
+ : await ui.task("Listing WordPress.org plugins", () => getPluginList(username, options), (value) => `Found ${value.plugins.length} plugin${value.plugins.length === 1 ? "" : "s"} for ${value.username}`);
14
+ if (options.json) {
15
+ console.log(JSON.stringify(result, null, 2));
16
+ return;
17
+ }
18
+ printPluginList(result);
19
+ }
20
+ export async function getPluginList(username, options = {}) {
21
+ const resolvedUsername = username ?? (await inferCurrentUsername());
22
+ const canUseLoggedInArchive = !options.public && (await shouldUseLoggedInArchive(resolvedUsername, username));
23
+ const plugins = canUseLoggedInArchive
24
+ ? await fetchLoggedInAuthorArchive(resolvedUsername)
25
+ : await fetchPublicAuthorArchive(resolvedUsername);
26
+ return {
27
+ username: resolvedUsername,
28
+ source: canUseLoggedInArchive ? "logged-in" : "public",
29
+ plugins: dedupeListedPlugins(plugins)
30
+ };
31
+ }
32
+ export function parsePluginArchiveHtml(html, username) {
33
+ const cards = html.match(/<li\b[^>]*\btype-plugin\b[\s\S]*?<\/li>/g) ?? [];
34
+ return cards.map((card) => parsePluginCard(card, username)).filter((plugin) => Boolean(plugin));
35
+ }
36
+ async function inferCurrentUsername() {
37
+ if (!(await hasSavedSession())) {
38
+ throw new Error("No username passed and no WordPress.org browser session found. Run `pressship login` or pass a username.");
39
+ }
40
+ return (await getWordPressOrgAccount()).username;
41
+ }
42
+ async function shouldUseLoggedInArchive(resolvedUsername, originalUsername) {
43
+ if (!(await hasSavedSession())) {
44
+ return false;
45
+ }
46
+ if (!originalUsername) {
47
+ return true;
48
+ }
49
+ try {
50
+ const account = await getWordPressOrgAccount();
51
+ return account.username.toLowerCase() === resolvedUsername.toLowerCase();
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ }
57
+ async function fetchPublicAuthorArchive(username) {
58
+ const plugins = [];
59
+ let nextUrl = getAuthorArchiveUrl(username);
60
+ for (let page = 0; nextUrl && page < 20; page += 1) {
61
+ const response = await fetch(nextUrl);
62
+ const html = await response.text();
63
+ if (!response.ok) {
64
+ throw new Error(`Could not fetch WordPress.org plugin list for ${username}.`);
65
+ }
66
+ plugins.push(...parsePluginArchiveHtml(html, username));
67
+ nextUrl = getNextArchivePageUrl(html);
68
+ }
69
+ return plugins;
70
+ }
71
+ async function fetchLoggedInAuthorArchive(username) {
72
+ const { context, page } = await openBrowserSession({ headless: true });
73
+ const plugins = [];
74
+ let nextUrl = getAuthorArchiveUrl(username);
75
+ try {
76
+ for (let pageCount = 0; nextUrl && pageCount < 20; pageCount += 1) {
77
+ await page.goto(nextUrl, { waitUntil: "domcontentloaded" });
78
+ const html = await page.content();
79
+ plugins.push(...parsePluginArchiveHtml(html, username));
80
+ nextUrl = getNextArchivePageUrl(html);
81
+ }
82
+ }
83
+ finally {
84
+ await context.browser()?.close();
85
+ }
86
+ return plugins;
87
+ }
88
+ function parsePluginCard(card, username) {
89
+ const linkMatch = card.match(/<h3[^>]*class=["'][^"']*entry-title[^"']*["'][\s\S]*?<a[^>]+href=["']([^"']*\/plugins\/([^/"']+)\/)["'][^>]*>([\s\S]*?)<\/a>/i);
90
+ if (!linkMatch) {
91
+ return undefined;
92
+ }
93
+ const classValue = card.match(/<li\b[^>]*class=["']([^"']+)["']/i)?.[1] ?? "";
94
+ const normalizedUsername = username.toLowerCase();
95
+ const roles = [];
96
+ if (classValue.toLowerCase().split(/\s+/).includes(`plugin_contributors-${normalizedUsername}`)) {
97
+ roles.push("contributor");
98
+ }
99
+ if (classValue.toLowerCase().split(/\s+/).includes(`plugin_committers-${normalizedUsername}`)) {
100
+ roles.push("committer");
101
+ }
102
+ return {
103
+ name: cleanText(linkMatch[3]) ?? linkMatch[2],
104
+ slug: linkMatch[2],
105
+ url: normalizePluginUrl(linkMatch[1]),
106
+ author: cleanText(card.match(/<span class=["']plugin-author["'][\s\S]*?<span>([\s\S]*?)<\/span>/i)?.[1]),
107
+ activeInstalls: cleanText(card.match(/<span class=["']active-installs["'][\s\S]*?<span>([\s\S]*?)<\/span>/i)?.[1]),
108
+ testedWith: cleanText(card.match(/<span class=["']tested-with["'][\s\S]*?<span>([\s\S]*?)<\/span>/i)?.[1]),
109
+ roles: roles.length > 0 ? roles : ["contributor"]
110
+ };
111
+ }
112
+ function getAuthorArchiveUrl(username) {
113
+ return `https://wordpress.org/plugins/author/${encodeURIComponent(username)}/`;
114
+ }
115
+ function getNextArchivePageUrl(html) {
116
+ const nextHref = html.match(/<a[^>]+rel=["']next["'][^>]+href=["']([^"']+)["']/i)?.[1] ??
117
+ html.match(/<a[^>]+href=["']([^"']+)["'][^>]+rel=["']next["']/i)?.[1];
118
+ return nextHref ? normalizePluginUrl(nextHref) : undefined;
119
+ }
120
+ function dedupeListedPlugins(plugins) {
121
+ const bySlug = new Map();
122
+ for (const plugin of plugins) {
123
+ const existing = bySlug.get(plugin.slug);
124
+ if (!existing) {
125
+ bySlug.set(plugin.slug, plugin);
126
+ continue;
127
+ }
128
+ bySlug.set(plugin.slug, {
129
+ ...existing,
130
+ ...plugin,
131
+ roles: Array.from(new Set([...existing.roles, ...plugin.roles]))
132
+ });
133
+ }
134
+ return Array.from(bySlug.values()).sort((a, b) => a.name.localeCompare(b.name));
135
+ }
136
+ function printPluginList(result) {
137
+ ui.section(`${result.username} (${result.source})`);
138
+ if (result.plugins.length === 0) {
139
+ ui.warn(result.source === "public"
140
+ ? "No public contributor plugins found. Log in and run `pressship ls` to include plugins where you only have SVN commit access."
141
+ : "No plugins found.");
142
+ return;
143
+ }
144
+ for (const plugin of result.plugins) {
145
+ ui.section(plugin.name);
146
+ ui.keyValue("Slug", plugin.slug);
147
+ ui.keyValue("Role", plugin.roles.join(", "));
148
+ ui.keyValue("Active", plugin.activeInstalls ?? "unknown");
149
+ ui.keyValue("Tested", plugin.testedWith ?? "unknown");
150
+ ui.keyValue("URL", ui.path(plugin.url));
151
+ }
152
+ }
153
+ function normalizePluginUrl(value) {
154
+ return value.startsWith("//") ? `https:${value}` : new URL(value, "https://wordpress.org").toString();
155
+ }
156
+ function cleanText(value) {
157
+ if (!value) {
158
+ return undefined;
159
+ }
160
+ const text = value
161
+ .replace(/<[^>]+>/g, " ")
162
+ .replace(/&nbsp;/g, " ")
163
+ .replace(/&amp;/g, "&")
164
+ .replace(/&quot;/g, '"')
165
+ .replace(/&#039;|&apos;/g, "'")
166
+ .replace(/&lt;/g, "<")
167
+ .replace(/&gt;/g, ">")
168
+ .replace(/&#(\d+);/g, (_match, code) => String.fromCodePoint(Number(code)))
169
+ .replace(/&#x([0-9a-f]+);/gi, (_match, code) => String.fromCodePoint(Number.parseInt(code, 16)))
170
+ .replace(/\s+/g, " ")
171
+ .trim();
172
+ return text || undefined;
173
+ }
174
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/plugin/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type SvnCredentials = {
2
+ username: string;
3
+ password: string;
4
+ };
5
+ export declare function resolveSvnCredentials(username?: string): Promise<SvnCredentials>;
6
+ export declare function resolveSvnUsername(): Promise<string>;
7
+ export declare function getSavedSvnPassword(username: string): Promise<string | undefined>;
8
+ export declare function saveSvnPassword(username: string, svnPassword: string): Promise<void>;
9
+ export declare function getSvnPasswordUrl(username: string): string;
@@ -0,0 +1,94 @@
1
+ import { input, password } from "@inquirer/prompts";
2
+ import { readFile, writeFile } from "node:fs/promises";
3
+ import { z } from "zod";
4
+ import { hasSavedSession, openBrowserSession } from "../auth/session.js";
5
+ import { getWordPressOrgAccount } from "../auth/whoami.js";
6
+ import { ui } from "../ui.js";
7
+ import { ensureConfigDir, getSvnCredentialsPath, pathExists } from "../utils/paths.js";
8
+ const svnCredentialsSchema = z.object({
9
+ credentials: z.record(z.string(), z.object({
10
+ password: z.string().min(1)
11
+ }))
12
+ });
13
+ export async function resolveSvnCredentials(username) {
14
+ const resolvedUsername = username ?? (await resolveSvnUsername());
15
+ const savedPassword = await getSavedSvnPassword(resolvedUsername);
16
+ if (savedPassword) {
17
+ return { username: resolvedUsername, password: savedPassword };
18
+ }
19
+ if (!process.stdin.isTTY) {
20
+ throw new Error(`No saved WordPress.org SVN password found for ${resolvedUsername}. Generate one at ${getSvnPasswordUrl(resolvedUsername)} and run this command interactively once.`);
21
+ }
22
+ ui.section("WordPress.org SVN password");
23
+ const svnPasswordUrl = getSvnPasswordUrl(resolvedUsername);
24
+ ui.info(`Open ${ui.path(svnPasswordUrl)}`);
25
+ ui.info("Generate an SVN password there, then paste it below. Pressship will save it locally for future releases.");
26
+ const openedContext = await openSvnPasswordPage(svnPasswordUrl);
27
+ try {
28
+ const svnPassword = await password({
29
+ message: `SVN password for ${resolvedUsername}`,
30
+ mask: "*",
31
+ validate: (value) => (value.trim() ? true : "Enter the generated WordPress.org SVN password.")
32
+ });
33
+ await saveSvnPassword(resolvedUsername, svnPassword);
34
+ ui.success(`Saved SVN password for ${resolvedUsername} in ${ui.path(getSvnCredentialsPath())}`);
35
+ return { username: resolvedUsername, password: svnPassword };
36
+ }
37
+ finally {
38
+ await openedContext?.browser()?.close().catch(() => undefined);
39
+ }
40
+ }
41
+ export async function resolveSvnUsername() {
42
+ if (await hasSavedSession()) {
43
+ try {
44
+ return (await getWordPressOrgAccount()).username;
45
+ }
46
+ catch {
47
+ // Fall through to prompt; the browser session may be stale.
48
+ }
49
+ }
50
+ if (!process.stdin.isTTY) {
51
+ throw new Error("Could not infer a WordPress.org username. Re-run with `--username <username>`.");
52
+ }
53
+ return input({
54
+ message: "WordPress.org SVN username",
55
+ validate: (value) => (value.trim() ? true : "Enter your WordPress.org username.")
56
+ });
57
+ }
58
+ export async function getSavedSvnPassword(username) {
59
+ const file = await readSvnCredentialsFile();
60
+ return file.credentials[username]?.password;
61
+ }
62
+ export async function saveSvnPassword(username, svnPassword) {
63
+ await ensureConfigDir();
64
+ const file = await readSvnCredentialsFile();
65
+ file.credentials[username] = { password: svnPassword };
66
+ await writeFile(getSvnCredentialsPath(), `${JSON.stringify(file, null, 2)}\n`, { mode: 0o600 });
67
+ }
68
+ export function getSvnPasswordUrl(username) {
69
+ return `https://profiles.wordpress.org/${encodeURIComponent(username)}/profile/edit/group/3/?screen=svn-password`;
70
+ }
71
+ async function openSvnPasswordPage(url) {
72
+ try {
73
+ const { context, page } = await openBrowserSession({ headless: false });
74
+ await page.goto(url, { waitUntil: "domcontentloaded" });
75
+ return context;
76
+ }
77
+ catch {
78
+ ui.warn("Could not open the SVN password page automatically. Open the URL above in your browser.");
79
+ return undefined;
80
+ }
81
+ }
82
+ async function readSvnCredentialsFile() {
83
+ const credentialsPath = getSvnCredentialsPath();
84
+ if (!pathExists(credentialsPath)) {
85
+ return { credentials: {} };
86
+ }
87
+ try {
88
+ return svnCredentialsSchema.parse(JSON.parse(await readFile(credentialsPath, "utf8")));
89
+ }
90
+ catch {
91
+ return { credentials: {} };
92
+ }
93
+ }
94
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/svn/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { z } from "zod";
2
+ declare const getOptionsSchema: z.ZodObject<{
3
+ json: z.ZodDefault<z.ZodBoolean>;
4
+ installSvn: z.ZodDefault<z.ZodBoolean>;
5
+ }, z.core.$strip>;
6
+ export type GetOptions = z.input<typeof getOptionsSchema>;
7
+ export type SvnGetRuntimeOptions = {
8
+ installSvn?: boolean;
9
+ interactive?: boolean;
10
+ quiet?: boolean;
11
+ };
12
+ export type SvnGetAction = "checkout" | "update";
13
+ export type SvnInfo = {
14
+ workingCopyRoot?: string;
15
+ url?: string;
16
+ relativeUrl?: string;
17
+ repositoryRoot?: string;
18
+ repositoryUuid?: string;
19
+ revision?: string;
20
+ nodeKind?: string;
21
+ schedule?: string;
22
+ lastChangedAuthor?: string;
23
+ lastChangedRevision?: string;
24
+ lastChangedDate?: string;
25
+ };
26
+ export type SvnGetResult = {
27
+ slug: string;
28
+ action: SvnGetAction;
29
+ svnUrl: string;
30
+ path: string;
31
+ info: SvnInfo;
32
+ layout: {
33
+ trunk: boolean;
34
+ assets: boolean;
35
+ tags: boolean;
36
+ tagCount: number;
37
+ };
38
+ };
39
+ export declare function getPlugin(slugOrUrl: string, destination: string | undefined, rawOptions?: GetOptions): Promise<void>;
40
+ export declare function checkoutOrUpdatePlugin(slug: string, checkoutPath: string, options?: SvnGetRuntimeOptions): Promise<SvnGetResult>;
41
+ export declare function resolveCheckoutPath(slug: string, destination: string | undefined): string;
42
+ export declare function getPluginSvnUrl(slug: string): string;
43
+ export declare function resolveSvnGetAction(checkoutPath: string): Promise<SvnGetAction>;
44
+ export declare function parseSvnInfo(output: string): SvnInfo;
45
+ export {};