coffee v0.0.2

main
Mel 3 years ago
parent 7636445ed5
commit fc52f0bc6a

@ -23,6 +23,6 @@
"customjs",
"obsidian42-brat",
"code-block-copy",
"obsidian-crypto-lookup",
"obsidian-lineup-builder"
"obsidian-lineup-builder",
"obsidian-crypto-lookup"
]

@ -69,9 +69,16 @@
"a": 1,
"rgb": 5055154
}
},
{
"query": "line:(DocType: \"Recipe\") ",
"color": {
"a": 1,
"rgb": 14701138
}
}
],
"collapse-display": true,
"collapse-display": false,
"showArrow": true,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
@ -81,6 +88,6 @@
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 0.277223726779554,
"scale": 0.3408463758608929,
"close": true
}

File diff suppressed because one or more lines are too long

@ -1,8 +1,8 @@
{
"id": "obsidian-tasks-plugin",
"name": "Tasks",
"version": "1.3.0",
"minAppVersion": "0.12.3",
"version": "1.4.1",
"minAppVersion": "0.12.17",
"description": "Task management for Obsidian",
"author": "Martin Schenck",
"authorUrl": "https://github.com/schemar",

@ -16,13 +16,23 @@
cursor: pointer;
}
.tasks-list-text {
position: relative;
}
.tasks-list-text .tooltip {
position: absolute;
top: 0px;
left: 0px;
white-space: nowrap;
}
.tasks-setting-important {
color: red;
font-weight: bold;
}
.tasks-modal label {
display: block;
margin: 5px 0 5px 0;
}
@ -31,9 +41,9 @@
}
.tasks-modal hr {
margin: 0;
margin: 10px 0 10px 0;
}
.tasks-modal-section {
margin-bottom: 1rem;
.tasks-modal-date {
margin-bottom: 10px;
}

@ -21,6 +21,26 @@ var __reExport = (target, module2, desc) => {
var __toModule = (module2) => {
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
};
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
// src/main.ts
__export(exports, {
@ -41,10 +61,10 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab {
containerEl.createEl("h2", { text: this.plugin.appName });
new import_obsidian.Setting(containerEl).setName("Auto-update at startup").setDesc("If enabled all beta plugins will be checked for updates each time Obsidian starts.").addToggle((cb) => {
cb.setValue(this.plugin.settings.updateAtStartup);
cb.onChange(async (value) => {
cb.onChange((value) => __async(this, null, function* () {
this.plugin.settings.updateAtStartup = value;
await this.plugin.saveSettings();
});
yield this.plugin.saveSettings();
}));
});
containerEl.createEl("hr");
containerEl.createEl("h2", { text: "Beta Plugin List" });
@ -56,23 +76,23 @@ var SettingsTab = class extends import_obsidian.PluginSettingTab {
containerEl.createSpan({ text: "This does not delete the plugin, this should be done from the Community Plugins tab in Settings." });
new import_obsidian.Setting(containerEl).addButton((cb) => {
cb.setButtonText("Add Beta plugin");
cb.onClick(async () => {
cb.onClick(() => __async(this, null, function* () {
this.plugin.app.setting.close();
await this.plugin.betaPlugins.displayAddNewPluginModal(true);
});
yield this.plugin.betaPlugins.displayAddNewPluginModal(true);
}));
});
for (const bp of this.plugin.settings.pluginList) {
new import_obsidian.Setting(containerEl).setName(bp).addButton((btn) => {
btn.setIcon("cross");
btn.setTooltip("Delete this beta plugin");
btn.onClick(async () => {
btn.onClick(() => __async(this, null, function* () {
if (btn.buttonEl.textContent === "")
btn.setButtonText("Click once more to confirm removal");
else {
btn.buttonEl.parentElement.parentElement.remove();
await this.plugin.betaPlugins.deletePlugin(bp);
yield this.plugin.betaPlugins.deletePlugin(bp);
}
});
}));
});
}
}
@ -83,14 +103,18 @@ var DEFAULT_SETTINGS = {
pluginList: [],
updateAtStartup: false
};
async function addBetaPluginToList(plugin, repositoryPath) {
if (!plugin.settings.pluginList.contains(repositoryPath)) {
plugin.settings.pluginList.unshift(repositoryPath);
plugin.saveSettings();
}
function addBetaPluginToList(plugin, repositoryPath) {
return __async(this, null, function* () {
if (!plugin.settings.pluginList.contains(repositoryPath)) {
plugin.settings.pluginList.unshift(repositoryPath);
plugin.saveSettings();
}
});
}
async function existBetaPluginInList(plugin, repositoryPath) {
return plugin.settings.pluginList.contains(repositoryPath);
function existBetaPluginInList(plugin, repositoryPath) {
return __async(this, null, function* () {
return plugin.settings.pluginList.contains(repositoryPath);
});
}
// src/AddNewPluginModal.ts
@ -103,19 +127,21 @@ var AddNewPluginModal = class extends import_obsidian2.Modal {
this.address = "";
this.openSettingsTabAfterwards = openSettingsTabAfterwards;
}
async submitForm() {
if (this.address === "")
return;
const scrubbedAddress = this.address.replace("https://github.com/", "");
if (await existBetaPluginInList(this.plugin, scrubbedAddress)) {
new import_obsidian2.Notice(`BRAT
submitForm() {
return __async(this, null, function* () {
if (this.address === "")
return;
const scrubbedAddress = this.address.replace("https://github.com/", "");
if (yield existBetaPluginInList(this.plugin, scrubbedAddress)) {
new import_obsidian2.Notice(`BRAT
This plugin is already in the list for beta testing`, 1e4);
return;
}
const result = await this.betaPlugins.addPlugin(scrubbedAddress);
if (result) {
this.close();
}
return;
}
const result = yield this.betaPlugins.addPlugin(scrubbedAddress);
if (result) {
this.close();
}
});
}
onOpen() {
this.contentEl.createEl("h4", { text: "Github repository for beta plugin:" });
@ -125,12 +151,12 @@ This plugin is already in the list for beta testing`, 1e4);
textEl.onChange((value) => {
this.address = value.trim();
});
textEl.inputEl.addEventListener("keydown", async (e) => {
textEl.inputEl.addEventListener("keydown", (e) => __async(this, null, function* () {
if (e.key === "Enter" && this.address !== " ") {
e.preventDefault();
await this.submitForm();
yield this.submitForm();
}
});
}));
textEl.inputEl.style.width = "100%";
window.setTimeout(() => {
const title = document.querySelector(".setting-item-info");
@ -147,51 +173,53 @@ This plugin is already in the list for beta testing`, 1e4);
text: "Add Plugin"
});
});
formEl.addEventListener("submit", async (e) => {
formEl.addEventListener("submit", (e) => __async(this, null, function* () {
e.preventDefault();
if (this.address !== "")
await this.submitForm();
});
yield this.submitForm();
}));
});
}
async onClose() {
if (this.openSettingsTabAfterwards) {
await this.plugin.app.setting.open();
await this.plugin.app.setting.openTabById("obsidian42-brat");
}
onClose() {
return __async(this, null, function* () {
if (this.openSettingsTabAfterwards) {
yield this.plugin.app.setting.open();
yield this.plugin.app.setting.openTabById("obsidian42-brat");
}
});
}
};
// src/githubUtils.ts
var import_obsidian3 = __toModule(require("obsidian"));
var GITHUB_RAW_USERCONTENT_PATH = "https://raw.githubusercontent.com/";
var grabReleaseFileFromRepository = async (repository, version, fileName) => {
var grabReleaseFileFromRepository = (repository, version, fileName) => __async(void 0, null, function* () {
const URL = `https://github.com/${repository}/releases/download/${version}/${fileName}`;
try {
const download = await (0, import_obsidian3.request)({ url: URL });
const download = yield (0, import_obsidian3.request)({ url: URL });
return download === "Not Found" || download === `{"error":"Not Found"}` ? null : download;
} catch (error) {
console.log("error in grabReleaseFileFromRepository", URL, error);
}
};
var grabManifestJsonFromRepository = async (repositoryPath, rootManifest = true) => {
});
var grabManifestJsonFromRepository = (repositoryPath, rootManifest = true) => __async(void 0, null, function* () {
const manifestJsonPath = GITHUB_RAW_USERCONTENT_PATH + repositoryPath + (rootManifest === true ? "/HEAD/manifest.json" : "/HEAD/manifest-beta.json");
try {
const response = await (0, import_obsidian3.request)({ url: manifestJsonPath });
return response === "404: Not Found" ? null : await JSON.parse(response);
const response = yield (0, import_obsidian3.request)({ url: manifestJsonPath });
return response === "404: Not Found" ? null : yield JSON.parse(response);
} catch (error) {
console.log("error in grabManifestJsonFromRepository", error);
console.log(`error in grabManifestJsonFromRepository for ${manifestJsonPath}`, error);
}
};
var grabCommmunityPluginList = async () => {
});
var grabCommmunityPluginList = () => __async(void 0, null, function* () {
const pluginListURL = `https://raw.githubusercontent.com/obsidianmd/obsidian-releases/HEAD/community-plugins.json`;
try {
const response = await (0, import_obsidian3.request)({ url: pluginListURL });
return response === "404: Not Found" ? null : await JSON.parse(response);
const response = yield (0, import_obsidian3.request)({ url: pluginListURL });
return response === "404: Not Found" ? null : yield JSON.parse(response);
} catch (error) {
console.log("error in grabCommmunityPluginList", error);
}
};
});
// src/BetaPlugins.ts
var import_obsidian4 = __toModule(require("obsidian"));
@ -199,160 +227,186 @@ var BetaPlugins = class {
constructor(plugin) {
this.plugin = plugin;
}
async displayAddNewPluginModal(openSettingsTabAfterwards = false) {
const newPlugin = new AddNewPluginModal(this.plugin, this, openSettingsTabAfterwards);
newPlugin.open();
displayAddNewPluginModal(openSettingsTabAfterwards = false) {
return __async(this, null, function* () {
const newPlugin = new AddNewPluginModal(this.plugin, this, openSettingsTabAfterwards);
newPlugin.open();
});
}
async validateRepository(repositoryPath, getBetaManifest = false, reportIsues = false) {
const noticeTimeout = 1e4;
const manifestJson = await grabManifestJsonFromRepository(repositoryPath, !getBetaManifest);
if (!manifestJson) {
if (reportIsues)
new import_obsidian4.Notice(`BRAT
validateRepository(repositoryPath, getBetaManifest = false, reportIsues = false) {
return __async(this, null, function* () {
const noticeTimeout = 15e3;
const manifestJson = yield grabManifestJsonFromRepository(repositoryPath, !getBetaManifest);
if (!manifestJson) {
if (reportIsues)
new import_obsidian4.Notice(`BRAT
${repositoryPath}
This does not seem to be an obsidian plugin, as there is no manifest.json file.`, noticeTimeout);
return null;
}
if (!("id" in manifestJson)) {
if (reportIsues)
new import_obsidian4.Notice(`BRAT
return null;
}
if (!("id" in manifestJson)) {
if (reportIsues)
new import_obsidian4.Notice(`BRAT
${repositoryPath}
The plugin id attribute for the release is missing from the manifest file`, noticeTimeout);
return null;
}
if (!("version" in manifestJson)) {
if (reportIsues)
new import_obsidian4.Notice(`BRAT
return null;
}
if (!("version" in manifestJson)) {
if (reportIsues)
new import_obsidian4.Notice(`BRAT
${repositoryPath}
The version attribute for the release is missing from the manifest file`, noticeTimeout);
return null;
}
return manifestJson;
return null;
}
return manifestJson;
});
}
async getAllReleaseFiles(repositoryPath, manifest, getManifest) {
return {
mainJs: await grabReleaseFileFromRepository(repositoryPath, manifest.version, "main.js"),
manifest: getManifest ? await grabReleaseFileFromRepository(repositoryPath, manifest.version, "manifest.json") : null,
styles: await grabReleaseFileFromRepository(repositoryPath, manifest.version, "styles.css")
};
getAllReleaseFiles(repositoryPath, manifest, getManifest) {
return __async(this, null, function* () {
return {
mainJs: yield grabReleaseFileFromRepository(repositoryPath, manifest.version, "main.js"),
manifest: getManifest ? yield grabReleaseFileFromRepository(repositoryPath, manifest.version, "manifest.json") : null,
styles: yield grabReleaseFileFromRepository(repositoryPath, manifest.version, "styles.css")
};
});
}
async writeReleaseFilesToPluginFolder(betaPluginID, relFiles) {
const pluginTargetFolderPath = (0, import_obsidian4.normalizePath)(this.plugin.app.vault.configDir + "/plugins/" + betaPluginID) + "/";
const adapter = this.plugin.app.vault.adapter;
if (await adapter.exists(pluginTargetFolderPath) === false || !await adapter.exists(pluginTargetFolderPath + "manifest.json")) {
await adapter.mkdir(pluginTargetFolderPath);
}
await adapter.write(pluginTargetFolderPath + "main.js", relFiles.mainJs);
await adapter.write(pluginTargetFolderPath + "manifest.json", relFiles.manifest);
if (relFiles.styles)
await adapter.write(pluginTargetFolderPath + "styles.css", relFiles.styles);
}
async addPlugin(repositoryPath, updatePluginFiles = false, seeIfUpdatedOnly = false, reportIfNotUpdted = false) {
const noticeTimeout = 1e4;
let primaryManifest = await this.validateRepository(repositoryPath, true, false);
const usingBetaManifest = primaryManifest ? true : false;
if (usingBetaManifest === false)
primaryManifest = await this.validateRepository(repositoryPath, false, true);
if (primaryManifest === null) {
new import_obsidian4.Notice(`BRAT
writeReleaseFilesToPluginFolder(betaPluginID, relFiles) {
return __async(this, null, function* () {
const pluginTargetFolderPath = (0, import_obsidian4.normalizePath)(this.plugin.app.vault.configDir + "/plugins/" + betaPluginID) + "/";
const adapter = this.plugin.app.vault.adapter;
if ((yield adapter.exists(pluginTargetFolderPath)) === false || !(yield adapter.exists(pluginTargetFolderPath + "manifest.json"))) {
yield adapter.mkdir(pluginTargetFolderPath);
}
yield adapter.write(pluginTargetFolderPath + "main.js", relFiles.mainJs);
yield adapter.write(pluginTargetFolderPath + "manifest.json", relFiles.manifest);
if (relFiles.styles)
yield adapter.write(pluginTargetFolderPath + "styles.css", relFiles.styles);
});
}
addPlugin(repositoryPath, updatePluginFiles = false, seeIfUpdatedOnly = false, reportIfNotUpdted = false) {
return __async(this, null, function* () {
var _a;
const noticeTimeout = 1e4;
let primaryManifest = yield this.validateRepository(repositoryPath, true, false);
const usingBetaManifest = primaryManifest ? true : false;
if (usingBetaManifest === false)
primaryManifest = yield this.validateRepository(repositoryPath, false, true);
if (primaryManifest === null) {
new import_obsidian4.Notice(`BRAT
${repositoryPath}
A manifest.json or manifest-beta.json file does not exist in the root directory of the repository. This plugin cannot be installed.`, noticeTimeout);
return false;
}
if (!primaryManifest.hasOwnProperty("version")) {
new import_obsidian4.Notice(`BRAT
return false;
}
if (!primaryManifest.hasOwnProperty("version")) {
new import_obsidian4.Notice(`BRAT
${repositoryPath}
The manifest${usingBetaManifest ? "-beta" : ""}.json file in the root directory of the repository does not have a version number in the file. This plugin cannot be installed.`, noticeTimeout);
return false;
}
const getRelease = async () => {
const rFiles = await this.getAllReleaseFiles(repositoryPath, primaryManifest, usingBetaManifest);
if (usingBetaManifest || rFiles.manifest === null)
rFiles.manifest = JSON.stringify(primaryManifest);
if (rFiles.mainJs === null) {
new import_obsidian4.Notice(`BRAT
return false;
}
const getRelease = () => __async(this, null, function* () {
const rFiles = yield this.getAllReleaseFiles(repositoryPath, primaryManifest, usingBetaManifest);
if (usingBetaManifest || rFiles.manifest === null)
rFiles.manifest = JSON.stringify(primaryManifest);
if (rFiles.mainJs === null) {
new import_obsidian4.Notice(`BRAT
${repositoryPath}
The release is not complete and cannot be download. main.js is missing from the Release`, noticeTimeout);
return null;
}
return rFiles;
};
if (updatePluginFiles === false) {
const releaseFiles = await getRelease();
if (releaseFiles === null)
return;
await this.writeReleaseFilesToPluginFolder(primaryManifest.id, releaseFiles);
await addBetaPluginToList(this.plugin, repositoryPath);
await this.plugin.app.plugins.loadManifests();
new import_obsidian4.Notice(`BRAT
return null;
}
return rFiles;
});
if (updatePluginFiles === false) {
const releaseFiles = yield getRelease();
if (releaseFiles === null)
return;
yield this.writeReleaseFilesToPluginFolder(primaryManifest.id, releaseFiles);
yield addBetaPluginToList(this.plugin, repositoryPath);
yield this.plugin.app.plugins.loadManifests();
new import_obsidian4.Notice(`BRAT
${repositoryPath}
The plugin has been registered with BRAT. You may still need to enable it the Community Plugin List.`, noticeTimeout);
} else {
const pluginTargetFolderPath = this.plugin.app.vault.configDir + "/plugins/" + primaryManifest.id + "/";
let localManifestContents = null;
} else {
const pluginTargetFolderPath = this.plugin.app.vault.configDir + "/plugins/" + primaryManifest.id + "/";
let localManifestContents = null;
try {
localManifestContents = yield this.plugin.app.vault.adapter.read(pluginTargetFolderPath + "manifest.json");
} catch (e) {
if (e.errno === -4058) {
yield this.addPlugin(repositoryPath, false, usingBetaManifest);
return true;
} else
console.log("BRAT - Local Manifest Load", primaryManifest.id, JSON.stringify(e, null, 2));
}
const localManifestJSON = yield JSON.parse(localManifestContents);
if (localManifestJSON.version !== primaryManifest.version) {
const releaseFiles = yield getRelease();
if (releaseFiles === null)
return;
if (seeIfUpdatedOnly) {
new import_obsidian4.Notice(`BRAT
There is an update available for ${primaryManifest.id} from version ${localManifestJSON.version} to ${primaryManifest.version}`, 3e4);
} else {
yield this.writeReleaseFilesToPluginFolder(primaryManifest.id, releaseFiles);
yield this.plugin.app.plugins.loadManifests();
if ((_a = this.plugin.app.plugins.plugins[primaryManifest.id]) == null ? void 0 : _a.manifest)
yield this.reloadPlugin(primaryManifest.id);
new import_obsidian4.Notice(`BRAT
${primaryManifest.id}
Plugin has been updated from version ${localManifestJSON.version} to ${primaryManifest.version}.`, 3e4);
}
} else if (reportIfNotUpdted)
new import_obsidian4.Notice(`BRAT
No update available for ${repositoryPath}`, 3e3);
}
return true;
});
}
reloadPlugin(pluginName) {
return __async(this, null, function* () {
const plugins = this.plugin.app.plugins;
try {
localManifestContents = await this.plugin.app.vault.adapter.read(pluginTargetFolderPath + "manifest.json");
yield plugins.disablePlugin(pluginName);
yield plugins.enablePlugin(pluginName);
} catch (e) {
if (e.errno === -4058) {
await this.addPlugin(repositoryPath, false, usingBetaManifest);
return true;
} else
console.log("BRAT - Local Manifest Load", primaryManifest.id, JSON.stringify(e, null, 2));
console.log("reload plugin", e);
}
const localManifestJSON = await JSON.parse(localManifestContents);
if (localManifestJSON.version !== primaryManifest.version) {
const releaseFiles = await getRelease();
if (releaseFiles === null)
return;
if (seeIfUpdatedOnly) {
new import_obsidian4.Notice(`BRAT
There is an update available for ${primaryManifest.id}`);
} else {
await this.writeReleaseFilesToPluginFolder(primaryManifest.id, releaseFiles);
await this.plugin.app.plugins.loadManifests();
if (this.plugin.app.plugins.plugins[primaryManifest.id]?.manifest)
await this.reloadPlugin(primaryManifest.id);
new import_obsidian4.Notice(`BRAT
${primaryManifest.id}
Plugin has been updated.`, noticeTimeout);
}
} else if (reportIfNotUpdted)
new import_obsidian4.Notice(`BRAT
No update available for ${repositoryPath}`, 3e3);
}
return true;
}
async reloadPlugin(pluginName) {
const plugins = this.plugin.app.plugins;
try {
await plugins.disablePlugin(pluginName);
await plugins.enablePlugin(pluginName);
} catch (e) {
console.log("reload plugin", e);
}
});
}
async updatePlugin(repositoryPath, onlyCheckDontUpdate = false, reportIfNotUpdted = false) {
const result = await this.addPlugin(repositoryPath, true, onlyCheckDontUpdate, reportIfNotUpdted);
if (result === false && onlyCheckDontUpdate === false)
new import_obsidian4.Notice(`BRAT
updatePlugin(repositoryPath, onlyCheckDontUpdate = false, reportIfNotUpdted = false) {
return __async(this, null, function* () {
const result = yield this.addPlugin(repositoryPath, true, onlyCheckDontUpdate, reportIfNotUpdted);
if (result === false && onlyCheckDontUpdate === false)
new import_obsidian4.Notice(`BRAT
${repositoryPath}
Update of plugin failed.`);
return result;
return result;
});
}
async checkForUpdatesAndInstallUpdates(showInfo = false, onlyCheckDontUpdate = false) {
if (showInfo)
new import_obsidian4.Notice(`BRAT
checkForUpdatesAndInstallUpdates(showInfo = false, onlyCheckDontUpdate = false) {
return __async(this, null, function* () {
if (showInfo)
new import_obsidian4.Notice(`BRAT
Checking for plugin updates STARTED`, 1e4);
for (const bp of this.plugin.settings.pluginList) {
await this.updatePlugin(bp, onlyCheckDontUpdate);
}
if (showInfo)
new import_obsidian4.Notice(`BRAT
for (const bp of this.plugin.settings.pluginList) {
yield this.updatePlugin(bp, onlyCheckDontUpdate);
}
if (showInfo)
new import_obsidian4.Notice(`BRAT
Checking for plugin updates COMPLETED`, 1e4);
});
}
async deletePlugin(repositoryPath) {
this.plugin.settings.pluginList = this.plugin.settings.pluginList.filter((b) => b != repositoryPath);
this.plugin.saveSettings();
deletePlugin(repositoryPath) {
return __async(this, null, function* () {
this.plugin.settings.pluginList = this.plugin.settings.pluginList.filter((b) => b != repositoryPath);
this.plugin.saveSettings();
});
}
getEnabledDisabledPlugins(enabled) {
const pl = this.plugin.app.plugins;
const manifests = Object.values(pl.manifests);
const enabledPlugins = Object.values(pl.plugins).map((p) => p.manifest);
console.log(enabledPlugins);
return enabled ? manifests.filter((manifest) => enabledPlugins.find((pluginName) => manifest.id === pluginName.id)) : manifests.filter((manifest) => !enabledPlugins.find((pluginName) => manifest.id === pluginName.id));
}
};
@ -367,9 +421,11 @@ var GenericFuzzySuggester = class extends import_obsidian5.FuzzySuggestModal {
setSuggesterData(suggesterData) {
this.data = suggesterData;
}
async display(callBack) {
this.callbackFunction = callBack;
this.open();
display(callBack) {
return __async(this, null, function* () {
this.callbackFunction = callBack;
this.open();
});
}
getItems() {
return this.data;
@ -406,98 +462,132 @@ var ThePlugin = class extends import_obsidian6.Plugin {
this.appName = "Obsidian42 - Beta Reviewer's Auto-update Tool (BRAT)";
this.appID = "obsidian42-brat";
}
async onload() {
console.log("loading Obsidian42 - BRAT");
await this.loadSettings();
this.addSettingTab(new SettingsTab(this.app, this));
this.betaPlugins = new BetaPlugins(this);
this.addCommand({
id: "BRAT-AddBetaPlugin",
name: "Add a beta plugin for testing",
callback: async () => {
await this.betaPlugins.displayAddNewPluginModal();
}
});
this.addCommand({
id: "BRAT-checkForUpdatesAndUpdate",
name: "Check for updates to all beta plugins and UPDATE",
callback: async () => {
await this.betaPlugins.checkForUpdatesAndInstallUpdates(true, false);
}
});
this.addCommand({
id: "BRAT-checkForUpdatesAndDontUpdate",
name: "Only check for updates to beta plugins, but don't Update",
callback: async () => {
await this.betaPlugins.checkForUpdatesAndInstallUpdates(true, true);
}
});
this.addCommand({
id: "BRAT-updateOnePlugin",
name: "Choose a single plugin to update",
callback: async () => {
const pluginList = Object.values(this.settings.pluginList).map((m) => {
return { display: m, info: m };
});
const gfs = new GenericFuzzySuggester(this);
gfs.setSuggesterData(pluginList);
await gfs.display(async (results) => {
new import_obsidian6.Notice(`BRAT
onload() {
return __async(this, null, function* () {
console.log("loading Obsidian42 - BRAT");
yield this.loadSettings();
this.addSettingTab(new SettingsTab(this.app, this));
this.betaPlugins = new BetaPlugins(this);
this.addCommand({
id: "BRAT-AddBetaPlugin",
name: "Add a beta plugin for testing",
callback: () => __async(this, null, function* () {
yield this.betaPlugins.displayAddNewPluginModal();
})
});
this.addCommand({
id: "BRAT-checkForUpdatesAndUpdate",
name: "Check for updates to all beta plugins and UPDATE",
callback: () => __async(this, null, function* () {
yield this.betaPlugins.checkForUpdatesAndInstallUpdates(true, false);
})
});
this.addCommand({
id: "BRAT-checkForUpdatesAndDontUpdate",
name: "Only check for updates to beta plugins, but don't Update",
callback: () => __async(this, null, function* () {
yield this.betaPlugins.checkForUpdatesAndInstallUpdates(true, true);
})
});
this.addCommand({
id: "BRAT-updateOnePlugin",
name: "Choose a single plugin to update",
callback: () => __async(this, null, function* () {
const pluginList = Object.values(this.settings.pluginList).map((m) => {
return { display: m, info: m };
});
const gfs = new GenericFuzzySuggester(this);
gfs.setSuggesterData(pluginList);
yield gfs.display((results) => __async(this, null, function* () {
new import_obsidian6.Notice(`BRAT
Checking for updates for ${results.info}`, 3e3);
await this.betaPlugins.updatePlugin(results.info, false, true);
});
}
});
this.addCommand({
id: "BRAT-restartPlugin",
name: "Restart a plugin that is already installed",
callback: async () => {
const pluginList = Object.values(this.app.plugins.manifests).map((m) => {
return { display: m.id, info: m.id };
});
const gfs = new GenericFuzzySuggester(this);
gfs.setSuggesterData(pluginList);
await gfs.display(async (results) => {
new import_obsidian6.Notice(`${results.info}
yield this.betaPlugins.updatePlugin(results.info, false, true);
}));
})
});
this.addCommand({
id: "BRAT-restartPlugin",
name: "Restart a plugin that is already installed",
callback: () => __async(this, null, function* () {
const pluginList = Object.values(this.app.plugins.manifests).map((m) => {
return { display: m.id, info: m.id };
});
const gfs = new GenericFuzzySuggester(this);
gfs.setSuggesterData(pluginList);
yield gfs.display((results) => __async(this, null, function* () {
new import_obsidian6.Notice(`${results.info}
Plugin reloading .....`, 5e3);
await this.betaPlugins.reloadPlugin(results.info);
});
}
});
this.addCommand({
id: "BRAT-openGitHubRepository",
name: "Open the GitHub repository for a plugin",
callback: async () => {
const communityPlugins = await grabCommmunityPluginList();
const communityPluginList = Object.values(communityPlugins).map((p) => {
return { display: `Community: ${p.name} (${p.repo})`, info: p.repo };
});
const bratList = Object.values(this.settings.pluginList).map((p) => {
return { display: "BRAT: " + p, info: p };
});
communityPluginList.forEach((si) => bratList.push(si));
const gfs = new GenericFuzzySuggester(this);
gfs.setSuggesterData(bratList);
await gfs.display(async (results) => {
if (results.info)
window.open(`https://github.com/${results.info}`);
});
}
});
this.app.workspace.onLayoutReady(() => {
if (this.settings.updateAtStartup)
setTimeout(async () => {
await this.betaPlugins.checkForUpdatesAndInstallUpdates(false);
}, 6e4);
yield this.betaPlugins.reloadPlugin(results.info);
}));
})
});
this.addCommand({
id: "BRAT-openGitHubRepository",
name: "Open the GitHub repository for a plugin",
callback: () => __async(this, null, function* () {
const communityPlugins = yield grabCommmunityPluginList();
const communityPluginList = Object.values(communityPlugins).map((p) => {
return { display: `Community: ${p.name} (${p.repo})`, info: p.repo };
});
const bratList = Object.values(this.settings.pluginList).map((p) => {
return { display: "BRAT: " + p, info: p };
});
communityPluginList.forEach((si) => bratList.push(si));
const gfs = new GenericFuzzySuggester(this);
gfs.setSuggesterData(bratList);
yield gfs.display((results) => __async(this, null, function* () {
if (results.info)
window.open(`https://github.com/${results.info}`);
}));
})
});
this.addCommand({
id: "BRAT-disablePlugin",
name: "Disable a plugin - toggle it off",
callback: () => __async(this, null, function* () {
const pluginList = this.betaPlugins.getEnabledDisabledPlugins(true).map((manifest) => {
return { display: `${manifest.name} (${manifest.id})`, info: manifest.id };
});
const gfs = new GenericFuzzySuggester(this);
gfs.setSuggesterData(pluginList);
yield gfs.display((results) => __async(this, null, function* () {
yield this.app.plugins.disablePlugin(results.info);
}));
})
});
this.addCommand({
id: "BRAT-enablePlugin",
name: "Enable a plugin - toggle it on",
callback: () => __async(this, null, function* () {
const pluginList = this.betaPlugins.getEnabledDisabledPlugins(false).map((manifest) => {
return { display: `${manifest.name} (${manifest.id})`, info: manifest.id };
});
const gfs = new GenericFuzzySuggester(this);
gfs.setSuggesterData(pluginList);
yield gfs.display((results) => __async(this, null, function* () {
yield this.app.plugins.enablePlugin(results.info);
}));
})
});
this.app.workspace.onLayoutReady(() => {
if (this.settings.updateAtStartup)
setTimeout(() => __async(this, null, function* () {
yield this.betaPlugins.checkForUpdatesAndInstallUpdates(false);
}), 6e4);
});
});
}
onunload() {
console.log("unloading " + this.appName);
}
async loadSettings() {
this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData());
loadSettings() {
return __async(this, null, function* () {
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
});
}
async saveSettings() {
await this.saveData(this.settings);
saveSettings() {
return __async(this, null, function* () {
yield this.saveData(this.settings);
});
}
};

@ -1 +1,10 @@
{"id":"obsidian42-brat","name":"Obsidian42 - BRAT","version":"0.4.4","minAppVersion":"0.9.12","description":"Easily install a beta version of a plugin for testing.","author":"TfTHacker","authorUrl":"https://github.com/TfTHacker/obsidian42-brat","isDesktopOnly":false}
{
"id": "obsidian42-brat",
"name": "Obsidian42 - BRAT",
"version": "0.5.0",
"minAppVersion": "0.9.12",
"description": "Easily install a beta version of a plugin for testing.",
"author": "TfTHacker",
"authorUrl": "https://github.com/TfTHacker/obsidian42-brat",
"isDesktopOnly": false
}

@ -9,8 +9,8 @@
"state": {
"type": "markdown",
"state": {
"file": "03.03 Food & Wine/!!Wine.md",
"mode": "preview"
"file": "00.01 Admin/Test sheet.md",
"mode": "source"
}
}
}
@ -68,7 +68,7 @@
"state": {
"type": "backlink",
"state": {
"file": "03.03 Food & Wine/!!Wine.md",
"file": "00.01 Admin/Test sheet.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
@ -107,15 +107,15 @@
},
"active": "c252d60ecbda6bb3",
"lastOpenFiles": [
"03.03 Food & Wine/!!Wine.md",
"03.03 Food & Wine/!!Coffee.md",
"03.03 Food & Wine/Maison Olivier Chanzy Chassagne-Montrachet 1er Cru.md",
"03.03 Food & Wine/Brazil Assodantas.md",
"03.03 Food & Wine/!!Wine 1.md",
"00.01 Admin/Templates/Template Wine 1.md",
"05.02 Networks/Server VPN.md",
"05.02 Networks/Server Cloud.md",
"00.01 Admin/Test sheet.md",
"01.01 Life Orga/Finances.md"
"01.02 Home/MRCK.md",
"03.03 Food & Wine/Maison Olivier Chanzy Chassagne-Montrachet 1er Cru.md",
"03.03 Food & Wine/!!Wine.md",
"05.02 Networks/Selfhosting.md",
"03.03 Food & Wine/@Side dishes.md",
"03.03 Food & Wine/Vanilla mashed potatoes.md",
"03.03 Food & Wine/@Main dishes.md",
"03.03 Food & Wine/@@Recipes.md",
"03.03 Food & Wine/Beef Noodles with Beans.md"
]
}

@ -27,6 +27,8 @@ color blue
templater true
```
const {templaterFunc} = this.app.plugins.plugins["customjs"].api
templaterFunc.createNewFile(tp, tp.frontmatter.ChildrenType)
tp.file.content.replace(/[\w\W]+?\n+?/,"")

@ -296,7 +296,7 @@ class globalFunc {
TempData = ["Name", "Type", "Vintage", "Country", "Terroir", "Appellation"]
break;
case 'extended':
TempData = ["Name", "Type", "Vintage", "Country", "Region", "Terroir", "Appellation", "Vineyard", "Variety", "Producer"]
TempData = ["Name", "Type", "Vintage", "Country", "Region", "Terroir", "Appellation", "Vineyard", "Variety", "Notes"]
break;
}
@ -404,7 +404,7 @@ class globalFunc {
TempData = [p.file.link, this.GetPoint(p, DataT, "type"), this.GetPoint(p, DataT, "vintage"), this.toEmoji(this.GetPoint(p, DataT, "country")), this.GetPoint(p, DataT, "subregion"), this.GetPoint(p, DataT, "appellation")]
break;
case 'extended':
TempData = [p.file.link, this.GetPoint(p, DataT, "type"), this.GetPoint(p, DataT, "vintage"), this.toEmoji(this.GetPoint(p, DataT, "country")), this.GetPoint(p, DataT, "region"), this.GetPoint(p, DataT, "subregion"), this.GetPoint(p, DataT, "appellation"), this.GetPoint(p, DataT, "vineyard"), this.GetPoint(p, DataT, "varietal"), this.GetPoint(p, DataT, "producer")]
TempData = [p.file.link, this.GetPoint(p, DataT, "type"), this.GetPoint(p, DataT, "vintage"), this.toEmoji(this.GetPoint(p, DataT, "country")), this.GetPoint(p, DataT, "region"), this.GetPoint(p, DataT, "subregion"), this.GetPoint(p, DataT, "appellation"), this.GetPoint(p, DataT, "vineyard"), this.GetPoint(p, DataT, "varietal"), this.GetPoint(p, "main", "tag")]
break;
}
@ -515,6 +515,9 @@ class globalFunc {
case 'Brazil':
tempresult = "🇧🇷"
break;
case 'Colombia':
tempresult = "🇨🇴"
break;
case 'Pub':
tempresult = "🍺"
break;

@ -37,6 +37,8 @@ id CreateNote
```button
name Save
type command
@ -120,6 +122,16 @@ dv.view("00.01 Admin/dv-views/query_coffee", {type: "Arabica"})
#### By Geography
[[#^Top|TOP]]
##### Colombia
 
```dataviewjs
dv.view("00.01 Admin/dv-views/query_coffee", {country: "Colombia"})
```
 
##### Brazil
 

@ -40,6 +40,8 @@ id CreateNote
```button
name Save
type command

@ -57,7 +57,7 @@ style: number
 
```dataviewjs
dv.view("00.01 Admin/dv-views/query_recipe", {course: "Side Dish", category: "Vegetable"})
dv.view("00.01 Admin/dv-views/query_recipe", {course: "Side Dish", category: ["Vegetable", "Potato"]})
```
 

@ -0,0 +1,77 @@
---
Tag: ["Nutty", "Caramel", "Apricot", "Sugar Cane"]
Date: 2021-10-31
DocType: "Coffee"
Hierarchy: "NonRoot"
TimeStamp:
location:
CollapseMetaTable: Yes
Source:
cssclass: recipeTable
Coffee:
Brand: Jaramillo
Type: Arabica
Roast: Medium
Strength: 3
Country: Colombia
---
parent:: [[!!Coffee|Coffee]]
---
 
```button
name Save
type command
action Save current file
id Save
```
^button-JaramilloEspecialesNSave
# Jaramillo Especiales
 
```ad-abstract
title: Summary
collapse: open
Description
```
 
```toc
style: number
```
 
---
 
### Summary
 
| |
|-|-
| **Coffee type**: | `$=dv.current().Coffee.Type`
| **Strength**: | `$=dv.current().Coffee.Strength`
| **Country**: | `$=dv.current().Coffee.Country`
| **Roast**: | `$=dv.current().Coffee.Roast`
| **Brand**: | `$=dv.current().Coffee.Brand`
 
---
 
### Notes
 

@ -0,0 +1,135 @@
---
ServingSize: 4
cssclass: recipeTable
Tag: []
Date: 2021-09-21
DocType: "Recipe"
Hierarchy: "NonRoot"
location: [51.514678599999996, -0.18378583926867909]
CollapseMetaTable: Yes
Meta:
IsFavourite: False
Rating: 4
Recipe:
Courses: "Side Dish"
Categories: Potato
Collections: "French"
Source: https://www.sel-deguerande.fr/puree-vanille-lignac/
PreparationTime:
CookingTime: 45
OServingSize: 4
Ingredients:
- 1 kg pommes de terre
- 1 gousse vanille
- 20 cl crème liquide
- 90 gramme(s) beurre doux
- 20 cl lait
---
Parent:: [[@@Recipes]], [[Le Bar des Prés]]
---
 
```button
name Edit Recipe parameters
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-VanillamashedpotatoesEdit
```button
name Save
type command
action Save current file
id Save
```
^button-VanillamashedpotatoesNSave
 
# Vanilla mashed potatoes
 
```toc
style: number
```
 
---
 
### Practical Informations
| |
|-|-
**Courses**: | `$=dv.current().Recipe.Courses`
**Categories**: | `$=dv.current().Recipe.Categories`
**Collections**: | `$=dv.current().Recipe.Collections`
**Serving size**: | `$=dv.current().ServingSize`
**Cooking time**: | `$=dv.current().Recipe.CookingTime` min
 
---
 
### Ingredients
 
```dataviewjs
dv.view("00.01 Admin/dv-views/query_ingredient", {ingredients: dv.current().Ingredients, originalportioncount: dv.current().Recipe.OServingSize})
```
 
---
 
### Instructions
1. Lavez et épluchez les pommes de terre (préférez des grosses pommes de terre pour purée pour cette recette).
 
2. Découpez les pommes de terre en dés et plongez-les dans une casserole deau bouillante salée.
 
3. Laissez cuire pendant environ 20 à 30 mn.
 
4. Versez la crème fraîche liquide avec la gousse de vanille dans une petite casserole : faites infuser pendant environ 2/3 minutes.
 
5. Égouttez les pommes de terre puis écrasez-les à laide dun presse-purée.
 
6. Découpez le beurre doux en petits dés : incorporez-le à votre purée encore chaude ainsi que la crème à la vanille.
 
7. Si votre purée nest pas assez « lisse » à votre goût, ajoutez un peu de lait chaud.
 
8. Servez la purée dans chaque assiette : parsemez de fleur de sel de Guérande et régalez-vous !
 
 
Loading…
Cancel
Save