mirror of
https://github.com/mistricky/codesnap.nvim.git
synced 2024-12-27 03:46:29 +00:00
Initial commit
This commit is contained in:
commit
b5e86f5d4f
17 changed files with 227 additions and 0 deletions
31
.github/workflows/lint.yml
vendored
Normal file
31
.github/workflows/lint.yml
vendored
Normal file
|
@ -0,0 +1,31 @@
|
|||
name: Lint
|
||||
|
||||
on: push
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
- name: Setup nodejs
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: latest
|
||||
|
||||
- name: Install commit message convention lib
|
||||
run: npm i commitlint-config-wizardoc -D
|
||||
|
||||
- name: Check commit message
|
||||
uses: wagoid/commitlint-github-action@v4
|
||||
|
||||
- name: Check code style
|
||||
uses: JohnnyMorganz/stylua-action@v4
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
version: latest
|
||||
args: --check .
|
47
.github/workflows/release.yml
vendored
Normal file
47
.github/workflows/release.yml
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.11"
|
||||
|
||||
- name: Replace template
|
||||
run: python3 scripts/replace-template.py
|
||||
|
||||
- name: Commit changes
|
||||
uses: EndBug/add-and-commit@v9
|
||||
with:
|
||||
message: "[Update] apply template"
|
||||
|
||||
- name: Read version from project config
|
||||
id: read_toml
|
||||
uses: SebRollen/toml-action@v1.0.2
|
||||
with:
|
||||
file: project.toml
|
||||
field: project.version
|
||||
|
||||
- name: Bump version and push tag
|
||||
id: tag_version
|
||||
uses: mathieudutour/github-tag-action@v6.1
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
custom_tag: ${{ steps.read_toml.outputs.value }}
|
||||
|
||||
- name: Create a GitHub release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
tag: ${{ steps.tag_version.outputs.new_tag }}
|
||||
name: Release ${{ steps.tag_version.outputs.new_tag }}
|
||||
generateReleaseNotes: true
|
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
|
@ -0,0 +1,7 @@
|
|||
# Lua
|
||||
/luarocks
|
||||
/lua_modules
|
||||
/.luarocks
|
||||
|
||||
# OS
|
||||
.DS_Store
|
13
README.md
Normal file
13
README.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
<h1 align="center">Nvim Plugin Template</h1>
|
||||
|
||||
<p align="center">
|
||||
|
||||
<img src="https://img.shields.io/badge/Neovim-57A143?logo=neovim&logoColor=fff&style=for-the-badge" alt="Neovim" />
|
||||
|
||||
<img src="https://img.shields.io/badge/Made%20With%20Lua-2C2D72?logo=lua&logoColor=fff&style=for-the-badge" alt="made with lua" >
|
||||
|
||||
<img src="https://img.shields.io/github/actions/workflow/status/mistricky/nvim-plugin-template/release.yml?style=for-the-badge&label=release" alt="release action status" />
|
||||
|
||||
<img src="https://img.shields.io/github/actions/workflow/status/mistricky/nvim-plugin-template/lint.yml?style=for-the-badge&label=Lint" alt="release action status" />
|
||||
|
||||
</p>
|
4
commitlint.config.js
Normal file
4
commitlint.config.js
Normal file
|
@ -0,0 +1,4 @@
|
|||
module.exports = {
|
||||
// This line config will read the NPM package named "commitlint-config-wizardoc", so please make sure you have installed it before config this line.
|
||||
extends: "wizardoc",
|
||||
};
|
4
doc/plugin-name.txt
Normal file
4
doc/plugin-name.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
**plugin-name** description
|
||||
|
||||
Author: Mist <mist.zzh@gmail.com>
|
||||
version: 0.0.2
|
9
lua/plugin-name/init.lua
Normal file
9
lua/plugin-name/init.lua
Normal file
|
@ -0,0 +1,9 @@
|
|||
local table_utils = require("utils.table")
|
||||
local static = require("plugin-name.static")
|
||||
local main = {}
|
||||
|
||||
function main.setup(config)
|
||||
static.config = table_utils.merge(static.config, config)
|
||||
end
|
||||
|
||||
return main
|
3
lua/plugin-name/static.lua
Normal file
3
lua/plugin-name/static.lua
Normal file
|
@ -0,0 +1,3 @@
|
|||
return {
|
||||
config = {},
|
||||
}
|
12
lua/plugin-name/utils/command.lua
Normal file
12
lua/plugin-name/utils/command.lua
Normal file
|
@ -0,0 +1,12 @@
|
|||
local command_util = {}
|
||||
|
||||
function command_util.exec_command(command, mode)
|
||||
local handle = assert(io.popen(command, mode))
|
||||
local origin = assert(handle:read("*a"))
|
||||
|
||||
handle:close()
|
||||
|
||||
return origin
|
||||
end
|
||||
|
||||
return command_util
|
23
lua/plugin-name/utils/list.lua
Normal file
23
lua/plugin-name/utils/list.lua
Normal file
|
@ -0,0 +1,23 @@
|
|||
local list_utils = {}
|
||||
|
||||
function list_utils.find(list, predicate)
|
||||
for _, value in ipairs(list) do
|
||||
if predicate(value) then
|
||||
return value
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
function list_utils.some(list, predicate)
|
||||
return list_utils.find(list, predicate) ~= nil
|
||||
end
|
||||
|
||||
function list_utils.includes(list, value)
|
||||
return list_utils.find(list, function(item)
|
||||
return item == value
|
||||
end) ~= nil
|
||||
end
|
||||
|
||||
return list_utils
|
15
lua/plugin-name/utils/string.lua
Normal file
15
lua/plugin-name/utils/string.lua
Normal file
|
@ -0,0 +1,15 @@
|
|||
local string_util = {}
|
||||
|
||||
function string_util.trim(str)
|
||||
return str:gsub("%s+", "")
|
||||
end
|
||||
|
||||
function string_util.escape(str)
|
||||
return str:gsub("[%(%)%.%%%+%-%*%?%[%^%$%]]", "%%%1")
|
||||
end
|
||||
|
||||
function string_util.ends_with(str, suffix)
|
||||
return str:sub(-#suffix) == suffix
|
||||
end
|
||||
|
||||
return string_util
|
17
lua/plugin-name/utils/table.lua
Normal file
17
lua/plugin-name/utils/table.lua
Normal file
|
@ -0,0 +1,17 @@
|
|||
local table_utils = {}
|
||||
|
||||
function table_utils.assign(t, props)
|
||||
for k, v in pairs(props) do
|
||||
t[k] = v
|
||||
end
|
||||
end
|
||||
|
||||
function table_utils.merge(t1, t2)
|
||||
for k, v in pairs(t2) do
|
||||
t1[k] = v
|
||||
end
|
||||
|
||||
return t1
|
||||
end
|
||||
|
||||
return table_utils
|
3
plugin/plugin-name.lua
Normal file
3
plugin/plugin-name.lua
Normal file
|
@ -0,0 +1,3 @@
|
|||
local plugin = require("plugin-name")
|
||||
|
||||
vim.api.nvim_create_user_command("CommandName", function() end, {})
|
6
project.toml
Normal file
6
project.toml
Normal file
|
@ -0,0 +1,6 @@
|
|||
[project]
|
||||
name = "plugin-name"
|
||||
version = "0.0.2"
|
||||
description = "description"
|
||||
author = "Mist"
|
||||
email = "mist.zzh@gmail.com"
|
19
scripts/replace-template.py
Normal file
19
scripts/replace-template.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
from glob import glob
|
||||
from typing import Callable, Final
|
||||
from re import sub
|
||||
from functools import reduce
|
||||
import tomllib
|
||||
|
||||
PROJECT_CONFIG_PATH: Final = "project.toml"
|
||||
TEMPLATE_PATH: Final = "template/**/*.template"
|
||||
|
||||
read_config: Callable[[str], dict] = lambda path: tomllib.load(open(path, 'rb'))
|
||||
|
||||
apply_config: Callable[[dict, list[str]], str] = lambda config, keys: reduce(lambda config, key: config[key], keys, config)
|
||||
|
||||
replace: Callable[[str, dict], str] = lambda content, config: sub(r"{{([^}]+)}}", lambda match: apply_config(config, match.group(1).split('.')), content)
|
||||
|
||||
update: Callable[[str, str], None] = lambda path, content: open(sub(r'^template/(.+)\.template$', r"\1", path), 'w').write(content)
|
||||
|
||||
for template in map(lambda file: {'path': file, 'content': replace(open(file, 'r').read(), read_config(PROJECT_CONFIG_PATH))}, glob(TEMPLATE_PATH)):
|
||||
update(template['path'], template['content'])
|
10
stylua.toml
Normal file
10
stylua.toml
Normal file
|
@ -0,0 +1,10 @@
|
|||
column_width = 120
|
||||
line_endings = "Unix"
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
quote_style = "AutoPreferDouble"
|
||||
call_parentheses = "Always"
|
||||
collapse_simple_statement = "Never"
|
||||
|
||||
[sort_requires]
|
||||
enabled = false
|
4
template/doc/plugin-name.txt.template
Normal file
4
template/doc/plugin-name.txt.template
Normal file
|
@ -0,0 +1,4 @@
|
|||
**{{project.name}}** {{project.description}}
|
||||
|
||||
Author: {{project.author}} <{{project.email}}>
|
||||
version: {{project.version}}
|
Loading…
Reference in a new issue