summaryrefslogtreecommitdiff
path: root/WP/plugin-deploy-script-for-wp-org.php
diff options
context:
space:
mode:
Diffstat (limited to 'WP/plugin-deploy-script-for-wp-org.php')
-rw-r--r--WP/plugin-deploy-script-for-wp-org.php44
1 files changed, 44 insertions, 0 deletions
diff --git a/WP/plugin-deploy-script-for-wp-org.php b/WP/plugin-deploy-script-for-wp-org.php
new file mode 100644
index 0000000..3b66d49
--- /dev/null
+++ b/WP/plugin-deploy-script-for-wp-org.php
@@ -0,0 +1,44 @@
+#!/usr/bin/env php
+
+<?php
+
+$pluginSourcePath = $argv[1] ?? die('source path missing');
+$svnDestinationPath = $argv[2] ?? die('desination path missing');
+
+$pluginSourcePath = realpath($pluginSourcePath) ?: die('source path doesn\'t exist');
+$svnDestinationPath = realpath($svnDestinationPath) ?: die('desination path doesn\'t exist');
+
+if (! file_exists("$pluginSourcePath/composer.json")) {
+ die('plugin is missing a composer.json file');
+}
+if (! is_dir("$svnDestinationPath/.svn")) {
+ die('desination is not a svn repository. initialize it with "svn co https://plugins.svn.wordpress.org/your-plugin" first');
+}
+
+// get composer info
+$composer = json_decode(file_get_contents("$pluginSourcePath/composer.json"));
+
+// set files into deployable state
+chdir($pluginSourcePath);
+exec('composer install --no-dev');
+exec('npm run build'); # if wp-scripts is used # TODO: how to use with .nvmrc?
+
+// bundling deployable files
+exec('composer archive -f zip');
+$zipFilenames = glob('*.zip');
+$zipFilename = $zipFilenames[array_key_last($zipFilenames)];
+exec("unzip $pluginSourcePath/$zipFilename -d $svnDestinationPath/$zipFilename");
+
+// copying files to svn trunk folder
+chdir($svnDestinationPath);
+exec("rsync -av $svnDestinationPath/$zipFilename/ $svnDestinationPath/trunk --delete");
+
+// copy new version to tags
+exec('svn cp trunk tags/' . $composer->version);
+
+// commit
+exec("svn commit -m 'updating to v{$composer->version}'");
+
+// clean up files
+unlink("$pluginSourcePath/$zipFilename");
+exec("rm -rf $svnDestinationPath/$zipFilename"); # feeling dangerous