Extend the init command to allow editions to be merged

Now we can say “—init tw5.com clientserver” to get the tw5.com content
with the client server plugins.
This commit is contained in:
Jermolene 2014-02-24 10:58:11 +00:00
parent 3f6bf2452a
commit a1ad735822
2 changed files with 20 additions and 14 deletions

View File

@ -24,28 +24,34 @@ var Command = function(params,commander) {
Command.prototype.execute = function() {
var fs = require("fs"),
path = require("path"),
editionName = this.params[0] || "empty";
path = require("path");
// Check that we don't already have a valid wiki folder
if($tw.boot.wikiTiddlersPath) {
return "Wiki folder is not empty";
}
// Check the edition exists
var editionPath = path.resolve($tw.boot.corePath,$tw.config.editionsPath) + "/" + editionName;
if(!$tw.utils.isDirectory(editionPath)) {
return "Edition '" + editionName + "' not found";
}
// Copy the edition content
var err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);
if(!err) {
this.commander.streams.output.write("Copied edition '" + editionName + "' to " + $tw.boot.wikiPath + "\n");
// Loop through each of the specified editions
var editions = this.params.length > 0 ? this.params : ["empty"];
for(var editionIndex=0; editionIndex<editions.length; editionIndex++) {
var editionName = editions[editionIndex];
// Check the edition exists
var editionPath = path.resolve($tw.boot.corePath,$tw.config.editionsPath) + "/" + editionName;
if(!$tw.utils.isDirectory(editionPath)) {
return "Edition '" + editionName + "' not found";
}
// Copy the edition content
var err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);
if(!err) {
this.commander.streams.output.write("Copied edition '" + editionName + "' to " + $tw.boot.wikiPath + "\n");
} else {
return err;
}
}
// Tweak the tiddlywiki.info to remove any included wikis
var packagePath = $tw.boot.wikiPath + "/tiddlywiki.info",
packageJson = JSON.parse(fs.readFileSync(packagePath));
delete packageJson.includeWikis;
fs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));
return err;
return null;
};
exports.Command = Command;

View File

@ -10,7 +10,6 @@ Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edit
--init <edition>
```
For example:
```
@ -19,7 +18,8 @@ tiddlywiki ./MyWikiFolder --init empty
Note:
* The edition directory will be created if necessary
* The "edition" defaults to ''empty''
* The init command will fail if the wiki folder does not exist, or is not empty
* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file
* The init command can be used multiple times to merge editions. Editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)