1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-11-06 09:19:22 +02:00

Various changes

This commit is contained in:
Laurent Cozic
2017-07-18 19:27:10 +00:00
parent 6c75345435
commit 980e4bded1
11 changed files with 209 additions and 13 deletions

View File

@@ -208,7 +208,7 @@ class Application {
}
}
}
loadCommands_() {
this.onLocaleChanged(); // Ensures that help and exit commands are translated
@@ -260,6 +260,41 @@ class Application {
if (cmd.hidden()) vorpalCmd.hidden();
});
this.vorpal().catch('[args...]', 'Catches undefined commands').action(function(args, end) {
args = args.args;
function delayExec(command) {
setTimeout(() => {
app().vorpal().exec(command);
}, 100);
}
if (!args.length) {
end();
delayExec('help');
return;
}
let commandName = args.splice(0, 1);
let aliases = Setting.value('aliases').trim();
aliases = aliases.length ? JSON.parse(aliases) : [];
for (let i = 0; i < aliases.length; i++) {
const alias = aliases[i];
if (alias.name == commandName) {
let command = alias.command + ' ' + app().shellArgsToString(args);
end();
delayExec(command);
return;
}
}
this.log(_("Invalid command. Showing help:"));
end();
delayExec('help');
});
}
async synchronizer(syncTarget) {

View File

@@ -0,0 +1,28 @@
import { BaseCommand } from './base-command.js';
import { app } from './app.js';
import { _ } from 'lib/locale.js';
import { Setting } from 'lib/models/setting.js';
class Command extends BaseCommand {
usage() {
return 'alias <name> <command>';
}
description() {
return _('Creates a new command alias which can then be used as a regular command (eg. `alias ll "ls -l"`).');
}
async action(args) {
let aliases = Setting.value('aliases').trim();
aliases = aliases.length ? JSON.parse(aliases) : [];
aliases.push({
name: args.name,
command: args.command,
});
Setting.setValue('aliases', JSON.stringify(aliases));
}
}
module.exports = Command;

View File

@@ -0,0 +1,34 @@
import { BaseCommand } from './base-command.js';
import { app } from './app.js';
import { _ } from 'lib/locale.js';
import { BaseModel } from 'lib/base-model.js';
import { Folder } from 'lib/models/folder.js';
import { Note } from 'lib/models/note.js';
import { autocompleteItems } from './autocomplete.js';
class Command extends BaseCommand {
usage() {
return 'geoloc <title>';
}
description() {
return _('Displays a geolocation URL for the note.');
}
autocomplete() {
return { data: autocompleteItems };
}
async action(args) {
let title = args['title'];
let item = await app().loadItem(BaseModel.TYPE_NOTE, title, { parent: app().currentFolder() });
if (!item) throw new Error(_('Cannot find "%s".', title));
const url = Note.geolocationUrl(item);
this.log(url);
}
}
module.exports = Command;

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Joplin-CLI 1.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-18 13:36+0100\n"
"POT-Creation-Date: 2017-07-18 16:33+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -58,14 +58,24 @@ msgid "Exits the application."
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/app.js:294
msgid "Invalid command. Showing help:"
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/app.js:329
#, javascript-format
msgid "Synchronizing with directory \"%s\""
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/app.js:373
#: /media/veracrypt22/src/notes/CliClient/app/app.js:408
msgid "No notebook is defined. Create one with `mkbook <notebook>`."
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/command-alias.js:13
msgid ""
"Creates a new command alias which can then be used as a regular command (eg. "
"`alias ll \"ls -l\"`)."
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:16
msgid "Displays the given note."
msgstr ""
@@ -77,6 +87,7 @@ msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:33
#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:31
#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:34
#: /media/veracrypt22/src/notes/CliClient/app/command-geoloc.js:27
#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:29
#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:36
#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:39
@@ -127,6 +138,10 @@ msgstr ""
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/command-geoloc.js:16
msgid "Displays a geolocation URL for the note."
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:16
msgid "Imports an Evernote notebook file (.enex file)."
msgstr ""
@@ -418,12 +433,16 @@ msgstr ""
msgid "Notebooks cannot be named \"%s\", which is a reserved title."
msgstr ""
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:194
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:46
msgid "This note does not have geolocation information."
msgstr ""
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:201
#, javascript-format
msgid "Cannot copy note to \"%s\" notebook"
msgstr ""
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:205
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:212
#, javascript-format
msgid "Cannot move note to \"%s\" notebook"
msgstr ""

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Joplin-CLI 1.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-18 13:36+0100\n"
"POT-Creation-Date: 2017-07-18 16:32+0100\n"
"PO-Revision-Date: 2017-07-18 13:27+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -60,14 +60,25 @@ msgid "Exits the application."
msgstr "Quitter le logiciel."
#: /media/veracrypt22/src/notes/CliClient/app/app.js:294
#, fuzzy
msgid "Invalid command. Showing help:"
msgstr "Commande invalie : \"%s\""
#: /media/veracrypt22/src/notes/CliClient/app/app.js:329
#, javascript-format
msgid "Synchronizing with directory \"%s\""
msgstr "Synchronisation avec dossier \"%s\""
#: /media/veracrypt22/src/notes/CliClient/app/app.js:373
#: /media/veracrypt22/src/notes/CliClient/app/app.js:408
msgid "No notebook is defined. Create one with `mkbook <notebook>`."
msgstr "Aucun carnet n'est défini. Créez-en un avec `mkbook <carnet>`."
#: /media/veracrypt22/src/notes/CliClient/app/command-alias.js:13
msgid ""
"Creates a new command alias which can then be used as a regular command (eg. "
"`alias ll \"ls -l\"`)."
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:16
msgid "Displays the given note."
msgstr "Affiche la note."
@@ -79,6 +90,7 @@ msgstr "Affiche tous les détails de la note."
#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:33
#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:31
#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:34
#: /media/veracrypt22/src/notes/CliClient/app/command-geoloc.js:27
#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:29
#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:36
#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:39
@@ -138,6 +150,11 @@ msgstr ""
"Edition de la note en cours. Fermez l'éditeur de texte pour retourner à "
"l'invite de commande."
#: /media/veracrypt22/src/notes/CliClient/app/command-geoloc.js:16
#, fuzzy
msgid "Displays a geolocation URL for the note."
msgstr "Affiche tous les détails de la note."
#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:16
msgid "Imports an Evernote notebook file (.enex file)."
msgstr "Importer un carnet Evernote (fichier .enex)."
@@ -451,12 +468,16 @@ msgstr "Un carnet avec ce titre existe déjà : \"%s\""
msgid "Notebooks cannot be named \"%s\", which is a reserved title."
msgstr "Les carnets ne peuvent être nommés \"%s\" car c'est un nom réservé."
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:194
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:46
msgid "This note does not have geolocation information."
msgstr ""
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:201
#, javascript-format
msgid "Cannot copy note to \"%s\" notebook"
msgstr "Impossible de copier la note dans le carnet \"%s\""
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:205
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:212
#, javascript-format
msgid "Cannot move note to \"%s\" notebook"
msgstr "Impossible de déplacer la note vers le carnet \"%s\""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Joplin-CLI 1.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-18 13:36+0100\n"
"POT-Creation-Date: 2017-07-18 16:33+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -58,14 +58,24 @@ msgid "Exits the application."
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/app.js:294
msgid "Invalid command. Showing help:"
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/app.js:329
#, javascript-format
msgid "Synchronizing with directory \"%s\""
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/app.js:373
#: /media/veracrypt22/src/notes/CliClient/app/app.js:408
msgid "No notebook is defined. Create one with `mkbook <notebook>`."
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/command-alias.js:13
msgid ""
"Creates a new command alias which can then be used as a regular command (eg. "
"`alias ll \"ls -l\"`)."
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:16
msgid "Displays the given note."
msgstr ""
@@ -77,6 +87,7 @@ msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/command-cat.js:33
#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:31
#: /media/veracrypt22/src/notes/CliClient/app/command-cp.js:34
#: /media/veracrypt22/src/notes/CliClient/app/command-geoloc.js:27
#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:29
#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:36
#: /media/veracrypt22/src/notes/CliClient/app/command-mv.js:39
@@ -127,6 +138,10 @@ msgstr ""
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/command-geoloc.js:16
msgid "Displays a geolocation URL for the note."
msgstr ""
#: /media/veracrypt22/src/notes/CliClient/app/command-import-enex.js:16
msgid "Imports an Evernote notebook file (.enex file)."
msgstr ""
@@ -418,12 +433,16 @@ msgstr ""
msgid "Notebooks cannot be named \"%s\", which is a reserved title."
msgstr ""
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:194
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:46
msgid "This note does not have geolocation information."
msgstr ""
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:201
#, javascript-format
msgid "Cannot copy note to \"%s\" notebook"
msgstr ""
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:205
#: /media/veracrypt22/src/notes/ReactNativeClient/lib/models/note.js:212
#, javascript-format
msgid "Cannot move note to \"%s\" notebook"
msgstr ""

View File

@@ -562,5 +562,22 @@ describe('Synchronizer', function() {
done();
});
it('should not try to delete on remote conflicted notes that have been deleted', async (done) => {
let f1 = await Folder.save({ title: "folder" });
let n1 = await Note.save({ title: "mynote", parent_id: f1.id });
await synchronizer().start();
await switchClient(2);
await synchronizer().start();
await Note.save({ id: n1.id, is_conflict: 1 });
await Note.delete(n1.id);
const deletedItems = await BaseItem.deletedItems();
expect(deletedItems.length).toBe(0);
done();
});
});