Skip to content

Commit 15d3459

Browse files
committed
Initial version of Zotero Link plugin
1 parent 58e61bc commit 15d3459

17 files changed

+3761
-290
lines changed

.editorconfig

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
# top-most EditorConfig file
2-
root = true
3-
4-
[*]
5-
charset = utf-8
6-
end_of_line = lf
7-
insert_final_newline = true
8-
indent_style = tab
9-
indent_size = 4
10-
tab_width = 4
1+
# top-most EditorConfig file
2+
root = true
3+
4+
[*]
5+
charset = utf-8
6+
end_of_line = lf
7+
insert_final_newline = true
8+
indent_style = space
9+
indent_size = 4
10+
tab_width = 4

.github/workflows/release.yml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
name: Release Build
2+
3+
on:
4+
push:
5+
tags:
6+
- '*'
7+
8+
env:
9+
PLUGIN_NAME: zotero-link
10+
11+
jobs:
12+
build:
13+
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- uses: actions/checkout@v2
18+
- uses: actions/setup-node@v3
19+
with:
20+
node-version: '16.x'
21+
- name: Build
22+
id: build
23+
run: |
24+
npm install
25+
npm run build --if-present
26+
mkdir ${{ env.PLUGIN_NAME }}
27+
cp main.js manifest.json ${{ env.PLUGIN_NAME }}
28+
zip -r ${{ env.PLUGIN_NAME }}.zip ${{ env.PLUGIN_NAME }}
29+
ls
30+
echo "::set-output name=tag_name::$(git tag --sort version:refname | tail -n 1)"
31+
- name: Create Release
32+
id: create_release
33+
uses: actions/create-release@v1
34+
env:
35+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36+
VERSION: ${{ github.ref }}
37+
with:
38+
tag_name: ${{ github.ref }}
39+
release_name: ${{ github.ref }}
40+
draft: false
41+
prerelease: false
42+
- name: Upload zip file
43+
id: upload-zip
44+
uses: actions/upload-release-asset@v1
45+
env:
46+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
47+
with:
48+
upload_url: ${{ steps.create_release.outputs.upload_url }}
49+
asset_path: ./${{ env.PLUGIN_NAME }}.zip
50+
asset_name: ${{ env.PLUGIN_NAME }}-${{ steps.build.outputs.tag_name }}.zip
51+
asset_content_type: application/zip
52+
- name: Upload main.js
53+
id: upload-main
54+
uses: actions/upload-release-asset@v1
55+
env:
56+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
57+
with:
58+
upload_url: ${{ steps.create_release.outputs.upload_url }}
59+
asset_path: ./main.js
60+
asset_name: main.js
61+
asset_content_type: text/javascript
62+
- name: Upload manifest.json
63+
id: upload-manifest
64+
uses: actions/upload-release-asset@v1
65+
env:
66+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
67+
with:
68+
upload_url: ${{ steps.create_release.outputs.upload_url }}
69+
asset_path: ./manifest.json
70+
asset_name: manifest.json
71+
asset_content_type: application/json

.gitignore

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,9 @@
1-
# vscode
2-
.vscode
3-
4-
# Intellij
5-
*.iml
6-
.idea
7-
8-
# npm
9-
node_modules
10-
11-
# Don't include the compiled main.js file in the repo.
12-
# They should be uploaded to GitHub releases instead.
13-
main.js
14-
15-
# Exclude sourcemaps
16-
*.map
17-
18-
# obsidian
19-
data.json
20-
21-
# Exclude macOS Finder (System Explorer) View States
22-
.DS_Store
1+
# npm
2+
node_modules
3+
4+
# Don't include the compiled main.js file in the repo.
5+
# They should be uploaded to GitHub releases instead.
6+
main.js
7+
8+
# obsidian
9+
data.json

LICENSE

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
2+
3+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
4+
5+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

README.md

Lines changed: 21 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,30 @@
1-
# Obsidian Sample Plugin
1+
# Zotero Link
22

3-
This is a sample plugin for Obsidian (https://obsidian.md).
3+
## Prerequisites
44

5-
This project uses Typescript to provide type checking and documentation.
6-
The repo depends on the latest plugin API (obsidian.d.ts) in Typescript Definition format, which contains TSDoc comments describing what it does.
5+
1. [ZotServer](https://github.com/MunGell/ZotServer) addon installed in your local Zotero application
6+
2. [Zotero Bridge](https://github.com/vanakat/zotero-bridge) plugin installed in Obsidian
77

8-
**Note:** The Obsidian API is still in early alpha and is subject to change at any time!
8+
## Usage
99

10-
This sample plugin demonstrates some of the basic functionality the plugin API can do.
11-
- Changes the default font color to red using `styles.css`.
12-
- Adds a ribbon icon, which shows a Notice when clicked.
13-
- Adds a command "Open Sample Modal" which opens a Modal.
14-
- Adds a plugin setting tab to the settings page.
15-
- Registers a global click event and output 'click' to the console.
16-
- Registers a global interval which logs 'setInterval' to the console.
10+
When this plugin installed it adds new command to the Command Palette: `Zotero Link: Insert`.
11+
Exact text of the link can be changed with template configuration in settings.
1712

18-
## First time developing plugins?
13+
Following keywords are acceptable in the template:
1914

20-
Quick starting guide for new plugin devs:
15+
* `{{ key }}` – Zotero item key
16+
* `{{ title }}` – item title
17+
* `{{ date.year }}` – publication year e.g. 2011
18+
* `{{ date.month }}` – publication month e.g. 10
19+
* `{{ date.day }}` – publication day e.g. 31
20+
* `{{ firstAuthor.fullName }}` – first author's full name
21+
* `{{ firstAuthor.firstName }}` – first author's first name
22+
* `{{ firstAuthor.lastName }}` – first author's last name
23+
* `{% for author in authors %}{{ author.lastName}}, {{ author.firstName | first }}., {% endfor %}` – advanced use of template to output all authors
2124

22-
- 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.
23-
- Make a copy of this repo as a template with the "Use this template" button (login to GitHub if you don't see it).
24-
- Clone your repo to a local development folder. For convenience, you can place this folder in your `.obsidian/plugins/your-plugin-name` folder.
25-
- Install NodeJS, then run `npm i` in the command line under your repo folder.
26-
- Run `npm run dev` to compile your plugin from `main.ts` to `main.js`.
27-
- Make changes to `main.ts` (or create new `.ts` files). Those changes should be automatically compiled into `main.js`.
28-
- Reload Obsidian to load the new version of your plugin.
29-
- Enable plugin in settings window.
30-
- For updates to the Obsidian API run `npm update` in the command line under your repo folder.
25+
Template language is based on [Nunjucks](https://mozilla.github.io/nunjucks/templating.html#builtin-filters),
26+
so its syntax and built-in filters are also available.
3127

32-
## Releasing new releases
28+
## License
3329

34-
- Update your `manifest.json` with your new version number, such as `1.0.1`, and the minimum Obsidian version required for your latest release.
35-
- 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.
36-
- 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
37-
- 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.
38-
- Publish the release.
39-
40-
> 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`.
41-
> The command will bump version in `manifest.json` and `package.json`, and add the entry for the new version to `versions.json`
42-
43-
## Adding your plugin to the community plugin list
44-
45-
- Check https://github.com/obsidianmd/obsidian-releases/blob/master/plugin-review.md
46-
- Publish an initial version.
47-
- Make sure you have a `README.md` file in the root of your repo.
48-
- Make a pull request at https://github.com/obsidianmd/obsidian-releases to add your plugin.
49-
50-
## How to use
51-
52-
- Clone this repo.
53-
- `npm i` or `yarn` to install dependencies
54-
- `npm run dev` to start compilation in watch mode.
55-
56-
## Manually installing the plugin
57-
58-
- Copy over `main.js`, `styles.css`, `manifest.json` to your vault `VaultFolder/.obsidian/plugins/your-plugin-id/`.
59-
60-
## Improve code quality with eslint (optional)
61-
- [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.
62-
- To use eslint with this project, make sure to install eslint from terminal:
63-
- `npm install -g eslint`
64-
- To use eslint to analyze this project use this command:
65-
- `eslint main.ts`
66-
- eslint will then create a report with suggestions for code improvement by file and line number.
67-
- 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:
68-
- `eslint .\src\`
69-
70-
71-
## API Documentation
72-
73-
See https://github.com/obsidianmd/obsidian-api
30+
MIT

esbuild.config.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ esbuild.build({
1515
banner: {
1616
js: banner,
1717
},
18-
entryPoints: ['main.ts'],
18+
entryPoints: ['src/main.ts'],
1919
bundle: true,
2020
external: [
2121
'obsidian',

main.ts

Lines changed: 0 additions & 137 deletions
This file was deleted.

manifest.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
{
2-
"id": "obsidian-sample-plugin",
3-
"name": "Sample Plugin",
4-
"version": "1.0.1",
5-
"minAppVersion": "0.12.0",
6-
"description": "This is a sample plugin for Obsidian. This plugin demonstrates some of the capabilities of the Obsidian API.",
7-
"author": "Obsidian",
8-
"authorUrl": "https://obsidian.md",
9-
"isDesktopOnly": false
2+
"id": "zotero-link",
3+
"name": "Zotero Link",
4+
"version": "1.0.0",
5+
"minAppVersion": "0.12.0",
6+
"description": "Insert link to Zotero items from Obsidian interface using Zotero Bridge",
7+
"author": "Shmavon Gazanchyan",
8+
"authorUrl": "https://github.com/MunGell",
9+
"isDesktopOnly": true
1010
}

0 commit comments

Comments
 (0)