From 426d446d0c839b7a3d410a768a630d11207f7e81 Mon Sep 17 00:00:00 2001 From: Hugo Willaume Date: Thu, 17 Feb 2022 18:21:35 +0100 Subject: [PATCH] adding standardnotes-extensions as submodule --- .gitmodules | 3 + notes/standardnotes-extensions/.gitignore | 167 +++++++++++ notes/standardnotes-extensions/Dockerfile | 8 + notes/standardnotes-extensions/LICENSE | 21 ++ notes/standardnotes-extensions/README.md | 154 ++++++++++ notes/standardnotes-extensions/build_repo.py | 283 ++++++++++++++++++ .../extensions/action-bar.yaml | 15 + .../extensions/autobiography-theme.yaml | 20 ++ .../extensions/autocomplete-tags.yaml | 13 + .../extensions/bold-editor.yaml | 15 + .../extensions/code-editor.yaml | 14 + .../extensions/dracula-theme.yaml | 20 ++ .../extensions/dynamic-theme.yaml | 20 ++ .../extensions/evernote-dark-theme.yaml | 20 ++ .../extensions/focus-theme.yaml | 20 ++ .../extensions/folders-component.yaml | 13 + .../extensions/futura-theme.yaml | 21 ++ .../extensions/github-push.yaml | 14 + .../extensions/gruvbox-dark-theme.yaml | 20 ++ .../extensions/horizon-dark-theme.yaml | 20 ++ .../extensions/less-distraction-theme.yaml | 20 ++ .../extensions/markdown-basic.yaml | 15 + .../extensions/markdown-pro-editor.yaml | 15 + .../extensions/material-theme.yaml | 19 ++ .../extensions/math-editor.yaml | 14 + .../extensions/mfa-link.yaml | 12 + .../extensions/midnight-theme.yaml | 20 ++ .../extensions/minimal-markdown-editor.yaml | 15 + .../extensions/mojave-dark-theme.yaml | 20 ++ .../extensions/muted-dark-theme.yaml | 20 ++ .../no-distraction-dynamic-theme.yaml | 19 ++ .../extensions/no-distraction-theme.yaml | 19 ++ .../extensions/nord-theme.yaml | 19 ++ .../extensions/one-dark-theme.yaml | 20 ++ .../extensions/one-darker-theme.yaml | 20 ++ .../extensions/overcast-theme.yaml | 20 ++ .../extensions/pencil-theme.yaml | 20 ++ .../extensions/plus-editor.yaml | 15 + .../extensions/pure-black-theme.yaml | 20 ++ .../extensions/rich-markdown-editor.yaml | 15 + .../extensions/secure-spreadsheets.yaml | 15 + .../extensions/simple-task-editor.yaml | 15 + .../extensions/slate-theme.yaml | 20 ++ .../extensions/solarized-dark-theme.yaml | 21 ++ .../extensions/tangerine-theme.yaml | 20 ++ .../extensions/titanium-theme.yaml | 21 ++ .../extensions/token-vault.yaml | 14 + .../extensions/vim-editor.yaml | 15 + .../extensions/vs-code-theme.yaml | 20 ++ .../standardnotes-extensions/requirements.txt | 2 + 50 files changed, 1401 insertions(+) create mode 100644 .gitmodules create mode 100644 notes/standardnotes-extensions/.gitignore create mode 100644 notes/standardnotes-extensions/Dockerfile create mode 100644 notes/standardnotes-extensions/LICENSE create mode 100644 notes/standardnotes-extensions/README.md create mode 100644 notes/standardnotes-extensions/build_repo.py create mode 100644 notes/standardnotes-extensions/extensions/action-bar.yaml create mode 100644 notes/standardnotes-extensions/extensions/autobiography-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/autocomplete-tags.yaml create mode 100644 notes/standardnotes-extensions/extensions/bold-editor.yaml create mode 100644 notes/standardnotes-extensions/extensions/code-editor.yaml create mode 100644 notes/standardnotes-extensions/extensions/dracula-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/dynamic-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/evernote-dark-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/focus-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/folders-component.yaml create mode 100644 notes/standardnotes-extensions/extensions/futura-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/github-push.yaml create mode 100644 notes/standardnotes-extensions/extensions/gruvbox-dark-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/horizon-dark-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/less-distraction-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/markdown-basic.yaml create mode 100644 notes/standardnotes-extensions/extensions/markdown-pro-editor.yaml create mode 100644 notes/standardnotes-extensions/extensions/material-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/math-editor.yaml create mode 100644 notes/standardnotes-extensions/extensions/mfa-link.yaml create mode 100644 notes/standardnotes-extensions/extensions/midnight-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/minimal-markdown-editor.yaml create mode 100644 notes/standardnotes-extensions/extensions/mojave-dark-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/muted-dark-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/no-distraction-dynamic-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/no-distraction-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/nord-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/one-dark-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/one-darker-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/overcast-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/pencil-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/plus-editor.yaml create mode 100644 notes/standardnotes-extensions/extensions/pure-black-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/rich-markdown-editor.yaml create mode 100644 notes/standardnotes-extensions/extensions/secure-spreadsheets.yaml create mode 100644 notes/standardnotes-extensions/extensions/simple-task-editor.yaml create mode 100644 notes/standardnotes-extensions/extensions/slate-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/solarized-dark-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/tangerine-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/titanium-theme.yaml create mode 100644 notes/standardnotes-extensions/extensions/token-vault.yaml create mode 100644 notes/standardnotes-extensions/extensions/vim-editor.yaml create mode 100644 notes/standardnotes-extensions/extensions/vs-code-theme.yaml create mode 100644 notes/standardnotes-extensions/requirements.txt diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a94505e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "notes/standardnotes-extensions"] + path = notes/standardnotes-extensions + url = https://github.com/iganeshk/standardnotes-extensions.git diff --git a/notes/standardnotes-extensions/.gitignore b/notes/standardnotes-extensions/.gitignore new file mode 100644 index 0000000..7aad6eb --- /dev/null +++ b/notes/standardnotes-extensions/.gitignore @@ -0,0 +1,167 @@ +public +.env + +### Python.gitignore + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + + +### macOS.gitignore + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + + diff --git a/notes/standardnotes-extensions/Dockerfile b/notes/standardnotes-extensions/Dockerfile new file mode 100644 index 0000000..5cd54d8 --- /dev/null +++ b/notes/standardnotes-extensions/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3-alpine + +WORKDIR /build +COPY requirements.txt build_repo.py ./ + +RUN pip3 install -r requirements.txt + +ENTRYPOINT python3 build_repo.py diff --git a/notes/standardnotes-extensions/LICENSE b/notes/standardnotes-extensions/LICENSE new file mode 100644 index 0000000..05012a5 --- /dev/null +++ b/notes/standardnotes-extensions/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Ganesh Kumar + +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: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +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. \ No newline at end of file diff --git a/notes/standardnotes-extensions/README.md b/notes/standardnotes-extensions/README.md new file mode 100644 index 0000000..a8a7716 --- /dev/null +++ b/notes/standardnotes-extensions/README.md @@ -0,0 +1,154 @@ +![Standard Notes Extension Repository](../assets/standardnotes.png?raw=true) + +## Standard Notes Extensions - Self-Hosted Repository +Host Standard Notes extensions on your own server. This utility parses most of the open-source extensions available from original repository as well as from other authors and builds an extensions repository which then can be plugged directly into Standard Notes Web/Desktop Clients. (https://standardnotes.org/) + +Extensions are listed as YAML in the `\extensions` sub-directory, pull a request if you'd like to add yours. + +### Requirements +* Python 3 + * pyyaml module + * requests module + +### Demo +

+ Standard Notes Extension Repository Demo +

+ +### Usage + +* Clone this repository to the web-server: + +```bash +$ git clone https://github.com/iganeshk/standardnotes-extensions.git +$ cd standardnotes-extensions +$ pip3 install -r requirements.txt +``` + +* Use the env.sample to create a .env file for your environment variables. The utility will automatically load these when it starts. + +``` +# Sample ENV setup Variables (YAML) +# Copy this file and update as needed. +# +# $ cp env.sample .env +# +# Do not include this new file in source control +# Github Credentials +# Generate your token here: https://github.com/settings/tokens +# No additional permission required, this is just to avoid github api rate limits +# + +domain: https://your-domain.com/extensions + +github: + username: USERNAME + token: TOKEN + +``` + +* [Optional] Make additions or appropriate changes in `/extensions` directory. +* Run the utility: + +```bash +$ python3 build_repo.py +``` +* Serve the `/public` directory and verify if the endpoint is reachable. + +``` +https://your-domain.com/extensions/index.json +``` +* Import the above endpoint into the web/desktop client. (Note: Enable CORS for your web server respectively, nginx setup provided below) + +### Docker + +* To via Docker, clone the repository, set up the .env file, and optionally modify the `extensions` directory, following the instructions above. +* Then pull and run run the container, specifying the mount points for the `.env` file, the `extensions` directory, and the `public` directory, where the output will be placed: + +```bash +$ docker run \ + -v $PWD/.env:/build/.env \ + -v $PWD/extensions:/build/extensions \ + -v $PWD/public:/build/public \ + mtoohey/standardnotes-extensions +``` + +#### Docker Compose + +If you would like to use the container with docker-compose, the exact setup will be somewhat specific to your configuration, however the following snippet may be helpful, assuming you have cloned this repository in your `$HOME` directory and followed the instructions regarding the .env file and `extensions` directory: + +```yaml +version: '3.3' +services: + nginx: + ... + volumes: + - standardnotes-extensions:/usr/share/nginx/html + + standardnotes-extensions: + image: mtoohey/standardnotes-extensions + restart: "no" + volumes: + - $HOME/standardnotes-extensions/.env:/build/.env + - $HOME/standardnotes-extensions/extensions:/build/extensions + - standardnotes-extensions:/build/public + +volumes: + standardnotes-extensions: + name: standardnotes-extensions +``` + +This snippet will handle the building of the extension creation-container, and place the result in the `standardnotes-extensions` volume, which can then be mounted in the nginx container so that it can be served as demonstrated in the instructions below. Note that it's necessary to include the `restart: "no"` flag, because the container is designed to stop after it has finished generating the extensions. + +Also, please note that the configuration snippet above is in no way a complete setup: you will still have to configure the nginx container and set up the syncing server containers. + +### Docker Build + +If you need to build the container, clone this repository, `cd` into it, and run the following command: + +```bash +$ docker build -t standardnotes-extensions . +``` + +### Setup with nginx + +```nginx + location ^~ /extensions { + autoindex off; + alias /path/to/standardnotes-extensions/public; + # CORS HEADERS + if ($request_method = 'OPTIONS') { + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; + # + # Custom headers and headers various browsers *should* be OK with but aren't + # + add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; + # + # Tell client that this pre-flight info is valid for 20 days + # + add_header 'Access-Control-Max-Age' 1728000; + add_header 'Content-Type' 'text/plain; charset=utf-8'; + add_header 'Content-Length' 0; + return 204; + } + if ($request_method = 'POST') { + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; + add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; + add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; + } + if ($request_method = 'GET') { + add_header 'Access-Control-Allow-Origin' '*'; + add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; + add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; + add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; + } + } +``` + +### Acknowledgments +* This project was adapted originally from https://github.com/JokerQyou/snextensions +* Check out https://github.com/jonhadfield/awesome-standard-notes for more Standard Notes stuff! +* Authors of custom themes and extensions + diff --git a/notes/standardnotes-extensions/build_repo.py b/notes/standardnotes-extensions/build_repo.py new file mode 100644 index 0000000..59365c3 --- /dev/null +++ b/notes/standardnotes-extensions/build_repo.py @@ -0,0 +1,283 @@ +#!/usr/bin/env/ python3 +# coding=utf-8 +''' +Parse extensions/*.yaml files & build a directory with following structure: +public/ + |-my-extension-1/ + | |-1.0.0/ <- version (to avoid static file caching issues) + | | |-index.json <- extension info + | | |-index.html <- extension entrance (component) + | | |-dist <- extension resources + | | |-... <- other files + |-index.json <- repo info, contain all extensions' info +''' +from subprocess import run, PIPE +import sys +import os +import json +import shutil +from zipfile import ZipFile +import requests +import yaml + + +def get_environment(base_dir): + """ + Parse the environment variables from .env + """ + temp_envvar = yaml.load(""" + domain: https://domain.com/extensions + github: + username: + token: + """, Loader=yaml.FullLoader) + if os.path.isfile(os.path.join(base_dir, ".env")): + with open(os.path.join(base_dir, ".env")) as temp_env_file: + temp_envvar = yaml.load(temp_env_file, Loader=yaml.FullLoader) + + return temp_envvar + + +def process_zipball(repo_dir, release_version): + """ + Grab the release zipball and extract it without the root/parent/top directory + """ + with ZipFile(os.path.join(repo_dir, release_version) + ".zip", + 'r') as zipball: + for member in zipball.namelist(): + # Parse files list excluding the top/parent/root directory + filename = '/'.join(member.split('/')[1:]) + # Now ignore it + if filename == '': continue + # Ignore dot files + if filename.startswith('.'): continue + source = zipball.open(member) + try: + target = open( + os.path.join(repo_dir, release_version, filename), "wb") + with source, target: + target = open( + os.path.join(repo_dir, release_version, filename), + "wb") + shutil.copyfileobj(source, target) + except (FileNotFoundError, IsADirectoryError): + # Create the directory + os.makedirs( + os.path.dirname( + os.path.join(repo_dir, release_version, filename))) + continue + # Delete the archive zip + os.remove(os.path.join(repo_dir, release_version) + ".zip") + + +def git_clone_method(ext_yaml, public_dir, ext_has_update): + """ + Get the latest repository and parse for metadata + """ + repo_name = ext_yaml['github'].split('/')[-1] + repo_dir = os.path.join(public_dir, repo_name) + run([ + 'git', 'clone', 'https://github.com/{github}.git'.format(**ext_yaml), + '--quiet', '{}_tmp'.format(repo_name) + ], + check=True) + ext_last_commit = (run([ + 'git', '--git-dir=' + + os.path.join(public_dir, '{}_tmp'.format(repo_name), '.git'), + 'rev-list', '--tags', '--max-count=1' + ], + stdout=PIPE, + check=True).stdout.decode('utf-8').replace( + "\n", "")) + ext_version = run([ + 'git', '--git-dir', + os.path.join(public_dir, '{}_tmp'.format(repo_name), '.git'), + 'describe', '--tags', ext_last_commit + ], + stdout=PIPE, + check=True).stdout.decode('utf-8').replace("\n", "") + + # check if the latest version already exist + if not os.path.exists(os.path.join(repo_dir, ext_version)): + ext_has_update = True + shutil.move( + os.path.join(public_dir, '{}_tmp'.format(repo_name)), + os.path.join(public_dir, repo_name, '{}'.format(ext_version))) + # Delete .git resource from the directory + shutil.rmtree( + os.path.join(public_dir, repo_name, '{}'.format(ext_version), + '.git')) + else: + # ext already up-to-date + # print('Extension: {} - {} (already up-to-date)'.format(ext_yaml['name'], ext_version)) + # clean-up + shutil.rmtree(os.path.join(public_dir, '{}_tmp'.format(repo_name))) + return ext_version, ext_has_update + + +def parse_extensions(base_dir, base_url, ghub_session): + """ + Build Standard Notes extensions repository using Github meta-data + """ + + extension_dir = os.path.join(base_dir, 'extensions') + public_dir = os.path.join(base_dir, 'public') + if not os.path.exists(os.path.join(public_dir)): + os.makedirs(public_dir) + os.chdir(public_dir) + + extensions = [] + # Get all extensions, sort extensions alphabetically along by their by type + extfiles = [x for x in sorted(os.listdir(extension_dir)) if not x.endswith('theme.yaml') and x.endswith('.yaml')] + themefiles = [x for x in sorted(os.listdir(extension_dir)) if x.endswith('theme.yaml')] + extfiles.extend(themefiles) + + for extfile in extfiles: + with open(os.path.join(extension_dir, extfile)) as extyaml: + ext_yaml = yaml.load(extyaml, Loader=yaml.FullLoader) + ext_has_update = False + repo_name = ext_yaml['github'].split('/')[-1] + repo_dir = os.path.join(public_dir, repo_name) + + # If we don't have a Github API Session, do git-clone instead + if ghub_session is not None: + # Get extension's github release meta-data + ext_git_info = json.loads( + ghub_session.get( + 'https://api.github.com/repos/{github}/releases/latest'. + format(**ext_yaml)).text) + try: + ext_version = ext_git_info['tag_name'] + except KeyError: + # No release's found + print( + "Error: Unable to update %s (%s) does it have a release at Github?" + % (ext_yaml['name'], extfile)) + continue + # Check if extension directory already exists + if not os.path.exists(repo_dir): + os.makedirs(repo_dir) + # Check if extension with current release already exists + if not os.path.exists(os.path.join(repo_dir, ext_version)): + ext_has_update = True + os.makedirs(os.path.join(repo_dir, ext_version)) + # Grab the release and then unpack it + with requests.get(ext_git_info['zipball_url'], + stream=True) as zipball_stream: + with open( + os.path.join(repo_dir, ext_version) + ".zip", + 'wb') as zipball_file: + shutil.copyfileobj(zipball_stream.raw, zipball_file) + # unpack the zipball + process_zipball(repo_dir, ext_version) + else: + ext_version, ext_has_update = git_clone_method( + ext_yaml, public_dir, ext_has_update) + + # Build extension info (stateless) + # https://domain.com/sub-domain/my-extension/index.json + extension = dict( + identifier=ext_yaml['id'], + name=ext_yaml['name'], + content_type=ext_yaml['content_type'], + area=ext_yaml.get('area', None), + version=ext_version, + description=ext_yaml.get('description', None), + marketing_url=ext_yaml.get('marketing_url', None), + thumbnail_url=ext_yaml.get('thumbnail_url', None), + valid_until='2030-05-16T18:35:33.000Z', + url='/'.join([base_url, repo_name, ext_version, ext_yaml['main']]), + download_url='https://github.com/{}/archive/{}.zip'.format( + ext_yaml['github'], ext_version), + latest_url='/'.join([base_url, repo_name, 'index.json']), + flags=ext_yaml.get('flags', []), + dock_icon=ext_yaml.get('dock_icon', {}), + layerable=ext_yaml.get('layerable', None), + statusBar=ext_yaml.get('statusBar', None), + ) + + # Strip empty values + extension = {k: v for k, v in extension.items() if v} + + # Check if extension is already up-to-date () + if ext_has_update: + # Generate JSON file for each extension + with open(os.path.join(public_dir, repo_name, 'index.json'), + 'w') as ext_json: + json.dump(extension, ext_json, indent=4) + if extfile.endswith("theme.yaml"): + print('Theme: {:34s} {:6s}\t(updated)'.format( + ext_yaml['name'], ext_version)) + else: + print('Extension: {:30s} {:6s}\t(updated)'.format( + ext_yaml['name'], ext_version)) + else: + # ext already up-to-date + if extfile.endswith("theme.yaml"): + print('Theme: {:34s} {:6s}\t(already up-to-date)'.format( + ext_yaml['name'], ext_version)) + else: + print('Extension: {:30s} {:6s}\t(already up-to-date)'.format( + ext_yaml['name'], ext_version)) + + extensions.append(extension) + os.chdir('..') + + # Generate the main repository index JSON + # https://domain.com/sub-domain/my-index.json + with open(os.path.join(public_dir, 'index.json'), 'w') as ext_json: + json.dump( + dict( + content_type='SN|Repo', + valid_until='2030-05-16T18:35:33.000Z', + packages=extensions, + ), + ext_json, + indent=4, + ) + print("\nProcessed: {:20s}{} extensions. (Components: {}, Themes: {})".format("", len(extfiles), len(extfiles)-len(themefiles), len(themefiles))) + print("Repository Endpoint URL: {:6s}{}/index.json".format("", base_url)) + +def main(): + """ + teh main function + """ + base_dir = os.path.dirname(os.path.abspath(__file__)) + # Get environment variables + env_var = get_environment(base_dir) + base_url = env_var['domain'] + while base_url.endswith('/'): + base_url = base_url[:-1] + + if (env_var['github']['username'] and env_var['github']['token']): + # Get a re-usable session object using user credentials + ghub_session = requests.Session() + ghub_session.auth = (env_var['github']['username'], + env_var['github']['token']) + try: + ghub_verify = ghub_session.get("https://api.github.com/") + if not ghub_verify.headers['status'] == "200 OK": + print("Error: %s " % ghub_verify.headers['status']) + print( + "Bad Github credentials in the .env file, check and try again." + ) + sys.exit(1) + except Exception as e: + print("Unknown error occurred: %s" % e) + # Build extensions + parse_extensions(base_dir, base_url, ghub_session) + # Terminate Session + ghub_session.close() + else: + # Environment file missing + print( + "Environment variables not set (have a look at env.sample). Using Git Clone method instead" + ) + input( + "⚠️ this is an in-efficient process, Press any key to continue:\n") + parse_extensions(base_dir, base_url, None) + sys.exit(0) + + +if __name__ == '__main__': + main() diff --git a/notes/standardnotes-extensions/extensions/action-bar.yaml b/notes/standardnotes-extensions/extensions/action-bar.yaml new file mode 100644 index 0000000..4f0f222 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/action-bar.yaml @@ -0,0 +1,15 @@ +--- +id: org.standardnotes.action-bar +npm: sn-action-bar +github: standardnotes/action-bar +main: index.html + +name: ActionBar +content_type: SN|Component +area: editor-stack +version: 1.3.2 +marketing_url: https://standardnotes.org/extensions/action-bar +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/components/action-bar.jpg +description: Useful utility bar with information about the current note as well as actions like duplicate, copy, and save. +flags: [] +... diff --git a/notes/standardnotes-extensions/extensions/autobiography-theme.yaml b/notes/standardnotes-extensions/extensions/autobiography-theme.yaml new file mode 100644 index 0000000..c74207a --- /dev/null +++ b/notes/standardnotes-extensions/extensions/autobiography-theme.yaml @@ -0,0 +1,20 @@ +--- +id: org.standardnotes.theme-autobiography +npm: sn-theme-autobiography +github: standardnotes/autobiography-theme +main: dist/dist.css + +name: Autobiography +content_type: SN|Theme +area: themes +version: 1.0.0 +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/themes/autobiography.jpg +description: A theme for writers and readers. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#9D7441' + foreground_color: '#ECE4DB' + border_color: '#9D7441' +... diff --git a/notes/standardnotes-extensions/extensions/autocomplete-tags.yaml b/notes/standardnotes-extensions/extensions/autocomplete-tags.yaml new file mode 100644 index 0000000..dce219a --- /dev/null +++ b/notes/standardnotes-extensions/extensions/autocomplete-tags.yaml @@ -0,0 +1,13 @@ +--- +id: org.standardnotes.autocomplete-tags +npm: sn-folders-component +github: standardnotes/quick-tags +main: index.html + +name: Quick Tags +content_type: SN|Component +area: note-tags +version: 1.3.2 +description: Work more efficiently by quickly selecting from a live list of tags while you type. Supports keyboard shortcuts and folders. +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/components/autocomplete.jpg +... diff --git a/notes/standardnotes-extensions/extensions/bold-editor.yaml b/notes/standardnotes-extensions/extensions/bold-editor.yaml new file mode 100644 index 0000000..b99a9c6 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/bold-editor.yaml @@ -0,0 +1,15 @@ +--- +id: org.standardnotes.bold-editor +npm: sn-bold-editor +github: standardnotes/bold-editor +main: dist/index.html + +name: Bold Editor +content_type: SN|Component +area: editor-editor +version: 1.2.1 +marketing_url: +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/editors/bold.jpg +description: A simple and peaceful rich editor that helps you write and think clearly. Features FileSafe integration, so you can embed your encrypted images, videos, and audio recordings directly inline. +flags: [] +... diff --git a/notes/standardnotes-extensions/extensions/code-editor.yaml b/notes/standardnotes-extensions/extensions/code-editor.yaml new file mode 100644 index 0000000..5c727f0 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/code-editor.yaml @@ -0,0 +1,14 @@ +--- +id: org.standardnotes.code-editor +npm: sn-code-editor +github: standardnotes/code-editor +main: index.html + +name: Code Editor +content_type: SN|Component +area: editor-editor +version: 1.3.8 +marketing_url: https://standardnotes.org/extensions/code-editor +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/editors/code.jpg +description: Syntax highlighting and convenient keyboard shortcuts for over 120 programming languages. Ideal for code snippets and procedures. +... diff --git a/notes/standardnotes-extensions/extensions/dracula-theme.yaml b/notes/standardnotes-extensions/extensions/dracula-theme.yaml new file mode 100644 index 0000000..f454b73 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/dracula-theme.yaml @@ -0,0 +1,20 @@ +--- +id: ml.xnor.sn-theme-dracula +github: dracula/standard-notes +main: dist/dist.css + +name: Dracula +content_type: SN|Theme +area: themes +version: 0.0.17 +marketing_url: https://github.com/dracula/standard-notes +thumbnail_url: https://raw.githubusercontent.com/dracula/standard-notes/master/screenshot.png +description: A Dracula inspired theme for Standard Notes. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#bd93f9' + foreground_color: '#bd93f9' + border_color: '#bd93f9' +... diff --git a/notes/standardnotes-extensions/extensions/dynamic-theme.yaml b/notes/standardnotes-extensions/extensions/dynamic-theme.yaml new file mode 100644 index 0000000..756574b --- /dev/null +++ b/notes/standardnotes-extensions/extensions/dynamic-theme.yaml @@ -0,0 +1,20 @@ +--- +id: org.standardnotes.theme-dynamic +npm: sn-theme-dynamic +github: standardnotes/dynamic-theme +main: dist/dist.css + +name: Dynamic +layerable: true +content_type: SN|Theme +area: themes +version: 1.0.0 +marketing_url: https://standardnotes.org/extensions/dynamic +description: A smart theme that minimizes the tags and notes panels when they are not in use. + +dock_icon: + type: svg + source: |- + + # Shuffle Icon from Entypo by Daniel Bruce +... diff --git a/notes/standardnotes-extensions/extensions/evernote-dark-theme.yaml b/notes/standardnotes-extensions/extensions/evernote-dark-theme.yaml new file mode 100644 index 0000000..fa924e5 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/evernote-dark-theme.yaml @@ -0,0 +1,20 @@ +--- +id: io.github.ilindaniel.sn-theme-evernote-dark +github: ilindaniel/sn-theme-evernote-dark +main: dist/dist.css + +name: Evernote-style Dark Theme +content_type: SN|Theme +area: themes +version: v1.2 +marketing_url: https://github.com/ilindaniel/sn-theme-evernote-dark +thumbnail_url: https://raw.githubusercontent.com/ilindaniel/sn-theme-evernote-dark/master/preview.png +description: Evernote inspired dark theme for Standard Notes. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#00a82e' + foreground_color: '#0081c2' + border_color: '#00a82e' +... diff --git a/notes/standardnotes-extensions/extensions/focus-theme.yaml b/notes/standardnotes-extensions/extensions/focus-theme.yaml new file mode 100644 index 0000000..3b6e3b0 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/focus-theme.yaml @@ -0,0 +1,20 @@ +--- +id: org.standardnotes.theme-focus +npm: sn-theme-focus +github: standardnotes/focus-theme +main: dist/dist.css + +name: Focus +content_type: SN|Theme +area: themes +version: 1.2.3 +marketing_url: https://standardnotes.org/extensions/focused +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/themes/focus-with-mobile.jpg +description: For when you need to go in. + +dock_icon: + type: circle + background_color: '#a464c2' + foreground_color: '#ffffff' + border_color: '#a464c2' +... diff --git a/notes/standardnotes-extensions/extensions/folders-component.yaml b/notes/standardnotes-extensions/extensions/folders-component.yaml new file mode 100644 index 0000000..83939f2 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/folders-component.yaml @@ -0,0 +1,13 @@ +--- +id: org.standardnotes.folders-component +npm: sn-folders +github: standardnotes/folders-component +main: index.html + +name: Folders Component +content_type: SN|Component +area: tags-list +version: 1.3.8 +description: Create nested folders from your tags with easy drag and drop. Folders also supports Smart Tags, which allow you to build custom filters for viewing your notes. +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/components/folders.jpg +... diff --git a/notes/standardnotes-extensions/extensions/futura-theme.yaml b/notes/standardnotes-extensions/extensions/futura-theme.yaml new file mode 100644 index 0000000..42d0947 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/futura-theme.yaml @@ -0,0 +1,21 @@ +--- +id: org.standardnotes.theme-futura +npm: sn-futura-theme +github: standardnotes/futura-theme +main: dist/dist.css + +name: Futura +content_type: SN|Theme +area: themes +version: 1.2.2 +marketing_url: https://standardnotes.org/extensions/futura +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/themes/futura-with-mobile.jpg +description: Calm and relaxed. Take some time off. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#fca429' + foreground_color: '#ffffff' + border_color: '#fca429' +... diff --git a/notes/standardnotes-extensions/extensions/github-push.yaml b/notes/standardnotes-extensions/extensions/github-push.yaml new file mode 100644 index 0000000..7e5971d --- /dev/null +++ b/notes/standardnotes-extensions/extensions/github-push.yaml @@ -0,0 +1,14 @@ +--- +id: org.standardnotes.github-push +npm: sn-github-push +github: standardnotes/github-push +main: index.html + +name: GitHub Push +content_type: SN|Component +area: editor-stack +version: 1.2.4 +marketing_url: https://standardnotes.org/extensions/github-push +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/components/github-push.jpg +description: Push note changes to a public or private GitHub repository, with options for file extension and commit message. +... diff --git a/notes/standardnotes-extensions/extensions/gruvbox-dark-theme.yaml b/notes/standardnotes-extensions/extensions/gruvbox-dark-theme.yaml new file mode 100644 index 0000000..13b897a --- /dev/null +++ b/notes/standardnotes-extensions/extensions/gruvbox-dark-theme.yaml @@ -0,0 +1,20 @@ +--- +id: io.github.christianhans.sn-gruvbox-dark-theme +github: christianhans/sn-gruvbox-dark-theme +main: dist/dist.css + +name: Gruvbox Dark Theme +content_type: SN|Theme +area: themes +version: 0.0.16 +marketing_url: https://github.com/christianhans/sn-gruvbox-dark-theme +thumbnail_url: https://raw.githubusercontent.com/christianhans/sn-gruvbox-dark-theme/master/preview.png +description: Standard Notes theme based on colors from the gruvbox theme for Vim. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#D79921' + foreground_color: '#076678' + border_color: '#D79921' +... diff --git a/notes/standardnotes-extensions/extensions/horizon-dark-theme.yaml b/notes/standardnotes-extensions/extensions/horizon-dark-theme.yaml new file mode 100644 index 0000000..a7e21e9 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/horizon-dark-theme.yaml @@ -0,0 +1,20 @@ +--- +id: org.github.shouhu21.sn-theme-horizon-dark +github: shouhu21/sn-theme-horizon-dark +main: dist/dist.css + +name: Horizon Dark +content_type: SN|Theme +area: themes +version: 1.0.0 +marketing_url: https://github.com/shouhu21/sn-theme-horizon-dark +thumbnail_url: https://github.com/shouhu21/sn-theme-horizon-dark/blob/main/preview.png +description: Standard Notes theme based on colors from the Horizon theme for VSCode. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#1a1c23' + foreground_color: '#fdf0ed' + border_color: '#1a1c23' +... diff --git a/notes/standardnotes-extensions/extensions/less-distraction-theme.yaml b/notes/standardnotes-extensions/extensions/less-distraction-theme.yaml new file mode 100644 index 0000000..0d43cc4 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/less-distraction-theme.yaml @@ -0,0 +1,20 @@ +--- +id: io.github.alecstein.less-distraction +github: alecstein/sn-less-distraction +main: dist/dist.css + +name: Less Distraction +content_type: SN|Theme +area: themes +version: 0.0.5 +marketing_url: https://github.com/alecstein/sn-less-distraction +thumbnail_url: https://raw.githubusercontent.com/alecstein/sn-less-distraction/master/screenshot.png +description: A theme for focusing on your writing. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#FFFFFF' + foreground_color: '#FFFFFF' + border_color: '#FFFFFF' +... diff --git a/notes/standardnotes-extensions/extensions/markdown-basic.yaml b/notes/standardnotes-extensions/extensions/markdown-basic.yaml new file mode 100644 index 0000000..202fafb --- /dev/null +++ b/notes/standardnotes-extensions/extensions/markdown-basic.yaml @@ -0,0 +1,15 @@ +--- +id: org.standardnotes.simple-markdown-editor +npm: sn-simple-markdown-editor +github: standardnotes/markdown-basic +main: dist/index.html + +name: Simple Markdown Editor +content_type: SN|Component +area: editor-editor +version: 1.4.0 +marketing_url: https://standardnotes.org/extensions/simple-markdown-editor +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/editors/simple-markdown.jpg +description: A Markdown editor with dynamic split-pane preview. +flags: [] +... diff --git a/notes/standardnotes-extensions/extensions/markdown-pro-editor.yaml b/notes/standardnotes-extensions/extensions/markdown-pro-editor.yaml new file mode 100644 index 0000000..0577782 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/markdown-pro-editor.yaml @@ -0,0 +1,15 @@ +--- +id: org.standardnotes.advanced-markdown-editor +npm: sn-advanced-markdown-editor +github: standardnotes/markdown-pro +main: dist/index.html + +name: Markdown Pro +content_type: SN|Component +area: editor-editor +version: 1.3.14 +marketing_url: https://standardnotes.com/features/markdown-pro +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/editors/adv-markdown.jpg +description: A fully featured Markdown editor that supports live preview, a styling toolbar, and split pane support. +flags: [] +... diff --git a/notes/standardnotes-extensions/extensions/material-theme.yaml b/notes/standardnotes-extensions/extensions/material-theme.yaml new file mode 100644 index 0000000..cefd70b --- /dev/null +++ b/notes/standardnotes-extensions/extensions/material-theme.yaml @@ -0,0 +1,19 @@ +--- +id: com.vantezzen.material-theme +github: vantezzen/sn-theme-material +main: src/main.css + +name: Material Theme +content_type: SN|Theme +area: themes +version: 1.0.0 +marketing_url: https://github.com/vantezzen/sn-theme-material +thumbnail_url: https://raw.githubusercontent.com/vantezzen/sn-theme-material/master/screenshot.png +description: Material Theme for Standard Notes. + +dock_icon: + type: circle + background_color: '#263238' + foreground_color: '#FFFFFF' + border_color: '#263238' +... diff --git a/notes/standardnotes-extensions/extensions/math-editor.yaml b/notes/standardnotes-extensions/extensions/math-editor.yaml new file mode 100644 index 0000000..3c0bc82 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/math-editor.yaml @@ -0,0 +1,14 @@ +--- +id: org.standardnotes.fancy-markdown-editor +npm: sn-fancy-markdown-editor +github: standardnotes/math-editor +main: index.html + +name: Math Editor +content_type: SN|Component +area: editor-editor +version: 1.3.4 +marketing_url: https://standardnotes.org/extensions/math-editor +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/editors/fancy-markdown.jpg +description: A beautiful split-pane Markdown editor with synced-scroll and LaTeX support. When LaTeX is detected, makes external render network request. +... diff --git a/notes/standardnotes-extensions/extensions/mfa-link.yaml b/notes/standardnotes-extensions/extensions/mfa-link.yaml new file mode 100644 index 0000000..20b2d39 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/mfa-link.yaml @@ -0,0 +1,12 @@ +--- +id: org.standardnotes.mfa-link +npm: sn-mfa-link +github: standardnotes/mfa-link +main: dist/index.html + +name: 2FA Manager +content_type: SN|Component +area: modal +version: 1.2.5 +description: Configure two-factor authentication to add an extra level of security to your account. +... diff --git a/notes/standardnotes-extensions/extensions/midnight-theme.yaml b/notes/standardnotes-extensions/extensions/midnight-theme.yaml new file mode 100644 index 0000000..5acc8f0 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/midnight-theme.yaml @@ -0,0 +1,20 @@ +--- +id: org.standardnotes.theme-midnight +npm: sn-theme-midnight +github: standardnotes/midnight-theme +main: dist/dist.css + +name: Midnight +content_type: SN|Theme +area: themes +version: 1.2.2 +marketing_url: https://standardnotes.org/extensions/midnight +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/themes/midnight-with-mobile.jpg +description: Elegant utilitarianism. + +dock_icon: + type: circle + background_color: '#086DD6' + foreground_color: '#ffffff' + border_color: '#086DD6' +... diff --git a/notes/standardnotes-extensions/extensions/minimal-markdown-editor.yaml b/notes/standardnotes-extensions/extensions/minimal-markdown-editor.yaml new file mode 100644 index 0000000..45e15d1 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/minimal-markdown-editor.yaml @@ -0,0 +1,15 @@ +--- +id: org.standardnotes.minimal-markdown-editor +npm: sn-minimal-markdown-editor +github: standardnotes/minimal-markdown-editor +main: index.html + +name: Minimal Markdown Editor +content_type: SN|Component +area: editor-editor +version: 1.3.7 +marketing_url: https://standardnotes.org/extensions/minimal-markdown-editor +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/editors/min-markdown.jpg +description: A minimal Markdown editor with live rendering and in-text search via Ctrl/Cmd + F +flags: [] +... diff --git a/notes/standardnotes-extensions/extensions/mojave-dark-theme.yaml b/notes/standardnotes-extensions/extensions/mojave-dark-theme.yaml new file mode 100644 index 0000000..bb5da65 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/mojave-dark-theme.yaml @@ -0,0 +1,20 @@ +--- +id: io.github.matthew-cox.mojave-dark-mode +github: matthew-cox/sn-theme-mojave-dark-mode +main: dist/mojave-dark-mode.css + +name: Mojave Dark Mode +content_type: SN|Theme +area: themes +version: 0.0.3 +marketing_url: https://github.com/matthew-cox/sn-theme-mojave-dark-mode +thumbnail_url: https://github.com/matthew-cox/sn-theme-mojave-dark-mode/raw/master/preview.png +description: Standard Notes theme which roughly matches Mojave Dark Mode.. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#585858' + foreground_color: '#ffffff' + border_color: '#585858' +... diff --git a/notes/standardnotes-extensions/extensions/muted-dark-theme.yaml b/notes/standardnotes-extensions/extensions/muted-dark-theme.yaml new file mode 100644 index 0000000..744c384 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/muted-dark-theme.yaml @@ -0,0 +1,20 @@ +--- +id: io.github.ntran.sn-theme-muteddark +github: ntran/sn-theme-muteddark +main: dist/dist.css + +name: Muted Dark +content_type: SN|Theme +area: themes +version: 1.0.9 +marketing_url: https://github.com/ntran/sn-theme-muteddark +thumbnail_url: https://raw.githubusercontent.com/ntran/sn-theme-muteddark/master/thumbnail.png +description: A dark theme with muted colors for Standard Notes + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#1e1e1e' + foreground_color: '#1e1e1e' + border_color: '#127766' +... diff --git a/notes/standardnotes-extensions/extensions/no-distraction-dynamic-theme.yaml b/notes/standardnotes-extensions/extensions/no-distraction-dynamic-theme.yaml new file mode 100644 index 0000000..9c7502a --- /dev/null +++ b/notes/standardnotes-extensions/extensions/no-distraction-dynamic-theme.yaml @@ -0,0 +1,19 @@ +--- +id: com.iganesh.theme-no-distraction-dynamic +github: iganeshk/sn-theme-no-distraction-dynamic +main: dist/dist.css + +name: No Distraction (Dynamic) +layerable: true +content_type: SN|Theme +area: themes +version: 1.0.0 +marketing_url: https://standardnotes.org/extensions/dynamic +description: A smart theme that minimizes the tags and notes panels when they are not in use. + +dock_icon: + type: svg + source: |- + + # Shuffle Icon from Entypo by Daniel Bruce +... diff --git a/notes/standardnotes-extensions/extensions/no-distraction-theme.yaml b/notes/standardnotes-extensions/extensions/no-distraction-theme.yaml new file mode 100644 index 0000000..519dc0d --- /dev/null +++ b/notes/standardnotes-extensions/extensions/no-distraction-theme.yaml @@ -0,0 +1,19 @@ +--- +id: org.standardnotes.theme-no-distraction +npm: sn-theme-no-distraction +github: standardnotes/no-distraction-theme +main: dist/dist.css + +name: No Distraction +content_type: SN|Theme +area: themes +version: 1.2.2 +layerable: true +marketing_url: https://standardnotes.org/extensions/no-distraction +description: A theme for focusing on your writing. + +dock_icon: + type: svg + source: |- + +... diff --git a/notes/standardnotes-extensions/extensions/nord-theme.yaml b/notes/standardnotes-extensions/extensions/nord-theme.yaml new file mode 100644 index 0000000..4b18ca9 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/nord-theme.yaml @@ -0,0 +1,19 @@ +id: io.github.lzambarda.sn-nord-theme +github: lzambarda/sn-nord-theme +main: theme.css + +name: Nord Theme +content_type: SN|Theme +area: themes +version: 0.0.2 +marketing_url: https://github.com/lzambarda/sn-nord-theme +thumbnail_url: https://raw.githubusercontent.com/lzambarda/sn-nord-theme/master/preview.png +description: Standard Notes theme inspired by the magnificent Nord Theme. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#5e81ac' + foreground_color: '#eceff4' + border_color: '#5e81ac' +... diff --git a/notes/standardnotes-extensions/extensions/one-dark-theme.yaml b/notes/standardnotes-extensions/extensions/one-dark-theme.yaml new file mode 100644 index 0000000..7449f2d --- /dev/null +++ b/notes/standardnotes-extensions/extensions/one-dark-theme.yaml @@ -0,0 +1,20 @@ +--- +id: org.matt-anderson.sn-onedark +github: matta9001/sn-onedark +main: dist/dist.css + +name: One Dark +content_type: SN|Theme +area: themes +version: 1.3.3 +marketing_url: https://github.com/matta9001/sn-onedark +thumbnail_url: https://raw.githubusercontent.com/matta9001/sn-onedark/main/colors.png +description: Atom one dark background colors for Standard Notes. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#61afef' + foreground_color: '#ffffff' + border_color: '#61afef' +... diff --git a/notes/standardnotes-extensions/extensions/one-darker-theme.yaml b/notes/standardnotes-extensions/extensions/one-darker-theme.yaml new file mode 100644 index 0000000..8f0840c --- /dev/null +++ b/notes/standardnotes-extensions/extensions/one-darker-theme.yaml @@ -0,0 +1,20 @@ +--- +id: io.github.eenpadvinder.standardnotes-theme-one-darker +github: eenpadvinder/standardnotes-theme-one-darker +main: dist/dist.css + +name: One Dark Darker +content_type: SN|Theme +area: themes +version: 0.2.1 +marketing_url: https://github.com/eenpadvinder/standardnotes-theme-one-darker +thumbnail_url: https://raw.githubusercontent.com/eenpadvinder/standardnotes-theme-one-darker/master/preview.png +description: VS Code One Dark Darker theme for Standard Notes. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#181a1f' + foreground_color: '#181a1f' + border_color: '#d55fde' +... diff --git a/notes/standardnotes-extensions/extensions/overcast-theme.yaml b/notes/standardnotes-extensions/extensions/overcast-theme.yaml new file mode 100644 index 0000000..d97e886 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/overcast-theme.yaml @@ -0,0 +1,20 @@ +--- +id: com.ceiphr.overcast +github: ceiphr/sn-overcast-theme +main: dist/dist.css + +name: Overcast +content_type: SN|Theme +area: themes +version: 1.2.0 +description: Overcast to become cloudy or dark — just like this theme. +marketing_url: https://github.com/ceiphr/sn-overcast-theme +thumbnail_url: https://i.imgur.com/KDnyBGx.png + +statusBar: dark-content +dock_icon: + type: circle + background_color: "#039be5" + foreground_color: "#19181a" + border_color: "#039be5" +... diff --git a/notes/standardnotes-extensions/extensions/pencil-theme.yaml b/notes/standardnotes-extensions/extensions/pencil-theme.yaml new file mode 100644 index 0000000..cb5f243 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/pencil-theme.yaml @@ -0,0 +1,20 @@ +--- +id: io.github.alecstein.sn-pencil-theme +github: alecstein/sn-pencil-theme +main: dist/dist.css + +name: Pencil +content_type: SN|Theme +area: themes +version: 0.1.0 +marketing_url: https://github.com/alecstein/sn-pencil-theme +thumbnail_url: https://raw.githubusercontent.com/alecstein/sn-less-distraction/master/screenshot.png +description: A dark, writing-oriented theme. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#AE422F' + foreground_color: '#000000' + border_color: '#AE422F' +... diff --git a/notes/standardnotes-extensions/extensions/plus-editor.yaml b/notes/standardnotes-extensions/extensions/plus-editor.yaml new file mode 100644 index 0000000..b2cb414 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/plus-editor.yaml @@ -0,0 +1,15 @@ +--- +id: org.standardnotes.plus-editor +npm: sn-plus-editor +github: standardnotes/plus-editor +main: dist/index.html + +name: Plus Editor +content_type: SN|Component +area: editor-editor +version: 1.5.0 +marketing_url: https://standardnotes.org/extensions/plus-editor +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/editors/plus-editor.jpg +description: From highlighting to custom font sizes and colors, to tables and lists, this editor is perfect for crafting any document. +flags: [] +... diff --git a/notes/standardnotes-extensions/extensions/pure-black-theme.yaml b/notes/standardnotes-extensions/extensions/pure-black-theme.yaml new file mode 100644 index 0000000..f8397ba --- /dev/null +++ b/notes/standardnotes-extensions/extensions/pure-black-theme.yaml @@ -0,0 +1,20 @@ +--- +id: io.github.christianhans.sn-pure-black-theme +github: christianhans/sn-pure-black-theme +main: dist/dist.css + +name: Pure Black +content_type: SN|Theme +area: themes +version: 1.0.9 +marketing_url: https://github.com/christianhans/sn-pure-black-theme +thumbnail_url: https://raw.githubusercontent.com/christianhans/sn-pure-black-theme/master/preview1.png +description: Theme optimized for Optimized for OLED devices such as iPhone X. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#000000' + foreground_color": '#FAFBFF' + border_color: '#2A2A2B' +... diff --git a/notes/standardnotes-extensions/extensions/rich-markdown-editor.yaml b/notes/standardnotes-extensions/extensions/rich-markdown-editor.yaml new file mode 100644 index 0000000..9b12d22 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/rich-markdown-editor.yaml @@ -0,0 +1,15 @@ +--- +id: com.github.arturolinares.sn-rme +npm: sn-advanced-markdown-editor +github: arturolinares/sn-rme +main: build/index.html + +name: Rich Markdown Editor +content_type: SN|Component +area: editor-editor +version: 0.18.0 +marketing_url: https://github.com/arturolinares/sn-rme +thumbnail_url: https://github.com/arturolinares/sn-rme/raw/master/build/logo512.png +description: A WYSIWYG Markdown editor that supports youtube embeds. +flags: [] +... diff --git a/notes/standardnotes-extensions/extensions/secure-spreadsheets.yaml b/notes/standardnotes-extensions/extensions/secure-spreadsheets.yaml new file mode 100644 index 0000000..2070819 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/secure-spreadsheets.yaml @@ -0,0 +1,15 @@ +--- +id: org.standardnotes.standard-sheets +npm: sn-spreadsheets +github: standardnotes/secure-spreadsheets +main: dist/index.html + +name: Secure Spreadsheets +content_type: SN|Component +area: editor-editor +version: 1.4.0 +marketing_url: +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/editors/spreadsheets.png +description: A powerful spreadsheet editor with formatting and formula support. Not recommended for large data sets, as encryption of such data may decrease editor performance. +flags: [] +... diff --git a/notes/standardnotes-extensions/extensions/simple-task-editor.yaml b/notes/standardnotes-extensions/extensions/simple-task-editor.yaml new file mode 100644 index 0000000..30d3d1a --- /dev/null +++ b/notes/standardnotes-extensions/extensions/simple-task-editor.yaml @@ -0,0 +1,15 @@ +--- +id: org.standardnotes.simple-task-editor +npm: sn-simple-task-editor +github: standardnotes/simple-task-editor +main: dist/index.html + +name: Simple Task Editor +content_type: SN|Component +area: editor-editor +version: 1.3.7 +marketing_url: https://standardnotes.org/extensions/simple-task-editor +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/editors/task-editor.jpg +description: A great way to manage short-term and long-term to-do's. You can mark tasks as completed, change their order, and edit the text naturally in place. +flags: [] +... diff --git a/notes/standardnotes-extensions/extensions/slate-theme.yaml b/notes/standardnotes-extensions/extensions/slate-theme.yaml new file mode 100644 index 0000000..314b452 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/slate-theme.yaml @@ -0,0 +1,20 @@ +--- +id: space.yuggoth.sn-slate-theme +github: yithian/slate-theme/ +main: dist/standard-notes.css + +name: Slate +content_type: SN|Theme +area: themes +version: v2.2.0 +marketing_url: https://github.com/yithian/slate-theme +thumbnail_url: https://github.com/yithian/slate-theme/raw/main/images/sn-screenshot.png +description: A theme with shady grey and mossy green highlights. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#252A2F' + foreground_color: '#252A2F' + border_color: '#8A9A5B' +... diff --git a/notes/standardnotes-extensions/extensions/solarized-dark-theme.yaml b/notes/standardnotes-extensions/extensions/solarized-dark-theme.yaml new file mode 100644 index 0000000..377579d --- /dev/null +++ b/notes/standardnotes-extensions/extensions/solarized-dark-theme.yaml @@ -0,0 +1,21 @@ +--- +id: org.standardnotes.theme-solarized-dark +npm: sn-theme-solarized-dark +github: standardnotes/solarized-dark-theme +main: dist/dist.css + +name: Solarized Dark +content_type: SN|Theme +area: themes +version: 1.2.1 +marketing_url: https://standardnotes.org/extensions/solarized-dark +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/themes/solarized-dark.jpg +description: The perfect theme for any time. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#2AA198' + foreground_color: '#ffffff' + border_color: '#2AA198' +... diff --git a/notes/standardnotes-extensions/extensions/tangerine-theme.yaml b/notes/standardnotes-extensions/extensions/tangerine-theme.yaml new file mode 100644 index 0000000..bd90881 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/tangerine-theme.yaml @@ -0,0 +1,20 @@ +--- +id: io.shompoe.sn-tangerine-theme +github: shompoe/sn-tangerine-theme +main: dist/dist.css + +name: Tangerine Theme +content_type: SN|Theme +area: themes +version: 2.0.3 +marketing_url: https://github.com/shompoe/sn-tangerine-theme +thumbnail_url: https://raw.githubusercontent.com/shompoe/sn-tangerine-theme/master/preview.png +description: Theme based on the Gruvbox Dark Theme with more orange highlights. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#D79921' + foreground_color: '#076678' + border_color: '#D79921' +... diff --git a/notes/standardnotes-extensions/extensions/titanium-theme.yaml b/notes/standardnotes-extensions/extensions/titanium-theme.yaml new file mode 100644 index 0000000..e795ae1 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/titanium-theme.yaml @@ -0,0 +1,21 @@ +--- +id: org.standardnotes.theme-titanium +npm: sn-theme-titanium +github: standardnotes/titanium-theme +main: dist/dist.css + +name: Titanium +content_type: SN|Theme +area: themes +version: 1.2.2 +marketing_url: https://standardnotes.org/extensions/titanium +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/themes/titanium-with-mobile.jpg +description: Light on the eyes, heavy on the spirit. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#6e2b9e' + foreground_color: '#ffffff' + border_color: '#6e2b9e' +... diff --git a/notes/standardnotes-extensions/extensions/token-vault.yaml b/notes/standardnotes-extensions/extensions/token-vault.yaml new file mode 100644 index 0000000..ad0dbd5 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/token-vault.yaml @@ -0,0 +1,14 @@ +--- +id: org.standardnotes.token-vault +npm: sn-token-vault +github: standardnotes/token-vault +main: dist/index.html + +name: TokenVault +content_type: SN|Component +area: editor-editor +version: 2.0.1 +thumbnail_url: https://standard-notes.s3.amazonaws.com/screenshots/models/editors/token-vault.png +description: Encrypt and protect your 2FA secrets for all your internet accounts. TokenVault handles your 2FA secrets so that you never lose them again, or have to start over when you get a new device. +flags: [] +... diff --git a/notes/standardnotes-extensions/extensions/vim-editor.yaml b/notes/standardnotes-extensions/extensions/vim-editor.yaml new file mode 100644 index 0000000..93f7e90 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/vim-editor.yaml @@ -0,0 +1,15 @@ +--- +id: org.standardnotes.vim-editor +npm: sn-vim-editor +github: standardnotes/vim-editor +main: index.html + +name: Vim Editor +content_type: SN|Component +area: editor-editor +version: 1.3.7 +marketing_url: https://standardnotes.org/extensions/vim-editor +thumbnail_url: https://s3.amazonaws.com/standard-notes/screenshots/models/editors/vim.jpg +description: A code editor with Vim key bindings. +flags: [] +... diff --git a/notes/standardnotes-extensions/extensions/vs-code-theme.yaml b/notes/standardnotes-extensions/extensions/vs-code-theme.yaml new file mode 100644 index 0000000..7ca66a0 --- /dev/null +++ b/notes/standardnotes-extensions/extensions/vs-code-theme.yaml @@ -0,0 +1,20 @@ +--- +id: io.github.bscott.sn-theme-vscode +github: bscott/sn-theme-vscode +main: dist/dist.css + +name: VS Code Theme +content_type: SN|Theme +area: themes +version: 1.0.16 +marketing_url: https://github.com/bscott/sn-theme-vscode +thumbnail_url: https://raw.githubusercontent.com/bscottl/sn-theme-vscode/master/screenshot.png +description: A theme for Standard Notes inspired by the VS Code Dark theme. + +statusBar: dark-content +dock_icon: + type: circle + background_color: '#252526' + foreground_color: '#D4D4D4' + border_color: '#7ba78a' +... diff --git a/notes/standardnotes-extensions/requirements.txt b/notes/standardnotes-extensions/requirements.txt new file mode 100644 index 0000000..0a36425 --- /dev/null +++ b/notes/standardnotes-extensions/requirements.txt @@ -0,0 +1,2 @@ +pyyaml>=5.1.1 +requests>=2.22.0