adding standardnotes-extensions as submodule
This commit is contained in:
parent
05c1a74e9c
commit
426d446d0c
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "notes/standardnotes-extensions"]
|
||||
path = notes/standardnotes-extensions
|
||||
url = https://github.com/iganeshk/standardnotes-extensions.git
|
167
notes/standardnotes-extensions/.gitignore
vendored
Normal file
167
notes/standardnotes-extensions/.gitignore
vendored
Normal file
@ -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
|
||||
|
||||
|
8
notes/standardnotes-extensions/Dockerfile
Normal file
8
notes/standardnotes-extensions/Dockerfile
Normal file
@ -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
|
21
notes/standardnotes-extensions/LICENSE
Normal file
21
notes/standardnotes-extensions/LICENSE
Normal file
@ -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.
|
154
notes/standardnotes-extensions/README.md
Normal file
154
notes/standardnotes-extensions/README.md
Normal file
@ -0,0 +1,154 @@
|
||||

|
||||
|
||||
## 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
|
||||
<p align="center">
|
||||
<img alt="Standard Notes Extension Repository Demo" src="https://github.com/iganeshk/standardnotes-extensions/raw/assets/standardnotes_demo.gif" width="80%" />
|
||||
</p>
|
||||
|
||||
### 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
|
||||
|
283
notes/standardnotes-extensions/build_repo.py
Normal file
283
notes/standardnotes-extensions/build_repo.py
Normal file
@ -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()
|
15
notes/standardnotes-extensions/extensions/action-bar.yaml
Normal file
15
notes/standardnotes-extensions/extensions/action-bar.yaml
Normal file
@ -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: []
|
||||
...
|
@ -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'
|
||||
...
|
@ -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
|
||||
...
|
15
notes/standardnotes-extensions/extensions/bold-editor.yaml
Normal file
15
notes/standardnotes-extensions/extensions/bold-editor.yaml
Normal file
@ -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: []
|
||||
...
|
14
notes/standardnotes-extensions/extensions/code-editor.yaml
Normal file
14
notes/standardnotes-extensions/extensions/code-editor.yaml
Normal file
@ -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.
|
||||
...
|
20
notes/standardnotes-extensions/extensions/dracula-theme.yaml
Normal file
20
notes/standardnotes-extensions/extensions/dracula-theme.yaml
Normal file
@ -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'
|
||||
...
|
20
notes/standardnotes-extensions/extensions/dynamic-theme.yaml
Normal file
20
notes/standardnotes-extensions/extensions/dynamic-theme.yaml
Normal file
@ -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: |-
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><path d="M15.093 6.694h0.92v2.862l3.987-4.024-3.988-4.025v2.387h-0.92c-3.694 0-5.776 2.738-7.614 5.152-1.652 2.172-3.080 4.049-5.386 4.049h-2.092v2.799h2.093c3.694 0 5.776-2.736 7.614-5.152 1.652-2.173 3.080-4.048 5.386-4.048zM5.41 8.458c0.158-0.203 0.316-0.412 0.477-0.623 0.39-0.514 0.804-1.055 1.252-1.596-1.322-1.234-2.915-2.144-5.046-2.144h-2.093v2.799h2.093c1.327 0 2.362 0.623 3.317 1.564zM16.012 13.294h-0.92c-1.407 0-2.487-0.701-3.491-1.738-0.1 0.131-0.201 0.264-0.303 0.397-0.441 0.58-0.915 1.201-1.439 1.818 1.356 1.324 3 2.324 5.232 2.324h0.92v2.398l3.989-4.025-3.988-4.025v2.851z"></path></svg>
|
||||
# Shuffle Icon from Entypo by Daniel Bruce
|
||||
...
|
@ -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'
|
||||
...
|
20
notes/standardnotes-extensions/extensions/focus-theme.yaml
Normal file
20
notes/standardnotes-extensions/extensions/focus-theme.yaml
Normal file
@ -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'
|
||||
...
|
@ -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
|
||||
...
|
21
notes/standardnotes-extensions/extensions/futura-theme.yaml
Normal file
21
notes/standardnotes-extensions/extensions/futura-theme.yaml
Normal file
@ -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'
|
||||
...
|
14
notes/standardnotes-extensions/extensions/github-push.yaml
Normal file
14
notes/standardnotes-extensions/extensions/github-push.yaml
Normal file
@ -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.
|
||||
...
|
@ -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'
|
||||
...
|
@ -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'
|
||||
...
|
@ -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'
|
||||
...
|
@ -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: []
|
||||
...
|
@ -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: []
|
||||
...
|
@ -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'
|
||||
...
|
14
notes/standardnotes-extensions/extensions/math-editor.yaml
Normal file
14
notes/standardnotes-extensions/extensions/math-editor.yaml
Normal file
@ -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.
|
||||
...
|
12
notes/standardnotes-extensions/extensions/mfa-link.yaml
Normal file
12
notes/standardnotes-extensions/extensions/mfa-link.yaml
Normal file
@ -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.
|
||||
...
|
@ -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'
|
||||
...
|
@ -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: []
|
||||
...
|
@ -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'
|
||||
...
|
@ -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'
|
||||
...
|
@ -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: |-
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><path d="M15.093 6.694h0.92v2.862l3.987-4.024-3.988-4.025v2.387h-0.92c-3.694 0-5.776 2.738-7.614 5.152-1.652 2.172-3.080 4.049-5.386 4.049h-2.092v2.799h2.093c3.694 0 5.776-2.736 7.614-5.152 1.652-2.173 3.080-4.048 5.386-4.048zM5.41 8.458c0.158-0.203 0.316-0.412 0.477-0.623 0.39-0.514 0.804-1.055 1.252-1.596-1.322-1.234-2.915-2.144-5.046-2.144h-2.093v2.799h2.093c1.327 0 2.362 0.623 3.317 1.564zM16.012 13.294h-0.92c-1.407 0-2.487-0.701-3.491-1.738-0.1 0.131-0.201 0.264-0.303 0.397-0.441 0.58-0.915 1.201-1.439 1.818 1.356 1.324 3 2.324 5.232 2.324h0.92v2.398l3.989-4.025-3.988-4.025v2.851z"></path></svg>
|
||||
# Shuffle Icon from Entypo by Daniel Bruce
|
||||
...
|
@ -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: |-
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M424 64H88c-26.6 0-48 21.6-48 48v288c0 26.4 21.4 48 48 48h336c26.4 0 48-21.6 48-48V112c0-26.4-21.4-48-48-48zm0 336H88V176h336v224z"/></svg>
|
||||
...
|
19
notes/standardnotes-extensions/extensions/nord-theme.yaml
Normal file
19
notes/standardnotes-extensions/extensions/nord-theme.yaml
Normal file
@ -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'
|
||||
...
|
@ -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'
|
||||
...
|
@ -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'
|
||||
...
|
@ -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"
|
||||
...
|
20
notes/standardnotes-extensions/extensions/pencil-theme.yaml
Normal file
20
notes/standardnotes-extensions/extensions/pencil-theme.yaml
Normal file
@ -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'
|
||||
...
|
15
notes/standardnotes-extensions/extensions/plus-editor.yaml
Normal file
15
notes/standardnotes-extensions/extensions/plus-editor.yaml
Normal file
@ -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: []
|
||||
...
|
@ -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'
|
||||
...
|
@ -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: []
|
||||
...
|
@ -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: []
|
||||
...
|
@ -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: []
|
||||
...
|
20
notes/standardnotes-extensions/extensions/slate-theme.yaml
Normal file
20
notes/standardnotes-extensions/extensions/slate-theme.yaml
Normal file
@ -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'
|
||||
...
|
@ -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'
|
||||
...
|
@ -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'
|
||||
...
|
@ -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'
|
||||
...
|
14
notes/standardnotes-extensions/extensions/token-vault.yaml
Normal file
14
notes/standardnotes-extensions/extensions/token-vault.yaml
Normal file
@ -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: []
|
||||
...
|
15
notes/standardnotes-extensions/extensions/vim-editor.yaml
Normal file
15
notes/standardnotes-extensions/extensions/vim-editor.yaml
Normal file
@ -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: []
|
||||
...
|
20
notes/standardnotes-extensions/extensions/vs-code-theme.yaml
Normal file
20
notes/standardnotes-extensions/extensions/vs-code-theme.yaml
Normal file
@ -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'
|
||||
...
|
2
notes/standardnotes-extensions/requirements.txt
Normal file
2
notes/standardnotes-extensions/requirements.txt
Normal file
@ -0,0 +1,2 @@
|
||||
pyyaml>=5.1.1
|
||||
requests>=2.22.0
|
Loading…
x
Reference in New Issue
Block a user