Merge branch 'dmitmel-master'
This commit is contained in:
commit
34fb04a9d2
|
@ -32,8 +32,7 @@ selection_bg = base16_colors[0x2]
|
|||
selection_fg = fg
|
||||
|
||||
ansi_colors = [
|
||||
base16_colors[int(i, 16)]
|
||||
for i in "0 8 B A D E C 5 3 8 B A D E C 7 9 F 1 2 4 6".split()
|
||||
base16_colors[int(i, 16)] for i in "0 8 B A D E C 5 3 8 B A D E C 7 9 F 1 2 4 6".split()
|
||||
]
|
||||
|
||||
link_color = ansi_colors[0xC]
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
import _theme as theme
|
||||
|
||||
|
||||
print(
|
||||
"""\
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
@ -27,9 +28,7 @@ def print_color(key_name, color):
|
|||
<key>Blue Component</key>
|
||||
<real>{}</real>
|
||||
</dict>\
|
||||
""".format(
|
||||
key_name, r, g, b
|
||||
)
|
||||
""".format(key_name, r, g, b)
|
||||
)
|
||||
|
||||
|
||||
|
@ -44,9 +43,7 @@ for index, color in enumerate(theme.ansi_colors[:16]):
|
|||
print_color("Ansi " + str(index), color)
|
||||
print_color("Link", theme.link_color)
|
||||
|
||||
print(
|
||||
"""\
|
||||
print("""\
|
||||
</dict>
|
||||
</plist>\
|
||||
"""
|
||||
)
|
||||
""")
|
||||
|
|
|
@ -7,8 +7,6 @@ with open(os.path.join(os.path.dirname(__file__), "prismjs-theme-src.css")) as f
|
|||
css_src = f.read()
|
||||
|
||||
for var_name, color in theme.css_variables.items():
|
||||
css_src = css_src.replace(
|
||||
"var(--{}{})".format(theme.css_variables_prefix, var_name), color
|
||||
)
|
||||
css_src = css_src.replace("var(--{}{})".format(theme.css_variables_prefix, var_name), color)
|
||||
|
||||
print(css_src)
|
||||
|
|
|
@ -8,11 +8,4 @@ import _theme as theme
|
|||
# 0,0,0,0,170,170,170,170,85,85,85,85,255,255,255,255
|
||||
|
||||
for i in range(3):
|
||||
print(
|
||||
",".join(
|
||||
[
|
||||
str(int(color[2 * i + 1 : 2 * i + 3], 16))
|
||||
for color in theme.ansi_colors[:16]
|
||||
]
|
||||
)
|
||||
)
|
||||
print(",".join([str(int(color[2 * i + 1:2 * i + 3], 16)) for color in theme.ansi_colors[:16]]))
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
import _theme as theme
|
||||
|
||||
|
||||
print(":root {")
|
||||
for var_name, color in theme.css_variables.items():
|
||||
print(" --{}{}: {};".format(theme.css_variables_prefix, var_name, color))
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
import _theme as theme
|
||||
|
||||
|
||||
print("let dotfiles_colorscheme_name = '{}'".format(theme.name))
|
||||
print("let dotfiles_colorscheme_base16_name = '{}'".format(theme.base16_name))
|
||||
print("let dotfiles_colorscheme_base16_colors = [")
|
||||
|
|
|
@ -25,11 +25,7 @@ colors = {
|
|||
|
||||
for color_brightness in [False, True]:
|
||||
for color_index, color_name in enumerate(ANSI_COLOR_NAMES):
|
||||
color = theme.ansi_colors[
|
||||
color_index + int(color_brightness) * len(ANSI_COLOR_NAMES)
|
||||
]
|
||||
colors[
|
||||
"terminal.ansi" + ("Bright" if color_brightness else "") + color_name
|
||||
] = color
|
||||
color = theme.ansi_colors[color_index + int(color_brightness) * len(ANSI_COLOR_NAMES)]
|
||||
colors["terminal.ansi" + ("Bright" if color_brightness else "") + color_name] = color
|
||||
|
||||
print(json.dumps(colors, ensure_ascii=False, indent=2))
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
import _theme as theme
|
||||
|
||||
|
||||
print("[Scheme]")
|
||||
print("Name=dmitmel's dotfiles colorscheme")
|
||||
print("ColorForeground={}".format(theme.fg))
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
import _theme as theme
|
||||
|
||||
|
||||
for attr in [
|
||||
"bg",
|
||||
"fg",
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
setlocal nofoldenable foldmethod=manual
|
|
@ -1,3 +1 @@
|
|||
let g:haskall_test = 1
|
||||
setlocal foldmethod<
|
||||
setlocal foldtext<
|
||||
setlocal foldmethod< foldtext<
|
||||
|
|
|
@ -1,2 +1 @@
|
|||
setlocal foldmethod<
|
||||
setlocal foldtext<
|
||||
setlocal foldmethod< foldtext<
|
||||
|
|
|
@ -1,2 +1 @@
|
|||
setlocal foldmethod<
|
||||
setlocal foldtext<
|
||||
setlocal foldmethod< foldtext<
|
||||
|
|
|
@ -4,5 +4,4 @@
|
|||
" sourced in `syntax/nginx.vim` in vim-polyglot, which resets the `commentstring`
|
||||
" set in `ftplugin/nginx.vim` and sets `comments` to some garbage. This script
|
||||
" undoes that damage.
|
||||
setlocal comments<
|
||||
setlocal commentstring=#%s
|
||||
setlocal comments< commentstring=#%s
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
let g:coc_global_extensions += ['coc-pyright']
|
||||
let g:coc_filetypes += ['python']
|
||||
" let g:coc_user_config['pyls.plugins.pycodestyle.ignore'] = ['E501']
|
||||
|
||||
" let g:coc_user_config['python.autocomplete.showAdvancedMembers'] = v:false
|
||||
let g:coc_user_config['python'] = {
|
||||
\ 'formatting': { 'provider': 'black' },
|
||||
\ 'formatting': {
|
||||
\ 'provider': 'yapf',
|
||||
\ 'yapfArgs': ['--style=' . simplify(g:nvim_dotfiles_dir.'/../python/yapf.ini')]
|
||||
\ },
|
||||
\ 'linting': {
|
||||
\ 'pylintEnabled': v:false,
|
||||
\ 'flake8Enabled': v:true,
|
||||
\ 'flake8Args': ['--ignore', 'E501'],
|
||||
\ 'flake8Args': ['--config=' . simplify(g:nvim_dotfiles_dir.'/../python/flake8.ini')],
|
||||
\ },
|
||||
\ }
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
Plug 'tpope/vim-repeat'
|
||||
" if g:vim_ide
|
||||
Plug 'tomtom/tcomment_vim'
|
||||
Plug 'glts/vim-textobj-comment'
|
||||
" else
|
||||
" Plug 'tpope/vim-commentary'
|
||||
" endif
|
||||
|
@ -44,9 +45,6 @@
|
|||
Plug 'vim-airline/vim-airline'
|
||||
Plug 'tpope/vim-obsession'
|
||||
Plug 'romainl/vim-qf'
|
||||
if g:vim_ide
|
||||
Plug 'dyng/ctrlsf.vim'
|
||||
endif
|
||||
" }}}
|
||||
|
||||
" Git {{{
|
||||
|
|
|
@ -58,23 +58,17 @@ set commentstring=//%s
|
|||
|
||||
|
||||
" Cursor and Scrolling {{{
|
||||
|
||||
set number
|
||||
set relativenumber
|
||||
set cursorline
|
||||
|
||||
set number relativenumber cursorline
|
||||
" remember cursor position
|
||||
augroup vimrc-editing-remember-cursor-position
|
||||
autocmd!
|
||||
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exec "normal! g`\"" | endif
|
||||
augroup END
|
||||
|
||||
" }}}
|
||||
|
||||
|
||||
" Wrapping {{{
|
||||
set nowrap
|
||||
set colorcolumn=81,101,121
|
||||
set nowrap colorcolumn=81,101,121
|
||||
" }}}
|
||||
|
||||
|
||||
|
@ -236,6 +230,7 @@ set commentstring=//%s
|
|||
" Remove the mappings that I won't use
|
||||
let g:tcomment_maps = 0
|
||||
|
||||
" Closely replicate the behavior of tpope/vim-commentary
|
||||
nmap <silent> gc <Plug>TComment_gc
|
||||
nmap <silent> gcc <Plug>TComment_gcc
|
||||
nmap <silent> gC <Plug>TComment_gcb
|
||||
|
@ -244,6 +239,8 @@ set commentstring=//%s
|
|||
nmap <silent> gCC m'o<Esc>''<Plug>TComment_gcb+
|
||||
xnoremap <silent> gc :TCommentMaybeInline<CR>
|
||||
xnoremap <silent> gC :TCommentBlock<CR>
|
||||
" Make an alias for the comment text object
|
||||
omap <silent> gc ac
|
||||
|
||||
" }}}
|
||||
|
||||
|
|
|
@ -20,6 +20,23 @@ nnoremap <silent><expr> <CR> empty(&buftype) ? ":write<bar>wall\<CR>" : "\<CR>"
|
|||
command! -bang -nargs=* Rg call fzf#vim#grep(s:rg_cmd . ' --column --line-number --no-heading --fixed-strings --smart-case --color always ' . shellescape(<q-args>), 1, <bang>0)
|
||||
command! -bang -nargs=* Find Rg<bang> <args>
|
||||
endif
|
||||
|
||||
nnoremap <leader>/ :<C-u>grep<space>
|
||||
|
||||
function! s:grep_mapping_star_normal()
|
||||
let word = expand("<cword>")
|
||||
if !empty(word)
|
||||
call feedkeys(":\<C-u>grep " . shellescape('\b' . word . '\b'), 'n')
|
||||
endif
|
||||
endfunction
|
||||
function! s:grep_mapping_star_visual()
|
||||
let tmp = @"
|
||||
normal! y
|
||||
call feedkeys(":\<C-u>grep " . shellescape(@"), 'n')
|
||||
let @" = tmp
|
||||
endfunction
|
||||
nnoremap <leader>* <Cmd>call <SID>grep_mapping_star_normal()<CR>
|
||||
xnoremap <leader>* <Cmd>call <SID>grep_mapping_star_visual()<CR>
|
||||
" }}}
|
||||
|
||||
|
||||
|
@ -29,7 +46,10 @@ nnoremap <silent><expr> <CR> empty(&buftype) ? ":write<bar>wall\<CR>" : "\<CR>"
|
|||
let g:loaded_netrwPlugin = 1
|
||||
" re-add Netrw's gx mappings since we've disabled them
|
||||
nnoremap <silent> gx <Cmd>call netrw#BrowseX(expand('<cfile>'),netrw#CheckIfRemote())<CR>
|
||||
xnoremap <silent> gx <Cmd>call netrw#BrowseXVis()<CR>
|
||||
" This one can be rewritten in a way to not clobber the yank register...
|
||||
" Most notably, the built-in mapping, which uses netrw#BrowseXVis(), doesn't
|
||||
" work and breaks the editor, at least for me.
|
||||
xnoremap <silent> gx y:<C-u>call netrw#BrowseX(@",netrw#CheckIfRemote())<CR>
|
||||
" }}}
|
||||
|
||||
|
||||
|
@ -176,10 +196,3 @@ nnoremap <silent><expr> <CR> empty(&buftype) ? ":write<bar>wall\<CR>" : "\<CR>"
|
|||
augroup END
|
||||
|
||||
" }}}
|
||||
|
||||
|
||||
" CtrlSF {{{
|
||||
nmap <leader>/ <Plug>CtrlSFPrompt
|
||||
nmap <leader>* <Plug>CtrlSFCwordPath
|
||||
xmap <leader>* <Plug>CtrlSFVwordPath
|
||||
" }}}
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
[flake8]
|
||||
ignore =
|
||||
# Indent is not a multiple of 4
|
||||
E111
|
||||
# Indent is not a multiple of 4 for comments
|
||||
E114
|
||||
# Indent for continuation lines is smaller than expected
|
||||
E121
|
||||
# Import not at the top of the file
|
||||
E402
|
||||
# Line too long
|
||||
E501
|
|
@ -0,0 +1,9 @@
|
|||
[style]
|
||||
based_on_style = google
|
||||
column_limit = 99
|
||||
indent_width = 2
|
||||
continuation_indent_width = 2
|
||||
blank_lines_between_top_level_imports_and_variables = 2
|
||||
dedent_closing_brackets = true
|
||||
coalesce_brackets = true
|
||||
spaces_around_power_operator = true
|
|
@ -4,7 +4,6 @@ import subprocess
|
|||
from pathlib import Path
|
||||
from typing import Iterable, NoReturn
|
||||
|
||||
|
||||
if os.name == "posix":
|
||||
DOTFILES_CONFIG_DIR: Path = Path.home() / ".config" / "dotfiles"
|
||||
DOTFILES_CACHE_DIR: Path = Path.home() / ".cache" / "dotfiles"
|
||||
|
@ -14,9 +13,7 @@ def platform_not_supported_error() -> NoReturn:
|
|||
raise Exception("platform '{}' is not supported!".format(sys.platform))
|
||||
|
||||
|
||||
def run_chooser(
|
||||
choices: Iterable[str], prompt: str = None, async_read: bool = False
|
||||
) -> int:
|
||||
def run_chooser(choices: Iterable[str], prompt: str = None, async_read: bool = False) -> int:
|
||||
supports_result_index = True
|
||||
if os.isatty(sys.stderr.fileno()):
|
||||
process_args = [
|
||||
|
@ -38,9 +35,7 @@ def run_chooser(
|
|||
else:
|
||||
platform_not_supported_error()
|
||||
|
||||
chooser_process = subprocess.Popen(
|
||||
process_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE
|
||||
)
|
||||
chooser_process = subprocess.Popen(process_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
|
||||
|
||||
with chooser_process.stdin as pipe:
|
||||
for index, choice in enumerate(choices):
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
from colorama import Fore, Style, ansi
|
||||
|
||||
|
||||
COLORS = [ansi.code_to_chars(30 + color_index) for color_index in range(0, 8)]
|
||||
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import re
|
|||
from colors import COLORS, Style
|
||||
from system_info import get_system_info
|
||||
|
||||
|
||||
print("")
|
||||
|
||||
logo_lines, info_lines = get_system_info()
|
||||
|
|
|
@ -22,9 +22,7 @@ def get_system_info():
|
|||
username = getuser()
|
||||
hostname = _get_hostname()
|
||||
|
||||
info_lines.append(
|
||||
bright_colored(username, Fore.BLUE) + "@" + bright_colored(hostname, Fore.RED)
|
||||
)
|
||||
info_lines.append(bright_colored(username, Fore.BLUE) + "@" + bright_colored(hostname, Fore.RED))
|
||||
info_lines.append("")
|
||||
|
||||
distro_id, distro_name, distro_version, distro_codename = _get_distro_info()
|
||||
|
@ -94,9 +92,7 @@ def _get_users():
|
|||
terminals = users[name]
|
||||
|
||||
colored_name = bright_colored(name, Fore.BLUE)
|
||||
colored_terminals = [
|
||||
colored(str(term), Style.DIM, Fore.WHITE) for term in terminals
|
||||
]
|
||||
colored_terminals = [colored(str(term), Style.DIM, Fore.WHITE) for term in terminals]
|
||||
|
||||
terminals_str = ", ".join(colored_terminals)
|
||||
if len(colored_terminals) > 1:
|
||||
|
@ -140,14 +136,12 @@ def _get_disks():
|
|||
continue
|
||||
|
||||
usage = psutil.disk_usage(disk.mountpoint)
|
||||
result.append(
|
||||
(
|
||||
result.append((
|
||||
disk.mountpoint,
|
||||
humanize_bytes(usage.used),
|
||||
humanize_bytes(usage.total),
|
||||
colorize_percent(usage.percent, warning=70, critical=85),
|
||||
)
|
||||
)
|
||||
))
|
||||
|
||||
return result
|
||||
|
||||
|
|
|
@ -9,35 +9,29 @@ from typing import Any, Generator, Optional, Union
|
|||
import urllib.parse
|
||||
import urllib.request
|
||||
|
||||
|
||||
sys.path.insert(1, os.path.join(os.path.dirname(__file__), "..", "script-resources"))
|
||||
import common_script_utils
|
||||
|
||||
|
||||
DEFAULT_REGISTRY_DUMP_URL = "https://stronghold.crosscode.ru/~ccbot/emote-registry.json"
|
||||
|
||||
|
||||
if os.name == "posix":
|
||||
config_path: Path = (
|
||||
common_script_utils.DOTFILES_CONFIG_DIR / "copy-crosscode-emoji-url.ini"
|
||||
)
|
||||
default_registry_dump_file: Path = (
|
||||
common_script_utils.DOTFILES_CACHE_DIR / "dotfiles"
|
||||
)
|
||||
config_path: Path = (common_script_utils.DOTFILES_CONFIG_DIR / "copy-crosscode-emoji-url.ini")
|
||||
default_registry_dump_file: Path = (common_script_utils.DOTFILES_CACHE_DIR / "dotfiles")
|
||||
else:
|
||||
common_script_utils.platform_not_supported_error()
|
||||
config = ConfigParser(interpolation=None)
|
||||
config.read(config_path)
|
||||
|
||||
|
||||
emotes: list[dict[str, Any]] = []
|
||||
|
||||
|
||||
def emote_downloader_and_iterator() -> Generator[str, None, None]:
|
||||
global emotes
|
||||
|
||||
registry_dump_file: Optional[Union[str, Path]] = config.get(
|
||||
"default", "ccbot_emote_registry_dump_file", fallback=None
|
||||
)
|
||||
registry_dump_file: Optional[Union[
|
||||
str, Path]] = config.get("default", "ccbot_emote_registry_dump_file", fallback=None)
|
||||
if registry_dump_file is not None:
|
||||
registry_dump_file = os.path.expanduser(registry_dump_file)
|
||||
else:
|
||||
|
@ -57,9 +51,7 @@ def emote_downloader_and_iterator() -> Generator[str, None, None]:
|
|||
|
||||
assert emote_registry_data["version"] == 1
|
||||
|
||||
emotes = [emote for emote in emote_registry_data["list"]
|
||||
# if emote["safe"]
|
||||
]
|
||||
emotes = [emote for emote in emote_registry_data["list"]]
|
||||
|
||||
for emote in emotes:
|
||||
yield "{emote[ref]} [{emote[guild_name]}]".format(emote=emote)
|
||||
|
@ -77,16 +69,12 @@ if chosen_index >= 0:
|
|||
if config.getboolean("default", "add_emote_name_to_url", fallback=False):
|
||||
emote_url_query["name"] = [chosen_emote["name"]]
|
||||
|
||||
default_emote_image_size = config.getint(
|
||||
"default", "default_emote_image_size", fallback=None
|
||||
)
|
||||
default_emote_image_size = config.getint("default", "default_emote_image_size", fallback=None)
|
||||
if default_emote_image_size is not None:
|
||||
emote_url_query["size"] = [str(default_emote_image_size)]
|
||||
|
||||
emote_url_query_str = urllib.parse.urlencode(emote_url_query, doseq=True)
|
||||
emote_url_str = urllib.parse.urlunparse(
|
||||
emote_url._replace(query=emote_url_query_str)
|
||||
)
|
||||
emote_url_str = urllib.parse.urlunparse(emote_url._replace(query=emote_url_query_str))
|
||||
|
||||
common_script_utils.set_clipboard(emote_url_str)
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import sys
|
|||
import colorama
|
||||
import time
|
||||
|
||||
|
||||
DISCORD_EPOCH = 1420070400000 # milliseconds
|
||||
|
||||
user_snowflake = int(sys.argv[1])
|
||||
|
@ -13,9 +14,7 @@ user_snowflake = int(sys.argv[1])
|
|||
|
||||
def print_field(name, value):
|
||||
print(
|
||||
"{}{}:{} {}".format(
|
||||
colorama.Style.BRIGHT, name.rjust(21), colorama.Style.RESET_ALL, value
|
||||
)
|
||||
"{}{}:{} {}".format(colorama.Style.BRIGHT, name.rjust(21), colorama.Style.RESET_ALL, value)
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ import discord
|
|||
import sys
|
||||
import os
|
||||
|
||||
|
||||
guild_id = int(sys.argv[1])
|
||||
voice_channel_id = int(sys.argv[2])
|
||||
pulseaudio_device = sys.argv[3]
|
||||
|
@ -11,7 +12,6 @@ pulseaudio_device = sys.argv[3]
|
|||
with open(os.path.expanduser("~/.config/dotfiles/discord-tools-user-token.txt")) as f:
|
||||
bot_token = f.read().strip()
|
||||
|
||||
|
||||
bot = discord.Client()
|
||||
|
||||
|
||||
|
@ -30,9 +30,7 @@ async def on_ready():
|
|||
print("connected to {0} ({0.id}) in {1} ({1.id})".format(voice_channel, guild))
|
||||
|
||||
source = discord.FFmpegPCMAudio(pulseaudio_device, before_options="-f pulse")
|
||||
voice_client.play(
|
||||
source, after=lambda e: print("Player error: %s" % e) if e else None
|
||||
)
|
||||
voice_client.play(source, after=lambda e: print("Player error: %s" % e) if e else None)
|
||||
|
||||
|
||||
bot.run(bot_token, bot=False)
|
||||
|
|
|
@ -33,7 +33,6 @@ DISCORD_FLAGS = {
|
|||
"Verified Bot Developer": 1 << 17,
|
||||
}
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("user_snowflake", type=int)
|
||||
parser.add_argument("--bot-token", type=str)
|
||||
|
@ -45,16 +44,13 @@ user_snowflake = cli_args.user_snowflake
|
|||
|
||||
bot_token = cli_args.bot_token
|
||||
if bot_token is None:
|
||||
with open(
|
||||
os.path.expanduser("~/.config/dotfiles/discord-tools-bot-token.txt")
|
||||
) as f:
|
||||
with open(os.path.expanduser("~/.config/dotfiles/discord-tools-bot-token.txt")) as f:
|
||||
bot_token = f.read().strip()
|
||||
|
||||
image_size = cli_args.image_size
|
||||
if not (image_size is None or (image_size > 0 and image_size & (image_size - 1)) == 0):
|
||||
parser.error("image_size must be greater than zero and a power of two")
|
||||
|
||||
|
||||
try:
|
||||
opener = urllib.request.build_opener()
|
||||
# Don't send the User-Agent header, Discord blocks the default one
|
||||
|
@ -85,9 +81,7 @@ avatar_url = (
|
|||
raw_data["id"],
|
||||
raw_data["avatar"],
|
||||
"gif" if raw_data["avatar"].startswith("a_") else "png",
|
||||
)
|
||||
if raw_data["avatar"] is not None
|
||||
else default_avatar_url
|
||||
) if raw_data["avatar"] is not None else default_avatar_url
|
||||
)
|
||||
if image_size is not None:
|
||||
avatar_url += "?size={}".format(image_size)
|
||||
|
@ -115,7 +109,6 @@ else:
|
|||
user_flag_names.append(flag_name)
|
||||
data["Flags"] = ", ".join(user_flag_names)
|
||||
|
||||
|
||||
if cli_args.get_prop is None:
|
||||
max_name_length = max(map(len, data.keys()))
|
||||
for name, value in data.items():
|
||||
|
|
|
@ -10,19 +10,17 @@ from pathlib import Path
|
|||
import struct
|
||||
import json
|
||||
|
||||
|
||||
sys.path.insert(1, os.path.join(os.path.dirname(__file__), "..", "script-resources"))
|
||||
import factorio.property_tree
|
||||
|
||||
|
||||
with open(Path.home() / ".factorio" / "mods" / "mod-settings.dat", "rb") as f:
|
||||
|
||||
version_main: int
|
||||
version_major: int
|
||||
version_minor: int
|
||||
version_developer: int
|
||||
version_main, version_major, version_minor, version_developer = struct.unpack(
|
||||
"<HHHH", f.read(8)
|
||||
)
|
||||
version_main, version_major, version_minor, version_developer = struct.unpack("<HHHH", f.read(8))
|
||||
|
||||
always_false_flag = factorio.property_tree.read_bool(f)
|
||||
assert not always_false_flag
|
||||
|
|
|
@ -7,6 +7,7 @@ import json
|
|||
from sys import stdout
|
||||
import base64
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
encoding_names = ["utf8", "base16", "base32", "base64", "base85"]
|
||||
parser.add_argument("--encoding", "-e", choices=encoding_names, default="utf8")
|
||||
|
|
|
@ -1,11 +1,13 @@
|
|||
#!/usr/bin/python3
|
||||
#!/usr/bin/env python3
|
||||
# Taken from <https://unix.stackexchange.com/a/509417/411555>
|
||||
|
||||
import gi
|
||||
import sys
|
||||
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, Gio, GLib # noqa E402
|
||||
from gi.repository import Gtk, Gio, GLib
|
||||
|
||||
|
||||
rec_mgr = Gtk.RecentManager.get_default()
|
||||
for arg in sys.argv[1:]:
|
||||
|
|
|
@ -38,7 +38,6 @@
|
|||
# - The module `skins.citizen.scripts` references search inputs which aren't
|
||||
# created by this script.
|
||||
|
||||
|
||||
import argparse
|
||||
import mwclient
|
||||
import json
|
||||
|
@ -137,13 +136,14 @@ parser.add_argument("--site", type=str, required=True)
|
|||
parser.add_argument("--scheme", type=str, default="https")
|
||||
parser.add_argument("--skin", type=str, default="vector")
|
||||
parser.add_argument(
|
||||
"--input", type=str, required=True,
|
||||
"--input",
|
||||
type=str,
|
||||
required=True,
|
||||
)
|
||||
parser.add_argument("--title", type=str)
|
||||
parser.add_argument("--output", type=str, required=True)
|
||||
cli_args = parser.parse_args()
|
||||
|
||||
|
||||
site = mwclient.Site(cli_args.site, scheme=cli_args.scheme)
|
||||
|
||||
|
||||
|
@ -151,7 +151,11 @@ def get_load_script_url(**args):
|
|||
return "{path}load{ext}?{args}".format(
|
||||
path=site.path,
|
||||
ext=site.ext,
|
||||
args=urlencode({"lang": LANG, "skin": cli_args.skin, **args}),
|
||||
args=urlencode({
|
||||
"lang": LANG,
|
||||
"skin": cli_args.skin,
|
||||
**args
|
||||
}),
|
||||
)
|
||||
|
||||
|
||||
|
@ -243,14 +247,12 @@ rendered_html = """\
|
|||
lang=html.escape(LANG),
|
||||
text_dir=html.escape(LANG_TEXT_DIRECTION),
|
||||
base_url=html.escape("{}://{}".format(site.scheme, site.host)),
|
||||
page_modules_state_json=json_dumps_compact(
|
||||
{
|
||||
page_modules_state_json=json_dumps_compact({
|
||||
"noscript": "ready",
|
||||
"user.options": "ready",
|
||||
"user.tokens": "loading",
|
||||
**{name: "ready" for name in MODULES_PRELOAD_STYLES[cli_args.skin]},
|
||||
}
|
||||
),
|
||||
}),
|
||||
page_config_json=json_dumps_compact(result["jsconfigvars"]),
|
||||
page_modules_json=json_dumps_compact(
|
||||
get_modules(result["modules"], MODULES_POST_LOAD, MODULES_POST_LOAD_BLOCKED)
|
||||
|
@ -258,35 +260,27 @@ rendered_html = """\
|
|||
style_url=html.escape(
|
||||
get_load_script_url(
|
||||
only="styles",
|
||||
modules="|".join(
|
||||
get_modules(result["modulestyles"], MODULES_PRELOAD_STYLES)
|
||||
),
|
||||
modules="|".join(get_modules(result["modulestyles"], MODULES_PRELOAD_STYLES)),
|
||||
)
|
||||
),
|
||||
script_url=html.escape(
|
||||
get_load_script_url(
|
||||
only="scripts",
|
||||
modules="|".join(
|
||||
get_modules(result["modulescripts"], MODULES_PRELOAD_SCRIPTS)
|
||||
),
|
||||
modules="|".join(get_modules(result["modulescripts"], MODULES_PRELOAD_SCRIPTS)),
|
||||
raw="1",
|
||||
)
|
||||
),
|
||||
skin=html.escape(cli_args.skin),
|
||||
page_class=html.escape(escape_css_class(result["displaytitle"])),
|
||||
title=html.escape(result["displaytitle"]),
|
||||
indicators_html="\n".join(
|
||||
[
|
||||
indicators_html="\n".join([
|
||||
'<div id="mw-indicator-{}" class="mw-indicator">{}</div>'.format(
|
||||
indicator["name"], indicator["*"]
|
||||
)
|
||||
for indicator in result["indicators"]
|
||||
]
|
||||
),
|
||||
) for indicator in result["indicators"]
|
||||
]),
|
||||
content_html=result["text"]["*"],
|
||||
categories_html=result["categorieshtml"]["*"],
|
||||
)
|
||||
|
||||
|
||||
with open(cli_args.output, "w") as f:
|
||||
f.write(rendered_html)
|
||||
|
|
|
@ -2,8 +2,9 @@
|
|||
import gi
|
||||
import argparse
|
||||
|
||||
|
||||
gi.require_version("Gtk", "3.0")
|
||||
from gi.repository import Gtk, Gdk, Pango # noqa: E402
|
||||
from gi.repository import Gtk, Gdk, Pango
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
|
@ -12,7 +13,6 @@ args = parser.parse_args()
|
|||
|
||||
message = " ".join(args.message)
|
||||
|
||||
|
||||
window = Gtk.ApplicationWindow()
|
||||
window.set_keep_above(True)
|
||||
window.set_decorated(False)
|
||||
|
|
|
@ -9,12 +9,12 @@
|
|||
import math
|
||||
import gi
|
||||
|
||||
|
||||
gi.require_version("Playerctl", "2.0")
|
||||
gi.require_version("Gtk", "3.0")
|
||||
gi.require_version("Gdk", "3.0")
|
||||
gi.require_version("Pango", "1.0")
|
||||
from gi.repository import Playerctl, Gtk, Gdk, GLib, Pango # noqa: E402
|
||||
|
||||
from gi.repository import Playerctl, Gtk, Gdk, GLib, Pango
|
||||
|
||||
# Larger priority values will make the player with this name appear higher in
|
||||
# the menu. The default priority is 0.
|
||||
|
@ -175,20 +175,18 @@ if len(player_names) > 0:
|
|||
players = []
|
||||
for player_name in player_names:
|
||||
player = Playerctl.Player.new_from_name(player_name)
|
||||
players.append(
|
||||
{
|
||||
"player": player,
|
||||
"player_name": player_name,
|
||||
players.append({
|
||||
"player":
|
||||
player,
|
||||
"player_name":
|
||||
player_name,
|
||||
"sorting_key": (
|
||||
player.props.playback_status != Playerctl.PlaybackStatus.PLAYING,
|
||||
-PLAYER_NAME_PRIORITIES.get(player_name.name, 0),
|
||||
player_name.instance,
|
||||
),
|
||||
}
|
||||
)
|
||||
players = sorted(
|
||||
players, key=lambda player_and_meta: player_and_meta["sorting_key"]
|
||||
)
|
||||
})
|
||||
players = sorted(players, key=lambda player_and_meta: player_and_meta["sorting_key"])
|
||||
|
||||
for player_and_meta in players:
|
||||
player_name = player_and_meta["player_name"]
|
||||
|
@ -201,9 +199,7 @@ if len(player_names) > 0:
|
|||
)
|
||||
)
|
||||
|
||||
player_icon_name = PLAYER_ICON_NAME_FIXES.get(
|
||||
player_name.name, player_name.name
|
||||
)
|
||||
player_icon_name = PLAYER_ICON_NAME_FIXES.get(player_name.name, player_name.name)
|
||||
player_icon = Gtk.Image.new_from_icon_name(player_icon_name, Gtk.IconSize.MENU)
|
||||
player_menu_item.set_image(player_icon)
|
||||
|
||||
|
@ -234,18 +230,14 @@ if len(player_names) > 0:
|
|||
action_menu_item = Gtk.ImageMenuItem.new_with_mnemonic(action_name)
|
||||
|
||||
if action_icon_name is not None:
|
||||
action_icon = Gtk.Image.new_from_icon_name(
|
||||
action_icon_name, Gtk.IconSize.MENU
|
||||
)
|
||||
action_icon = Gtk.Image.new_from_icon_name(action_icon_name, Gtk.IconSize.MENU)
|
||||
action_menu_item.set_image(action_icon)
|
||||
|
||||
action_menu_item.set_sensitive(action_enabled)
|
||||
if action_fn is not None:
|
||||
action_menu_item.connect(
|
||||
"activate",
|
||||
lambda _menu_item, action_fn, action_fn_args: action_fn(
|
||||
*action_fn_args
|
||||
),
|
||||
lambda _menu_item, action_fn, action_fn_args: action_fn(*action_fn_args),
|
||||
action_fn,
|
||||
action_fn_args,
|
||||
)
|
||||
|
@ -259,7 +251,6 @@ else:
|
|||
menu_item.set_sensitive(False)
|
||||
root_menu.append(menu_item)
|
||||
|
||||
|
||||
root_menu.connect("selection-done", Gtk.main_quit)
|
||||
root_menu.connect("deactivate", Gtk.main_quit)
|
||||
root_menu.connect("destroy", Gtk.main_quit)
|
||||
|
|
|
@ -16,10 +16,10 @@ import shutil
|
|||
import sqlite3
|
||||
from typing import Optional, Tuple, Generator
|
||||
|
||||
|
||||
sys.path.insert(1, os.path.join(os.path.dirname(__file__), "..", "script-resources"))
|
||||
import common_script_utils
|
||||
|
||||
|
||||
if sys.platform == "darwin":
|
||||
firefox_home: Path = Path.home() / "Library" / "Application Support" / "Firefox"
|
||||
elif os.name == "posix":
|
||||
|
@ -27,13 +27,10 @@ elif os.name == "posix":
|
|||
else:
|
||||
common_script_utils.platform_not_supported_error()
|
||||
|
||||
|
||||
profiles_config = ConfigParser(interpolation=None)
|
||||
profiles_config.read(firefox_home / "profiles.ini")
|
||||
|
||||
installs_sections: list[str] = [
|
||||
s for s in profiles_config.sections() if s.startswith("Install")
|
||||
]
|
||||
installs_sections: list[str] = [s for s in profiles_config.sections() if s.startswith("Install")]
|
||||
if not installs_sections:
|
||||
raise Exception("no Firefox installations detected!")
|
||||
if len(installs_sections) > 1:
|
||||
|
@ -45,7 +42,6 @@ db_path: Path = profile_dir / "weave" / "bookmarks.sqlite"
|
|||
if not db_path.is_file():
|
||||
raise Exception("'{}' is not a file".format(db_path))
|
||||
|
||||
|
||||
# Firefox holds a lock over the database file, so I can't connect to it even
|
||||
# in the readonly mode: https://stackoverflow.com/a/7857866/12005228
|
||||
# as a workaround I copy the file
|
||||
|
@ -97,9 +93,7 @@ try:
|
|||
if folder_title is not None:
|
||||
folder_path.append(folder_title)
|
||||
|
||||
folder_path_str = (
|
||||
("/" + "/".join(reversed(folder_path))) if len(folder_path) > 0 else None
|
||||
)
|
||||
folder_path_str = (("/" + "/".join(reversed(folder_path))) if len(folder_path) > 0 else None)
|
||||
|
||||
chooser_entries.append((url_title, url, folder_path_str))
|
||||
if url_keyword is not None:
|
||||
|
@ -118,9 +112,7 @@ def chooser_entries_iter() -> Generator[str, None, None]:
|
|||
yield entry
|
||||
|
||||
|
||||
chosen_index = common_script_utils.run_chooser(
|
||||
chooser_entries_iter(), prompt="bookmark"
|
||||
)
|
||||
chosen_index = common_script_utils.run_chooser(chooser_entries_iter(), prompt="bookmark")
|
||||
|
||||
if chosen_index >= 0:
|
||||
_title, url, _folder_path_str = chooser_entries[chosen_index]
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import random
|
||||
|
||||
|
|
|
@ -0,0 +1,359 @@
|
|||
#compdef keybase
|
||||
#autoload
|
||||
|
||||
# keybase completion, based on cli help text
|
||||
# https://github.com/fnoris/keybase-zsh-completion
|
||||
|
||||
# The MIT License (MIT)
|
||||
#
|
||||
# Copyright (c) 2014 David Tiersch
|
||||
#
|
||||
# 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.
|
||||
|
||||
|
||||
local curcontext="$curcontext" state line ret=1
|
||||
local -a _command_args
|
||||
local -a _global_args
|
||||
local -a _subcommands
|
||||
|
||||
local IFS=$'\n'
|
||||
_global_args=($(keybase advanced | grep '^\s*--' | sed -r 's/^[\t ]*(--[^\t ,]+)( [^\t ,]*)?,? ?(--?[^\t ]+)?[\t ]*(.*)$/(\3)\1[\4]/'))
|
||||
|
||||
_arguments -C -A "-v" -A "--version"\
|
||||
'(- 1 *)'{-v,--version}'[display version information]' \
|
||||
'1: :->cmds' \
|
||||
$_global_args \
|
||||
'*:: :->args' && ret=0
|
||||
|
||||
case $state in
|
||||
cmds)
|
||||
_subcommands=(
|
||||
"base62:base62 operations"
|
||||
"cert:print the CA cert for api.keybase.io"
|
||||
"chat:chat securely with keybase users"
|
||||
"ctl:control the background keybase service"
|
||||
"currency:manage cyrptocurrency address"
|
||||
"decrypt:decrypt messages or files for keybase users"
|
||||
"deprovision:revoke the current device, log out, and delete local state"
|
||||
"device:manage your devices"
|
||||
"dump-keyfamily:print out a user's current key family"
|
||||
"encrypt:encrypt messages or files for keybase users"
|
||||
"follow:verify a user's authenticity and optionally follow them"
|
||||
"track:verify a user's authenticity and optionally follow them"
|
||||
"fs:perform filesystem operations"
|
||||
"id:identify a user and check their signature chain"
|
||||
"list-followers:list thost who follow you"
|
||||
"list-following:list who you or the given user is following"
|
||||
"log:manage keybase log"
|
||||
"login:establish a session with the keybase server"
|
||||
"logout:logout and remove session information"
|
||||
"paperkey:generate paper keys for recovering your account"
|
||||
"passphrase:change or recover your keybase passphrase"
|
||||
"pgp:manage keybase PGP keys"
|
||||
"ping:ping the keybase API server"
|
||||
"prove:generate a new proof"
|
||||
"rekey:rekey status and actions"
|
||||
"search:search for keybase users"
|
||||
"sign:sign a document"
|
||||
"signup:signup for a new account"
|
||||
"sigs:manage signatures"
|
||||
"status:show information about current user"
|
||||
"unfollow:unfollow a user"
|
||||
"untrack:unfollow a user"
|
||||
"update:the updater"
|
||||
"verify:verify message or file signatures for keybase users"
|
||||
"version:print out version and build information"
|
||||
"help, h:shows a list fo commands or help for one command"
|
||||
)
|
||||
_describe -t subcommands 'Keybase subcommands' _subcommands && ret=0
|
||||
;;
|
||||
args)
|
||||
case $line[1] in
|
||||
help)
|
||||
_values 'commands' \
|
||||
'base62' \
|
||||
'cert' \
|
||||
'chat' \
|
||||
'ctl' \
|
||||
'currency' \
|
||||
'decrypt' \
|
||||
'deprovision' \
|
||||
'device' \
|
||||
'dump-keyfamily' \
|
||||
'encrypt' \
|
||||
'follow' \
|
||||
'track' \
|
||||
'fs' \
|
||||
'id' \
|
||||
'list-followers' \
|
||||
'list-following' \
|
||||
'log' \
|
||||
'login' \
|
||||
'logout' \
|
||||
'paperkey' \
|
||||
'pasphrase' \
|
||||
'pgp' \
|
||||
'ping' \
|
||||
'prove' \
|
||||
'rekey' \
|
||||
'search' \
|
||||
'sign' \
|
||||
'signup' \
|
||||
'sigs' \
|
||||
'status' \
|
||||
'unfollow' \
|
||||
'untrack' \
|
||||
'update' \
|
||||
'verify' \
|
||||
'version' \
|
||||
'help, h' && ret=0
|
||||
;;
|
||||
base62)
|
||||
_values "command" \
|
||||
'decode[base62 decode]' \
|
||||
'encode[base62 encode]' \
|
||||
'help[Shows a list of commands or help for one command]'
|
||||
;;
|
||||
chat)
|
||||
_values "command" \
|
||||
'api[JSON api]' \
|
||||
'download[Download an attachment from a conversation]' \
|
||||
'hide[Hide or block a conversation]' \
|
||||
'list[List conversations, sorted by activity]' \
|
||||
'ls[List conversations, sorted by activity]' \
|
||||
"list-unread[List conversations, with unread messages at the top]" \
|
||||
"lsur[List conversations, with unread messages at the top]" \
|
||||
'mute[Mute or unmute a conversation]' \
|
||||
'read[Show new messages in a conversation and mark them as read]' \
|
||||
'report[Report a conversation (also blocks it)]' \
|
||||
'send[Send a message to a conversation]' \
|
||||
'upload[Upload an attachment to a conversation]' \
|
||||
'help[Shows a list of commands or help for one command]'
|
||||
;;
|
||||
ctl)
|
||||
_values "command" \
|
||||
'start[Start the backgroung keybase service]' \
|
||||
'stop[Stop the backgroung keybase service]' \
|
||||
'reload[Reload config file]' \
|
||||
'restart[Restart the background keybase service]' \
|
||||
"log-rotate[Close and open the keybase service's log file]" \
|
||||
'watchdog[Start, watch and prop up the backgound service]' \
|
||||
'watchdog2[Start and monitor background services]' \
|
||||
'app-exit[Exit the Keybase app]' \
|
||||
'help[Shows a list of commands or help for one command]'
|
||||
;;
|
||||
currency)
|
||||
_values "command" \
|
||||
'add[Sign a cryptocurrency (bitcoin or zcash) address into your identity]' \
|
||||
'help[Shows a list of commands or help for one command]'
|
||||
;;
|
||||
decrypt)
|
||||
_command_args=(
|
||||
'(--infile)--infile[Specify an input file]' \
|
||||
'(--message)--message[Provide the message on the command line]' \
|
||||
'(--outfile)--outfile[Specify an outfile (stdout by default)]' \
|
||||
'(--interactive)--interactive[Interactive prompt for decryption after sender verification]' \
|
||||
'(--force)--force[Force unprompted decryption, even on an indentify failure]' \
|
||||
'(--paperkey)--paperkey[Use a paper key for decryption]' \
|
||||
'(--encryptor-outfile)--encryptor-outfile[Write the Keybase name of the encryptor to this file]'
|
||||
)
|
||||
;;
|
||||
device)
|
||||
_values "command" \
|
||||
'remove[Remove a device]' \
|
||||
'list[List devices]' \
|
||||
'add[Authorize a new device]' \
|
||||
'help[Shows a list of commands or help for one command]'
|
||||
;;
|
||||
encrypt)
|
||||
_command_args=(
|
||||
'(--binary)--binary[Output in binary (rather than ASCII/armored)]' \
|
||||
'(--infile)--infile[Specify an input file]' \
|
||||
'(message)--message[Provide the message on the command line]' \
|
||||
'(--outfile)--outfile[Specify an outfile (stdout by default)]' \
|
||||
"(--hide-recipients)--hide-recipients[Don't include recipients in metadata]" \
|
||||
"(--anonymous)--anonymous[Don't include sender or recipients in metadata. Implies --hide-recipients]" \
|
||||
"(--no-self)--no-self[Don't encrypt for yourself]"
|
||||
)
|
||||
;;
|
||||
follow)
|
||||
_command_args=(
|
||||
"(--local)--local[Only follow locally, don't send a public statement to the server]" \
|
||||
'(-y)-y[Approve remote following without prompting]' \
|
||||
'(--skip-proof-cache)--skip-proof-cache[Skip cached proofs, force re-check]'
|
||||
)
|
||||
;;
|
||||
track)
|
||||
_command_args=(
|
||||
"(--local)--local[Only follow locally, don't send a public statement to the server]" \
|
||||
'(-y)-y[Approve remote following without prompting]' \
|
||||
'(--skip-proof-cache)--skip-proof-cache[Skip cached proofs, force re-check]'
|
||||
)
|
||||
;;
|
||||
fs)
|
||||
_values "command" \
|
||||
'ls[list directory contents]' \
|
||||
'cp[copy one or more directory elements to dest]' \
|
||||
'mv[move one or more directory elements to dest]' \
|
||||
'read[output file contents to standard output]' \
|
||||
'rm[remove one or more directory elements]' \
|
||||
'mkdir[create directory]' \
|
||||
'stat[stat directory element]' \
|
||||
'get-status[get status of pending operation]' \
|
||||
'kill[kill operation]' \
|
||||
'ps[list running operations]' \
|
||||
'write[write input to file]' \
|
||||
'help[Shows a list of commands or help for one command]'
|
||||
;;
|
||||
id)
|
||||
_command_args=(
|
||||
'(--skip-proof-cache)--skip-proof-cache[Skip cached proofs, force re-check]'
|
||||
)
|
||||
;;
|
||||
list-followers)
|
||||
_command_args=(
|
||||
'(--verbose)--verbose[A full dump, with more gory details]'
|
||||
)
|
||||
;;
|
||||
list-following)
|
||||
_command_args=(
|
||||
'(--filter)--filter[Provide a regex filter]' \
|
||||
'(--headers)--headers[Show column headers]' \
|
||||
'(--json)--json[Output as JSON (default is text)]' \
|
||||
'(--verbose)--verbose[A full dump, with more gory details]'
|
||||
)
|
||||
;;
|
||||
log)
|
||||
_values "command" \
|
||||
'send[Send recent debug logs to keybase]' \
|
||||
'help[Shows a list of commands or help for one command]'
|
||||
;;
|
||||
login)
|
||||
_command_args=(
|
||||
'(--provision-by-email)--provision-by-email[Use an email address associated with a keybase account to provision a device]'
|
||||
)
|
||||
;;
|
||||
passphrase)
|
||||
_values "command" \
|
||||
'change[Change your keybase account passphrase]' \
|
||||
'recover[Recover your keybase account passphrase]' \
|
||||
'help[Shows a list of commands or help for one command]'
|
||||
;;
|
||||
pgp)
|
||||
_values "command" \
|
||||
'gen[Generate a new PGP key and write to local secret keychain]' \
|
||||
'pull[Download the latest PGP keys for people you track]' \
|
||||
'update[Update your public PGP keys on keybase with those exported from the local GPG keyring]' \
|
||||
'select[Select a key as your own and register the public half with the server]' \
|
||||
'sign[PGP sign a document]' \
|
||||
'encrypt[PGP encrypt messages or files for keybase users]' \
|
||||
'decrypt[PGP decrypt messages or files for keybase users]' \
|
||||
'verify[PGP verify message or file signatures for keybase users]' \
|
||||
'export[Export a PGP key from keybase]' \
|
||||
'import[Import a PGP key into keybase]' \
|
||||
'drop[Drop Keybases use of a PGP key]' \
|
||||
'list[List the active PGP keys in your account]' \
|
||||
'purge[Purge all PGP keys from Keybase keyring]' \
|
||||
'help[Shows a list of commands or help for one command]'
|
||||
;;
|
||||
ping)
|
||||
_command_args=(
|
||||
'(--gregor)--gregor[Ping the Gregor server]'
|
||||
)
|
||||
;;
|
||||
prove)
|
||||
_command_args=(
|
||||
'(--output)--output[Output proof text to file (rather than standard out)]' \
|
||||
"(--force)--force[Don't prompt]" \
|
||||
)
|
||||
_values "prove command" \
|
||||
'service[Supported services are: coinbase, hackernews, reddit, dns, github, twitter, web, http, https]' \
|
||||
'service username[Username or hostname at that service]'
|
||||
;;
|
||||
rekey)
|
||||
_values "command" \
|
||||
'status[Get pending rekey status]' \
|
||||
'paper[Submit a paper key to help rekeying]' \
|
||||
'help[Shows a list of commands or help for one command]'
|
||||
;;
|
||||
search)
|
||||
_command_args=(
|
||||
'(--json)--json[Output as JSON]'
|
||||
)
|
||||
;;
|
||||
sign)
|
||||
_command_args=(
|
||||
'(--binary)--binary[Output binary message (default is armored)]' \
|
||||
'(--detached)--detached[Detached signature (default is attached)]' \
|
||||
'(--infile)--infile[Specify an input file]' \
|
||||
'(--message)--message[Provide the message to sign on the command line]' \
|
||||
'(--outfile)--outfile[Specify an outfile (default is STDOUT)]'
|
||||
)
|
||||
;;
|
||||
signup)
|
||||
_command_args=(
|
||||
'(--invite-code)--invite-code[Specify an invite code]' \
|
||||
'(--email)--email[Specify an account email]' \
|
||||
'(--username)--username[Specify a username]'
|
||||
)
|
||||
;;
|
||||
sigs)
|
||||
_values "command" \
|
||||
'list[List signatures]' \
|
||||
'revoke[Revoke a signature by sig ID]' \
|
||||
'help[Shows a list of commands or help for one command]'
|
||||
;;
|
||||
status)
|
||||
_command_args=(
|
||||
'(--json)--json[Output status as JSON]' \
|
||||
)
|
||||
;;
|
||||
update)
|
||||
_values "command" \
|
||||
'check[Trigger an update check]' \
|
||||
'run[Run the update with custom options]' \
|
||||
'check-in-use[Check if we are in use (safe for restart)]' \
|
||||
'notify[Notify the service about an update event]'
|
||||
;;
|
||||
verify)
|
||||
_command_args=(
|
||||
'(--detached)--detached[Specify a detached signature file]' \
|
||||
'(--infile)--infile[Specify an input file]' \
|
||||
'(--message)--message[Provide the message to verify on the command line]' \
|
||||
"(--no-output)--no-output[Don't output the verified message]" \
|
||||
'(--outfile)--outfile[Specify an outfile (default is STDOUT)]'
|
||||
'(--signed-by)--signed-by[Assert signed by the given user (can use user assertion fomat)]' \
|
||||
)
|
||||
;;
|
||||
version)
|
||||
_command_args=(
|
||||
"(--format)--format[Alternate format for version output. Specify 's' for simple (1.2.3) or 'v' for verbose. Default (blank) includes build number (1.2.3-400)]" \
|
||||
"(--no-service)--no-service[Don't report on the service's build information]"
|
||||
)
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
_arguments \
|
||||
$_command_args \
|
||||
&& ret=0
|
||||
|
||||
return ret
|
||||
s
|
Loading…
Reference in New Issue