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.
print-window-tiddler
Jermolene 2014-02-24 10:58:11 +00:00
rodzic 3f6bf2452a
commit a1ad735822
2 zmienionych plików z 20 dodań i 14 usunięć

Wyświetl plik

@ -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;

Wyświetl plik

@ -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)