diff --git a/README.md b/README.md index bb0348e..4585fa0 100644 --- a/README.md +++ b/README.md @@ -1,96 +1,19 @@ -# Obsidian Sample Plugin +--- +title: obsidian-vaultexporter-plugin +ctime: 2024-04-22 20:10 +aliases: + - +tags: + - +NID: +NIW: +drafts: true +publish: false +PrevNote: "[[obsidian-sample-plugin]]" +NextNote: "[[vexporter readMe]]" +LocalGitProject: D:\iLanix\isync\Obsidian\.obsidian\plugins\obsidian-vaultexporter-plugin +--- -This is a sample plugin for Obsidian (https://obsidian.md). +![[Pasted image 20240422213449.png]] -This project uses Typescript to provide type checking and documentation. -The repo depends on the latest plugin API (obsidian.d.ts) in Typescript Definition format, which contains TSDoc comments describing what it does. - -**Note:** The Obsidian API is still in early alpha and is subject to change at any time! - -This sample plugin demonstrates some of the basic functionality the plugin API can do. -- Adds a ribbon icon, which shows a Notice when clicked. -- Adds a command "Open Sample Modal" which opens a Modal. -- Adds a plugin setting tab to the settings page. -- Registers a global click event and output 'click' to the console. -- Registers a global interval which logs 'setInterval' to the console. - -## First time developing plugins? - -Quick starting guide for new plugin devs: - -- Check if [someone already developed a plugin for what you want](https://obsidian.md/plugins)! There might be an existing plugin similar enough that you can partner up with. -- Make a copy of this repo as a template with the "Use this template" button (login to GitHub if you don't see it). -- Clone your repo to a local development folder. For convenience, you can place this folder in your `.obsidian/plugins/your-plugin-name` folder. -- Install NodeJS, then run `npm i` in the command line under your repo folder. -- Run `npm run dev` to compile your plugin from `main.ts` to `main.js`. -- Make changes to `main.ts` (or create new `.ts` files). Those changes should be automatically compiled into `main.js`. -- Reload Obsidian to load the new version of your plugin. -- Enable plugin in settings window. -- For updates to the Obsidian API run `npm update` in the command line under your repo folder. - -## Releasing new releases - -- Update your `manifest.json` with your new version number, such as `1.0.1`, and the minimum Obsidian version required for your latest release. -- Update your `versions.json` file with `"new-plugin-version": "minimum-obsidian-version"` so older versions of Obsidian can download an older version of your plugin that's compatible. -- Create new GitHub release using your new version number as the "Tag version". Use the exact version number, don't include a prefix `v`. See here for an example: https://github.com/obsidianmd/obsidian-sample-plugin/releases -- Upload the files `manifest.json`, `main.js`, `styles.css` as binary attachments. Note: The manifest.json file must be in two places, first the root path of your repository and also in the release. -- Publish the release. - -> You can simplify the version bump process by running `npm version patch`, `npm version minor` or `npm version major` after updating `minAppVersion` manually in `manifest.json`. -> The command will bump version in `manifest.json` and `package.json`, and add the entry for the new version to `versions.json` - -## Adding your plugin to the community plugin list - -- Check https://github.com/obsidianmd/obsidian-releases/blob/master/plugin-review.md -- Publish an initial version. -- Make sure you have a `README.md` file in the root of your repo. -- Make a pull request at https://github.com/obsidianmd/obsidian-releases to add your plugin. - -## How to use - -- Clone this repo. -- Make sure your NodeJS is at least v16 (`node --version`). -- `npm i` or `yarn` to install dependencies. -- `npm run dev` to start compilation in watch mode. - -## Manually installing the plugin - -- Copy over `main.js`, `styles.css`, `manifest.json` to your vault `VaultFolder/.obsidian/plugins/your-plugin-id/`. - -## Improve code quality with eslint (optional) -- [ESLint](https://eslint.org/) is a tool that analyzes your code to quickly find problems. You can run ESLint against your plugin to find common bugs and ways to improve your code. -- To use eslint with this project, make sure to install eslint from terminal: - - `npm install -g eslint` -- To use eslint to analyze this project use this command: - - `eslint main.ts` - - eslint will then create a report with suggestions for code improvement by file and line number. -- If your source code is in a folder, such as `src`, you can use eslint with this command to analyze all files in that folder: - - `eslint .\src\` - -## Funding URL - -You can include funding URLs where people who use your plugin can financially support it. - -The simple way is to set the `fundingUrl` field to your link in your `manifest.json` file: - -```json -{ - "fundingUrl": "https://buymeacoffee.com" -} -``` - -If you have multiple URLs, you can also do: - -```json -{ - "fundingUrl": { - "Buy Me a Coffee": "https://buymeacoffee.com", - "GitHub Sponsor": "https://github.com/sponsors", - "Patreon": "https://www.patreon.com/" - } -} -``` - -## API Documentation - -See https://github.com/obsidianmd/obsidian-api +![[Pasted image 20240422214245.png]] \ No newline at end of file diff --git a/assets/Pasted image 20240422213449.png b/assets/Pasted image 20240422213449.png new file mode 100644 index 0000000..da79fd2 Binary files /dev/null and b/assets/Pasted image 20240422213449.png differ diff --git a/assets/Pasted image 20240422214245.png b/assets/Pasted image 20240422214245.png new file mode 100644 index 0000000..7a95883 Binary files /dev/null and b/assets/Pasted image 20240422214245.png differ diff --git a/data.json b/data.json index 30b7063..2a576c4 100644 --- a/data.json +++ b/data.json @@ -1,3 +1,5 @@ { + "nameLocalGitProject": "LocalGitProject", + "assetsLocalGitProject": "assets", "mySetting": "D:/iLanix/isync/test" } \ No newline at end of file diff --git a/main.js b/main.js index dcf6aa1..162ab33 100644 --- a/main.js +++ b/main.js @@ -30,8 +30,48 @@ module.exports = __toCommonJS(main_exports); var import_obsidian = require("obsidian"); var fs = require("fs"); var DEFAULT_SETTINGS = { - mySetting: "default" + nameLocalGitProject: "LocalGitProject", + assetsLocalGitProject: "assets" }; +var cmd_export_readme = (plugin) => ({ + id: "export_readme", + name: "Export readMe", + callback: async () => { + let nc = await plugin.app.plugins.getPlugin("note-chain"); + let tfile = nc.chain.current_note; + await plugin.export_readme( + tfile, + null, + true, + plugin.settings.assetsLocalGitProject + ); + } +}); +var cmd_set_git_project = (plugin) => ({ + id: "set_git_project", + name: "Set Git Project", + callback: async () => { + let nc = await plugin.app.plugins.getPlugin("note-chain"); + let dir = await nc.chain.tp_prompt("\u8F93\u5165\u6587\u4EF6\u5939"); + if (!dir || !fs.existsSync(dir)) { + return; + } + await nc.editor.set_frontmatter( + nc.chain.current_note, + plugin.settings.nameLocalGitProject, + dir + ); + } +}); +var commandBuilders = [ + cmd_export_readme, + cmd_set_git_project +]; +function addCommands(plugin) { + commandBuilders.forEach((c) => { + plugin.addCommand(c(plugin)); + }); +} var VaultExpoterPlugin = class extends import_obsidian.Plugin { async onload() { await this.loadSettings(); @@ -39,6 +79,7 @@ var VaultExpoterPlugin = class extends import_obsidian.Plugin { this.fs = fs; this.root = this.app.vault.adapter.basePath; this.addSettingTab(new VExporterSettingTab(this.app, this)); + addCommands(this); } onunload() { } @@ -90,7 +131,7 @@ var VaultExpoterPlugin = class extends import_obsidian.Plugin { tfile = nc.chain.current_note; } if (!dst) { - dst = "LocalGitProject"; + dst = this.settings.nameLocalGitProject; } if (!dst.contains("/")) { dst = nc.editor.get_frontmatter(tfile, dst); @@ -133,10 +174,14 @@ var VExporterSettingTab = class extends import_obsidian.PluginSettingTab { display() { const { containerEl } = this; containerEl.empty(); - new import_obsidian.Setting(containerEl).setName("Setting #1").setDesc("It's a secret").addTextArea((text) => text.setPlaceholder("Enter your secret").setValue(this.plugin.settings.mySetting).onChange(async (value) => { - this.plugin.settings.mySetting = value; + new import_obsidian.Setting(containerEl).setName("LocalGitProject").setDesc("Metadata Name for Dir of Git Porject").addText((text) => text.setPlaceholder("Enter your field").setValue(this.plugin.settings.nameLocalGitProject).onChange(async (value) => { + this.plugin.settings.nameLocalGitProject = value; + await this.plugin.saveSettings(); + })); + new import_obsidian.Setting(containerEl).setName("Folder For Assets").setDesc("Dir Name for Assets").addText((text) => text.setValue(this.plugin.settings.assetsLocalGitProject).onChange(async (value) => { + this.plugin.settings.assetsLocalGitProject = value; await this.plugin.saveSettings(); })); } }; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0ICogYXMgTW9kdWxlIGZyb20gJ21vZHVsZSc7XHJcbmltcG9ydCB7IEFwcCwgRWRpdG9yLCBNYXJrZG93blZpZXcsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZywgVEZpbGUgfSBmcm9tICdvYnNpZGlhbic7XHJcblxyXG4vLyBSZW1lbWJlciB0byByZW5hbWUgdGhlc2UgY2xhc3NlcyBhbmQgaW50ZXJmYWNlcyFcclxuXHJcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcclxuXHJcbmludGVyZmFjZSBWRXhwb3J0ZXJTZXR0aW5ncyB7XHJcblx0bXlTZXR0aW5nOiBzdHJpbmc7XHJcbn1cclxuXHJcbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IFZFeHBvcnRlclNldHRpbmdzID0ge1xyXG5cdG15U2V0dGluZzogJ2RlZmF1bHQnXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZhdWx0RXhwb3RlclBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XHJcblx0c2V0dGluZ3M6IFZFeHBvcnRlclNldHRpbmdzO1xyXG5cdHJvb3QgOiBzdHJpbmc7XHJcblxyXG5cdGFzeW5jIG9ubG9hZCgpIHtcclxuXHRcdGF3YWl0IHRoaXMubG9hZFNldHRpbmdzKCk7XHJcblx0XHR0aGlzLmFwcC52dCA9IHRoaXM7XHJcblx0XHR0aGlzLmZzID0gZnM7XHJcblx0XHR0aGlzLnJvb3QgPSB0aGlzLmFwcC52YXVsdC5hZGFwdGVyLmJhc2VQYXRoO1xyXG5cdFx0Ly8gVGhpcyBhZGRzIGEgc2V0dGluZ3MgdGFiIHNvIHRoZSB1c2VyIGNhbiBjb25maWd1cmUgdmFyaW91cyBhc3BlY3RzIG9mIHRoZSBwbHVnaW5cclxuXHRcdHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgVkV4cG9ydGVyU2V0dGluZ1RhYih0aGlzLmFwcCwgdGhpcykpO1xyXG5cdH1cclxuXHJcblx0b251bmxvYWQoKSB7XHJcblxyXG5cdH1cclxuXHJcblx0YXN5bmMgbG9hZFNldHRpbmdzKCkge1xyXG5cdFx0dGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfU0VUVElOR1MsIGF3YWl0IHRoaXMubG9hZERhdGEoKSk7XHJcblx0fVxyXG5cclxuXHRhc3luYyBzYXZlU2V0dGluZ3MoKSB7XHJcblx0XHRhd2FpdCB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0KiBcdTk2NDRcdTRFRjYgc3JjIFx1NTIzMCBkc3RcdUZGMENcdTRFMERcdTU3MjggdmF1bHQgXHU0RTJEXHVGRjBDXHU5NzAwXHU4OTgxXHU3RUREXHU1QkY5XHU4REVGXHU1Rjg0XHJcblx0KiBvdmVyd3JpdGVcdUZGMENcdTU5MERcdTc2RDZcdUZGMUJtdGltZVx1RkYwQ1x1NjVCMFx1NjU4N1x1NEVGNlx1RkYxQlxyXG5cdCovXHJcblx0Y29weV9maWxlX2J5X3BhdGgoc3JjOnN0cmluZywgZHN0OnN0cmluZyxtb2RlPSdvdmVyd3JpdGU+bXRpbWU+cGFzcycpIHtcclxuXHRcdG1vZGUgPSBtb2RlLnNwbGl0KCc+JylbMF1cclxuXHRcdGlmKCFmcy5leGlzdHNTeW5jKHNyYykpe1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRpZihmcy5leGlzdHNTeW5jKGRzdCkpe1xyXG5cdFx0XHRpZihtb2RlPT09J292ZXJ3cml0ZScpe1xyXG5cdFx0XHRcdGZzLnVubGlua1N5bmMoZHN0KTtcclxuXHRcdFx0XHRmcy5jb3B5RmlsZVN5bmMoc3JjLGRzdCk7XHJcblx0XHRcdH1lbHNlIGlmKG1vZGU9PT0nbXRpbWUnKXtcclxuXHRcdFx0XHQvLyBkc3QgXHU2NkY0XHU2NUIwXHU2NUY2XHU5NUY0XHU1QzBGXHU0RThFIHNyY1xyXG5cdFx0XHRcdGlmKGZzLnN0YXRTeW5jKGRzdCkubXRpbWVNczxmcy5zdGF0U3luYyhzcmMpLm10aW1lTXMpe1xyXG5cdFx0XHRcdFx0ZnMudW5saW5rU3luYyhkc3QpO1xyXG5cdFx0XHRcdFx0ZnMuY29weUZpbGVTeW5jKHNyYyxkc3QpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fWVsc2V7XHJcblx0XHRcdGZzLmNvcHlGaWxlU3luYyhzcmMsZHN0KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGFic3BhdGgodGZpbGU6VEZpbGUpe1xyXG5cdFx0aWYodGZpbGUpe1xyXG5cdFx0XHRyZXR1cm4gdGhpcy5yb290KycvJyt0ZmlsZS5wYXRoO1xyXG5cdFx0fWVsc2V7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0Y29weV90ZmlsZSh0ZmlsZTpURmlsZSwgZHN0OnN0cmluZykge1xyXG5cdFx0aWYodGZpbGUpe1xyXG5cdFx0XHRsZXQgc3JjID0gdGhpcy5hYnNwYXRoKHRmaWxlKTtcclxuXHRcdFx0c3JjICYmIHRoaXMuY29weV9maWxlX2J5X3BhdGgoc3JjLGRzdCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdFxyXG5cdGFzeW5jIGV4cG9ydF9yZWFkbWUodGZpbGU6VEZpbGUsZHN0OnN0cmluZ3xudWxsLGFzX3JlYWRtZT10cnVlLGFzc2V0cz0nYXNzZXRzJyl7XHJcblx0XHRcclxuXHRcdGxldCBuYyA9IHRoaXMuYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKCdub3RlLWNoYWluJyk7XHJcblx0XHRpZighdGZpbGUpe3RmaWxlID0gbmMuY2hhaW4uY3VycmVudF9ub3RlO31cclxuXHRcdFxyXG5cdFx0aWYoIWRzdCl7XHJcblx0XHRcdGRzdCA9ICdMb2NhbEdpdFByb2plY3QnO1xyXG5cdFx0fVxyXG5cdFx0aWYoIWRzdC5jb250YWlucygnLycpKXtcclxuXHRcdFx0ZHN0ID0gbmMuZWRpdG9yLmdldF9mcm9udG1hdHRlcih0ZmlsZSxkc3QpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmKCFkc3Qpe1xyXG5cdFx0XHRkc3QgPSBhd2FpdCBuYy5jaGFpbi50cF9wcm9tcHQoJ1BhdGggb2YgTG9jYWxHaXRQcm9qZWN0Jyk7XHJcblx0XHRcdGlmKCFkc3Qpe3JldHVybjt9XHJcblx0XHR9XHJcblx0XHRkc3QgPSBkc3QucmVwbGFjZSgvXFxcXC9nLCcvJyk7XHJcblx0XHRpZighZnMuZXhpc3RzU3luYyhkc3QpKXtcclxuXHRcdFx0Y29uc29sZS5sb2coJ05vIERpcjonLGRzdCk7XHJcblx0XHR9XHJcblx0XHRjb25zb2xlLmxvZyhkc3QpO1xyXG5cdFx0bGV0IG9saW5rcyA9IG5jLmNoYWluLmdldF9vdXRsaW5rcyh0ZmlsZSk7XHJcblx0XHRcclxuXHRcdGxldCB0bXA7XHJcblx0XHRpZihhc19yZWFkbWUpe1xyXG5cdFx0XHR0bXAgPSBkc3QrJy8nKydyZWFkTWUubWQnO1xyXG5cdFx0fWVsc2V7XHJcblx0XHRcdHRtcCA9IGRzdCsnLycrdGZpbGUuYmFzZW5hbWUrJy5tZCc7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jb3B5X3RmaWxlKHRmaWxlLHRtcCk7XHJcblxyXG5cdFx0bGV0IGFkaXIgPSBkc3QrJy8nK2Fzc2V0cztcclxuXHRcdGlmKCFmcy5leGlzdHNTeW5jKGFkaXIpKXtcclxuXHRcdFx0ZnMubWtkaXJTeW5jKGFkaXIpO1xyXG5cdFx0fVxyXG5cdFx0Zm9yKGxldCBmIG9mIG9saW5rcyl7XHJcblx0XHRcdGlmKCEoZi5leHRlbnNpb249PT0nbWQnKSl7XHJcblx0XHRcdFx0dGhpcy5jb3B5X3RmaWxlKGYsYWRpcisnLycrZi5iYXNlbmFtZSsnLicrZi5leHRlbnNpb24pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5jbGFzcyBWRXhwb3J0ZXJTZXR0aW5nVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XHJcblx0cGx1Z2luOiBWYXVsdEV4cG90ZXJQbHVnaW47XHJcblxyXG5cdGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IFZhdWx0RXhwb3RlclBsdWdpbikge1xyXG5cdFx0c3VwZXIoYXBwLCBwbHVnaW4pO1xyXG5cdFx0dGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcblx0fVxyXG5cclxuXHRkaXNwbGF5KCk6IHZvaWQge1xyXG5cdFx0Y29uc3Qge2NvbnRhaW5lckVsfSA9IHRoaXM7XHJcblxyXG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcclxuXHJcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuXHRcdFx0LnNldE5hbWUoJ1NldHRpbmcgIzEnKVxyXG5cdFx0XHQuc2V0RGVzYygnSXRcXCdzIGEgc2VjcmV0JylcclxuXHRcdFx0LmFkZFRleHRBcmVhKHRleHQgPT4gdGV4dFxyXG5cdFx0XHRcdC5zZXRQbGFjZWhvbGRlcignRW50ZXIgeW91ciBzZWNyZXQnKVxyXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5teVNldHRpbmcpXHJcblx0XHRcdFx0Lm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5wbHVnaW4uc2V0dGluZ3MubXlTZXR0aW5nID0gdmFsdWU7XHJcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuXHRcdFx0XHR9KSk7XHJcblx0fVxyXG59XHJcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQSxzQkFBbUc7QUFJbkcsSUFBTSxLQUFLLFFBQVEsSUFBSTtBQU12QixJQUFNLG1CQUFzQztBQUFBLEVBQzNDLFdBQVc7QUFDWjtBQUVBLElBQXFCLHFCQUFyQixjQUFnRCx1QkFBTztBQUFBLEVBSXRELE1BQU0sU0FBUztBQUNkLFVBQU0sS0FBSyxhQUFhO0FBQ3hCLFNBQUssSUFBSSxLQUFLO0FBQ2QsU0FBSyxLQUFLO0FBQ1YsU0FBSyxPQUFPLEtBQUssSUFBSSxNQUFNLFFBQVE7QUFFbkMsU0FBSyxjQUFjLElBQUksb0JBQW9CLEtBQUssS0FBSyxJQUFJLENBQUM7QUFBQSxFQUMzRDtBQUFBLEVB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 +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0ICogYXMgTW9kdWxlIGZyb20gJ21vZHVsZSc7XHJcbmltcG9ydCB7IEFwcCwgRWRpdG9yLCBNYXJrZG93blZpZXcsIE1vZGFsLCBOb3RpY2UsIFBsdWdpbiwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZywgVEZpbGUgfSBmcm9tICdvYnNpZGlhbic7XHJcblxyXG4vLyBSZW1lbWJlciB0byByZW5hbWUgdGhlc2UgY2xhc3NlcyBhbmQgaW50ZXJmYWNlcyFcclxuXHJcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcclxuXHJcbmludGVyZmFjZSBWRXhwb3J0ZXJTZXR0aW5ncyB7XHJcblx0bmFtZUxvY2FsR2l0UHJvamVjdDogc3RyaW5nO1xyXG5cdGFzc2V0c0xvY2FsR2l0UHJvamVjdDpzdHJpbmc7XHJcbn1cclxuXHJcbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IFZFeHBvcnRlclNldHRpbmdzID0ge1xyXG5cdG5hbWVMb2NhbEdpdFByb2plY3Q6ICdMb2NhbEdpdFByb2plY3QnLFxyXG5cdGFzc2V0c0xvY2FsR2l0UHJvamVjdDogJ2Fzc2V0cydcclxufVxyXG5cclxuY29uc3QgY21kX2V4cG9ydF9yZWFkbWUgPSAocGx1Z2luOlZhdWx0RXhwb3RlclBsdWdpbikgPT4gKHtcclxuXHRpZDogJ2V4cG9ydF9yZWFkbWUnLFxyXG5cdG5hbWU6ICdFeHBvcnQgcmVhZE1lJyxcclxuXHRjYWxsYmFjazogYXN5bmMgKCkgPT4ge1xyXG5cdFx0bGV0IG5jID0gYXdhaXQgcGx1Z2luLmFwcC5wbHVnaW5zLmdldFBsdWdpbignbm90ZS1jaGFpbicpO1xyXG5cdFx0bGV0IHRmaWxlID0gbmMuY2hhaW4uY3VycmVudF9ub3RlO1xyXG5cdFx0YXdhaXQgcGx1Z2luLmV4cG9ydF9yZWFkbWUoXHJcblx0XHRcdHRmaWxlLG51bGwsdHJ1ZSxwbHVnaW4uc2V0dGluZ3MuYXNzZXRzTG9jYWxHaXRQcm9qZWN0XHJcblx0XHQpO1xyXG5cdH1cclxufSk7XHJcblxyXG5jb25zdCBjbWRfc2V0X2dpdF9wcm9qZWN0ID0gKHBsdWdpbjpWYXVsdEV4cG90ZXJQbHVnaW4pID0+ICh7XHJcblx0aWQ6ICdzZXRfZ2l0X3Byb2plY3QnLFxyXG5cdG5hbWU6ICdTZXQgR2l0IFByb2plY3QnLFxyXG5cdGNhbGxiYWNrOiBhc3luYyAoKSA9PiB7XHJcblx0XHRsZXQgbmMgPSBhd2FpdCBwbHVnaW4uYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKCdub3RlLWNoYWluJyk7XHJcblx0XHRsZXQgZGlyID0gYXdhaXQgbmMuY2hhaW4udHBfcHJvbXB0KCdcdThGOTNcdTUxNjVcdTY1ODdcdTRFRjZcdTU5MzknKTtcclxuXHRcdGlmKCFkaXIgfHwgIWZzLmV4aXN0c1N5bmMoZGlyKSl7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGF3YWl0IG5jLmVkaXRvci5zZXRfZnJvbnRtYXR0ZXIoXHJcblx0XHRcdG5jLmNoYWluLmN1cnJlbnRfbm90ZSxcclxuXHRcdFx0cGx1Z2luLnNldHRpbmdzLm5hbWVMb2NhbEdpdFByb2plY3QsXHJcblx0XHRcdGRpclxyXG5cdFx0KVxyXG5cdH1cclxufSk7XHJcblxyXG5jb25zdCBjb21tYW5kQnVpbGRlcnMgPSBbXHJcblx0Y21kX2V4cG9ydF9yZWFkbWUsXHJcblx0Y21kX3NldF9naXRfcHJvamVjdFxyXG5dO1xyXG5cclxuZnVuY3Rpb24gYWRkQ29tbWFuZHMocGx1Z2luOlZhdWx0RXhwb3RlclBsdWdpbikge1xyXG4gICAgY29tbWFuZEJ1aWxkZXJzLmZvckVhY2goKGMpID0+IHtcclxuICAgICAgICBwbHVnaW4uYWRkQ29tbWFuZChjKHBsdWdpbikpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZhdWx0RXhwb3RlclBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XHJcblx0c2V0dGluZ3M6IFZFeHBvcnRlclNldHRpbmdzO1xyXG5cdHJvb3QgOiBzdHJpbmc7XHJcblx0XHJcblx0YXN5bmMgb25sb2FkKCkge1xyXG5cdFx0YXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcclxuXHRcdHRoaXMuYXBwLnZ0ID0gdGhpcztcclxuXHRcdHRoaXMuZnMgPSBmcztcclxuXHRcdHRoaXMucm9vdCA9IHRoaXMuYXBwLnZhdWx0LmFkYXB0ZXIuYmFzZVBhdGg7XHJcblx0XHQvLyBUaGlzIGFkZHMgYSBzZXR0aW5ncyB0YWIgc28gdGhlIHVzZXIgY2FuIGNvbmZpZ3VyZSB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIHBsdWdpblxyXG5cdFx0dGhpcy5hZGRTZXR0aW5nVGFiKG5ldyBWRXhwb3J0ZXJTZXR0aW5nVGFiKHRoaXMuYXBwLCB0aGlzKSk7XHJcblxyXG5cdFx0YWRkQ29tbWFuZHModGhpcyk7XHJcblx0fVxyXG5cclxuXHRvbnVubG9hZCgpIHtcclxuXHJcblx0fVxyXG5cclxuXHRhc3luYyBsb2FkU2V0dGluZ3MoKSB7XHJcblx0XHR0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcclxuXHRcdGF3YWl0IHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQqIFx1OTY0NFx1NEVGNiBzcmMgXHU1MjMwIGRzdFx1RkYwQ1x1NEUwRFx1NTcyOCB2YXVsdCBcdTRFMkRcdUZGMENcdTk3MDBcdTg5ODFcdTdFRERcdTVCRjlcdThERUZcdTVGODRcclxuXHQqIG92ZXJ3cml0ZVx1RkYwQ1x1NTkwRFx1NzZENlx1RkYxQm10aW1lXHVGRjBDXHU2NUIwXHU2NTg3XHU0RUY2XHVGRjFCXHJcblx0Ki9cclxuXHRjb3B5X2ZpbGVfYnlfcGF0aChzcmM6c3RyaW5nLCBkc3Q6c3RyaW5nLG1vZGU9J292ZXJ3cml0ZT5tdGltZT5wYXNzJykge1xyXG5cdFx0bW9kZSA9IG1vZGUuc3BsaXQoJz4nKVswXVxyXG5cdFx0aWYoIWZzLmV4aXN0c1N5bmMoc3JjKSl7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGlmKGZzLmV4aXN0c1N5bmMoZHN0KSl7XHJcblx0XHRcdGlmKG1vZGU9PT0nb3ZlcndyaXRlJyl7XHJcblx0XHRcdFx0ZnMudW5saW5rU3luYyhkc3QpO1xyXG5cdFx0XHRcdGZzLmNvcHlGaWxlU3luYyhzcmMsZHN0KTtcclxuXHRcdFx0fWVsc2UgaWYobW9kZT09PSdtdGltZScpe1xyXG5cdFx0XHRcdC8vIGRzdCBcdTY2RjRcdTY1QjBcdTY1RjZcdTk1RjRcdTVDMEZcdTRFOEUgc3JjXHJcblx0XHRcdFx0aWYoZnMuc3RhdFN5bmMoZHN0KS5tdGltZU1zPGZzLnN0YXRTeW5jKHNyYykubXRpbWVNcyl7XHJcblx0XHRcdFx0XHRmcy51bmxpbmtTeW5jKGRzdCk7XHJcblx0XHRcdFx0XHRmcy5jb3B5RmlsZVN5bmMoc3JjLGRzdCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9ZWxzZXtcclxuXHRcdFx0ZnMuY29weUZpbGVTeW5jKHNyYyxkc3QpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YWJzcGF0aCh0ZmlsZTpURmlsZSl7XHJcblx0XHRpZih0ZmlsZSl7XHJcblx0XHRcdHJldHVybiB0aGlzLnJvb3QrJy8nK3RmaWxlLnBhdGg7XHJcblx0XHR9ZWxzZXtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRjb3B5X3RmaWxlKHRmaWxlOlRGaWxlLCBkc3Q6c3RyaW5nKSB7XHJcblx0XHRpZih0ZmlsZSl7XHJcblx0XHRcdGxldCBzcmMgPSB0aGlzLmFic3BhdGgodGZpbGUpO1xyXG5cdFx0XHRzcmMgJiYgdGhpcy5jb3B5X2ZpbGVfYnlfcGF0aChzcmMsZHN0KTtcclxuXHRcdH1cclxuXHR9XHJcblx0XHJcblx0YXN5bmMgZXhwb3J0X3JlYWRtZSh0ZmlsZTpURmlsZSxkc3Q6c3RyaW5nfG51bGwsYXNfcmVhZG1lPXRydWUsYXNzZXRzPSdhc3NldHMnKXtcclxuXHRcdFxyXG5cdFx0bGV0IG5jID0gdGhpcy5hcHAucGx1Z2lucy5nZXRQbHVnaW4oJ25vdGUtY2hhaW4nKTtcclxuXHRcdGlmKCF0ZmlsZSl7dGZpbGUgPSBuYy5jaGFpbi5jdXJyZW50X25vdGU7fVxyXG5cdFx0XHJcblx0XHRpZighZHN0KXtcclxuXHRcdFx0ZHN0ID0gdGhpcy5zZXR0aW5ncy5uYW1lTG9jYWxHaXRQcm9qZWN0O1xyXG5cdFx0fVxyXG5cdFx0aWYoIWRzdC5jb250YWlucygnLycpKXtcclxuXHRcdFx0ZHN0ID0gbmMuZWRpdG9yLmdldF9mcm9udG1hdHRlcih0ZmlsZSxkc3QpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmKCFkc3Qpe1xyXG5cdFx0XHRkc3QgPSBhd2FpdCBuYy5jaGFpbi50cF9wcm9tcHQoJ1BhdGggb2YgTG9jYWxHaXRQcm9qZWN0Jyk7XHJcblx0XHRcdGlmKCFkc3Qpe3JldHVybjt9XHJcblx0XHR9XHJcblx0XHRkc3QgPSBkc3QucmVwbGFjZSgvXFxcXC9nLCcvJyk7XHJcblx0XHRpZighZnMuZXhpc3RzU3luYyhkc3QpKXtcclxuXHRcdFx0Y29uc29sZS5sb2coJ05vIERpcjonLGRzdCk7XHJcblx0XHR9XHJcblx0XHRjb25zb2xlLmxvZyhkc3QpO1xyXG5cdFx0bGV0IG9saW5rcyA9IG5jLmNoYWluLmdldF9vdXRsaW5rcyh0ZmlsZSk7XHJcblx0XHRcclxuXHRcdGxldCB0bXA7XHJcblx0XHRpZihhc19yZWFkbWUpe1xyXG5cdFx0XHR0bXAgPSBkc3QrJy8nKydyZWFkTWUubWQnO1xyXG5cdFx0fWVsc2V7XHJcblx0XHRcdHRtcCA9IGRzdCsnLycrdGZpbGUuYmFzZW5hbWUrJy5tZCc7XHJcblx0XHR9XHJcblxyXG5cdFx0dGhpcy5jb3B5X3RmaWxlKHRmaWxlLHRtcCk7XHJcblxyXG5cdFx0bGV0IGFkaXIgPSBkc3QrJy8nK2Fzc2V0cztcclxuXHRcdGlmKCFmcy5leGlzdHNTeW5jKGFkaXIpKXtcclxuXHRcdFx0ZnMubWtkaXJTeW5jKGFkaXIpO1xyXG5cdFx0fVxyXG5cdFx0Zm9yKGxldCBmIG9mIG9saW5rcyl7XHJcblx0XHRcdGlmKCEoZi5leHRlbnNpb249PT0nbWQnKSl7XHJcblx0XHRcdFx0dGhpcy5jb3B5X3RmaWxlKGYsYWRpcisnLycrZi5iYXNlbmFtZSsnLicrZi5leHRlbnNpb24pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG5jbGFzcyBWRXhwb3J0ZXJTZXR0aW5nVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XHJcblx0cGx1Z2luOiBWYXVsdEV4cG90ZXJQbHVnaW47XHJcblxyXG5cdGNvbnN0cnVjdG9yKGFwcDogQXBwLCBwbHVnaW46IFZhdWx0RXhwb3RlclBsdWdpbikge1xyXG5cdFx0c3VwZXIoYXBwLCBwbHVnaW4pO1xyXG5cdFx0dGhpcy5wbHVnaW4gPSBwbHVnaW47XHJcblx0fVxyXG5cclxuXHRkaXNwbGF5KCk6IHZvaWQge1xyXG5cdFx0Y29uc3Qge2NvbnRhaW5lckVsfSA9IHRoaXM7XHJcblxyXG5cdFx0Y29udGFpbmVyRWwuZW1wdHkoKTtcclxuXHJcblx0XHRuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuXHRcdFx0LnNldE5hbWUoJ0xvY2FsR2l0UHJvamVjdCcpXHJcblx0XHRcdC5zZXREZXNjKCdNZXRhZGF0YSBOYW1lIGZvciBEaXIgb2YgR2l0IFBvcmplY3QnKVxyXG5cdFx0XHQuYWRkVGV4dCh0ZXh0ID0+IHRleHRcclxuXHRcdFx0XHQuc2V0UGxhY2Vob2xkZXIoJ0VudGVyIHlvdXIgZmllbGQnKVxyXG5cdFx0XHRcdC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5uYW1lTG9jYWxHaXRQcm9qZWN0KVxyXG5cdFx0XHRcdC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMucGx1Z2luLnNldHRpbmdzLm5hbWVMb2NhbEdpdFByb2plY3QgPSB2YWx1ZTtcclxuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG5cdFx0XHRcdH0pKTtcclxuXHRcdFxyXG5cdFx0bmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcblx0XHRcdC5zZXROYW1lKCdGb2xkZXIgRm9yIEFzc2V0cycpXHJcblx0XHRcdC5zZXREZXNjKCdEaXIgTmFtZSBmb3IgQXNzZXRzJylcclxuXHRcdFx0LmFkZFRleHQodGV4dCA9PiB0ZXh0XHJcblx0XHRcdFx0LnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmFzc2V0c0xvY2FsR2l0UHJvamVjdClcclxuXHRcdFx0XHQub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLnBsdWdpbi5zZXR0aW5ncy5hc3NldHNMb2NhbEdpdFByb2plY3QgPSB2YWx1ZTtcclxuXHRcdFx0XHRcdGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG5cdFx0XHRcdH0pKTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcclxuXHR9XHJcbn1cclxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBLHNCQUFtRztBQUluRyxJQUFNLEtBQUssUUFBUSxJQUFJO0FBT3ZCLElBQU0sbUJBQXNDO0FBQUEsRUFDM0MscUJBQXFCO0FBQUEsRUFDckIsdUJBQXVCO0FBQ3hCO0FBRUEsSUFBTSxvQkFBb0IsQ0FBQyxZQUErQjtBQUFBLEVBQ3pELElBQUk7QUFBQSxFQUNKLE1BQU07QUFBQSxFQUNOLFVBQVUsWUFBWTtBQUNyQixRQUFJLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxVQUFVLFlBQVk7QUFDeEQsUUFBSSxRQUFRLEdBQUcsTUFBTTtBQUNyQixVQUFNLE9BQU87QUFBQSxNQUNaO0FBQUEsTUFBTTtBQUFBLE1BQUs7QUFBQSxNQUFLLE9BQU8sU0FBUztBQUFBLElBQ2pDO0FBQUEsRUFDRDtBQUNEO0FBRUEs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 diff --git a/main.ts b/main.ts index 03e3a7d..c4de8ed 100644 --- a/main.ts +++ b/main.ts @@ -6,17 +6,59 @@ import { App, Editor, MarkdownView, Modal, Notice, Plugin, PluginSettingTab, Set const fs = require('fs'); interface VExporterSettings { - mySetting: string; + nameLocalGitProject: string; + assetsLocalGitProject:string; } const DEFAULT_SETTINGS: VExporterSettings = { - mySetting: 'default' + nameLocalGitProject: 'LocalGitProject', + assetsLocalGitProject: 'assets' +} + +const cmd_export_readme = (plugin:VaultExpoterPlugin) => ({ + id: 'export_readme', + name: 'Export readMe', + callback: async () => { + let nc = await plugin.app.plugins.getPlugin('note-chain'); + let tfile = nc.chain.current_note; + await plugin.export_readme( + tfile,null,true,plugin.settings.assetsLocalGitProject + ); + } +}); + +const cmd_set_git_project = (plugin:VaultExpoterPlugin) => ({ + id: 'set_git_project', + name: 'Set Git Project', + callback: async () => { + let nc = await plugin.app.plugins.getPlugin('note-chain'); + let dir = await nc.chain.tp_prompt('输入文件夹'); + if(!dir || !fs.existsSync(dir)){ + return; + } + await nc.editor.set_frontmatter( + nc.chain.current_note, + plugin.settings.nameLocalGitProject, + dir + ) + } +}); + +const commandBuilders = [ + cmd_export_readme, + cmd_set_git_project +]; + +function addCommands(plugin:VaultExpoterPlugin) { + commandBuilders.forEach((c) => { + plugin.addCommand(c(plugin)); + }); } export default class VaultExpoterPlugin extends Plugin { settings: VExporterSettings; root : string; - + async onload() { await this.loadSettings(); this.app.vt = this; @@ -24,6 +66,8 @@ export default class VaultExpoterPlugin extends Plugin { this.root = this.app.vault.adapter.basePath; // This adds a settings tab so the user can configure various aspects of the plugin this.addSettingTab(new VExporterSettingTab(this.app, this)); + + addCommands(this); } onunload() { @@ -84,7 +128,7 @@ export default class VaultExpoterPlugin extends Plugin { if(!tfile){tfile = nc.chain.current_note;} if(!dst){ - dst = 'LocalGitProject'; + dst = this.settings.nameLocalGitProject; } if(!dst.contains('/')){ dst = nc.editor.get_frontmatter(tfile,dst); @@ -136,14 +180,26 @@ class VExporterSettingTab extends PluginSettingTab { containerEl.empty(); new Setting(containerEl) - .setName('Setting #1') - .setDesc('It\'s a secret') - .addTextArea(text => text - .setPlaceholder('Enter your secret') - .setValue(this.plugin.settings.mySetting) + .setName('LocalGitProject') + .setDesc('Metadata Name for Dir of Git Porject') + .addText(text => text + .setPlaceholder('Enter your field') + .setValue(this.plugin.settings.nameLocalGitProject) .onChange(async (value) => { - this.plugin.settings.mySetting = value; + this.plugin.settings.nameLocalGitProject = value; await this.plugin.saveSettings(); })); + + new Setting(containerEl) + .setName('Folder For Assets') + .setDesc('Dir Name for Assets') + .addText(text => text + .setValue(this.plugin.settings.assetsLocalGitProject) + .onChange(async (value) => { + this.plugin.settings.assetsLocalGitProject = value; + await this.plugin.saveSettings(); + })); + + } }