From d717045e317d42ce802a14c1ed3b7457904cb1e1 Mon Sep 17 00:00:00 2001 From: Limmek Date: Sat, 19 Aug 2023 13:00:27 +0200 Subject: [PATCH 01/17] 2.0 --- .github/workflows/formating.yml | 16 +- .github/workflows/lint.yml | 18 + .github/workflows/release.yml | 15 +- .github/workflows/update.yml | 10 +- .gitignore | 31 +- .luacheckrc | 156 ++++- .pkgmeta | 38 +- .vscode/extensions.json | 9 + .vscode/settings.json | 121 ++++ Icon/shitlist.png | Bin 0 -> 6977 bytes Locales/Locales.xml | 6 + Locales/enUS.lua | 101 +++ Shitlist.lua | 417 +++++++++++ Shitlist.toc | 24 + Shitlist/Config.lua | 79 --- Shitlist/Fonts/Inconsolata-Bold.ttf | Bin 67724 -> 0 bytes Shitlist/Fonts/Inconsolata-Regular.ttf | Bin 84868 -> 0 bytes Shitlist/Settings/ListedPlayers.lua | 255 ------- Shitlist/Settings/Reasons.lua | 163 ----- Shitlist/Settings/Shitlist.lua | 367 ---------- Shitlist/Shitlist.lua | 352 ---------- Shitlist/Shitlist.toc | 18 - ShitlistConfig.lua | 726 ++++++++++++++++++++ ShitlistUtils.lua | 69 ++ {Shitlist/Sounds => Sounds}/alarmbeep.ogg | Bin {Shitlist/Sounds => Sounds}/alarmbuzz.ogg | Bin {Shitlist/Sounds => Sounds}/alarmbuzzer.ogg | Bin {Shitlist/Sounds => Sounds}/alarmdouble.ogg | Bin embeds.xml | 25 + luaformat.cfg | 4 - 30 files changed, 1715 insertions(+), 1305 deletions(-) create mode 100644 .github/workflows/lint.yml create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 Icon/shitlist.png create mode 100644 Locales/Locales.xml create mode 100644 Locales/enUS.lua create mode 100644 Shitlist.lua create mode 100644 Shitlist.toc delete mode 100644 Shitlist/Config.lua delete mode 100644 Shitlist/Fonts/Inconsolata-Bold.ttf delete mode 100644 Shitlist/Fonts/Inconsolata-Regular.ttf delete mode 100644 Shitlist/Settings/ListedPlayers.lua delete mode 100644 Shitlist/Settings/Reasons.lua delete mode 100644 Shitlist/Settings/Shitlist.lua delete mode 100644 Shitlist/Shitlist.lua delete mode 100644 Shitlist/Shitlist.toc create mode 100644 ShitlistConfig.lua create mode 100644 ShitlistUtils.lua rename {Shitlist/Sounds => Sounds}/alarmbeep.ogg (100%) rename {Shitlist/Sounds => Sounds}/alarmbuzz.ogg (100%) rename {Shitlist/Sounds => Sounds}/alarmbuzzer.ogg (100%) rename {Shitlist/Sounds => Sounds}/alarmdouble.ogg (100%) create mode 100644 embeds.xml delete mode 100644 luaformat.cfg diff --git a/.github/workflows/formating.yml b/.github/workflows/formating.yml index 36cc68f..a11ced7 100644 --- a/.github/workflows/formating.yml +++ b/.github/workflows/formating.yml @@ -1,17 +1,24 @@ +# description of this workflow, can be anything you want name: Check formating +# we need to let GitHub know _when_ we want to release, typically only when we create a new tag. +# this will target only tags, and not all pushes to the master branch. +# this part can be heavily customized to your liking, like targeting only tags that match a certain word, +# other branches or even pullrequests. on: workflow_dispatch: pull_request: -defaults: - run: - working-directory: ./Shitlist - +# a workflow is built up as jobs, and within these jobs are steps jobs: + + # "luacheck" is a job, you can name it anything you want luacheck: + + # we can run our steps on pretty much anything, but the "ubuntu-latest" image is a safe bet runs-on: ubuntu-latest steps: + # we first have to clone the AddOn project, this is a required step - name: Clone project uses: actions/checkout@v3 with: @@ -21,4 +28,3 @@ jobs: uses: nebularg/actions-luacheck@v1 with: args: "--no-color -q" - config: https://raw.githubusercontent.com/Limmek/Shitlist/master/.luacheckrc diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..dc3bd9c --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,18 @@ +name: Lint +on: + workflow_dispatch: + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - name: Clone project + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: wow-lint + uses: davidcraig/action-wow-lint@v1.0.1 + with: + path-to-files: '*.lua' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c4a61ed..eed7d1c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,18 +2,11 @@ name: Package and release on: workflow_dispatch: -# push: -# tags: -# - "**" + push: + tags: + - "**" -defaults: - run: - working-directory: ./Shitlist - -# a workflow is built up as jobs, and within these jobs are steps jobs: - - # "release" is a job, you can name it anything you want release: runs-on: ubuntu-latest @@ -30,4 +23,4 @@ jobs: - name: Package and release uses: BigWigsMods/packager@v2 with: - args: -S -w 0 -a 0 -p 0 + args: -S -w 0 -a 0 -p 0 -m .pkgmeta diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 95cc910..cb6add7 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -5,10 +5,6 @@ on: schedule: - cron: "0 * * * *" -defaults: - run: - working-directory: ./Shitlist - jobs: run: runs-on: ubuntu-latest @@ -16,7 +12,7 @@ jobs: - name: Clone project uses: actions/checkout@v3 - - name: Update TOC Interface version + - name: Update TOC Interface version retail uses: p3lim/toc-interface-updater@v2 - name: Create pull request @@ -24,6 +20,10 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} title: Update Interface version + commit-message: Update Interface version + committer: GitHub + author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> + signoff: false branch: bump-version delete-branch: true assignees: Limmek diff --git a/.gitignore b/.gitignore index e9aa6bc..e2604a9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,16 @@ +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + # Compiled Lua sources luac.out @@ -39,18 +52,8 @@ luac.out *.x86_64 *.hex -X VSCode -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -!.vscode/*.code-snippets - -# Local History for Visual Studio Code -.history/ - -# Built Visual Studio Code Extensions -*.vsix +# Build Files +*.bat -*.code-workspace +# Addon dependencies +Libs/* diff --git a/.luacheckrc b/.luacheckrc index c0b3424..7e30c58 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -1,31 +1,137 @@ +std = "min" globals = { - "_G", - "Shitlist", - "ShitlistDB", + "UnitIsPlayer", + "RegisterChatCommand", + "UIDROPDOWNMENU_MAXBUTTONS", + "ChatFontNormal", + "TooltipDataProcessor", + "UIDROPDOWNMENU_MENU_LEVEL", "ShitlistSettings", + "Settings", + "NOT_BOUND", + "GetLocale", + "UIDropDownMenu_AddButton", + "tremove", + "DEFAULT_CHAT_FRAME", + "FONT_COLOR_CODE_CLOSE", + "GetCursorPosition", + "InterfaceOptions_AddCategory", + "Enum", + "GetItemInfo", + "UIDropDownMenu_CreateInfo", + "SlashCmdList", + "AddDoubleLine", "GameTooltip", + "NORMAL_FONT_COLOR", + "_L", + "UIParentLoadAddOn", + "SetTooltipMoney", + "CreateFrame", + "ACCEPT", + "hash_SlashCmdList", + "RegisterCallback", + "NORMAL_FONT_COLOR_CODE", + "GameFontNormalSmall", + "OKAY", + "NUM_CHAT_WINDOWS", + "FriendsFrame", + "GameFontHighlightLarge", + "GetRealmName", + "UnitName", + "GetUnit", + "CLOSE", + "geterrorhandler", + "testDB", + "OpacitySliderFrame", + "IsSecureCmd", + "Shitlist", + "AddLine", + "SELECTED_CHAT_FRAME", + "GameFontHighlightSmall", + "SetDesaturation", + "ColorPickerFrame", + "ChatEdit_GetActiveWindow", + "UnitPopupMenus", + "ItemRefTooltip", + "IsControlKeyDown", + "print", + "LibStub", + "CANCEL", + "SHITLIST_ID", + "GetMouseFocus", + "ShitlistDB", + "IsShiftKeyDown", + "GameFontDisableSmall", + "UnitPopup_ShowMenu", + "InterfaceOptionsFrame_OpenToCategory", + "GameFontNormal", + "ReloadUI", + "pairs", + "C_Timer", + "GameFontHighlight", + "AuctionDB", + "_G", + "tinsert", + "UIDropDownMenu_AddSeparator", + "time", + "EasyMenu", + "UIDropDownMenu_SetWidth", + "UIDropDownMenu_SetText", + "UIDropDownMenu_Initialize", + "CloseDropDownMenus", + "ToggleDropDownMenu", + "PlayerFrameDropDown", + "UIDropDownMenu_GetText", + "ChatFrame1EditBox", + "TargetFrame", + "PlayerFrame", + "UIDropDownMenu_GetCurrentDropDown", + "UISpecialFrames", + "ChatFrame1", + "GameTooltip_SetDefaultAnchor", + "HIGHLIGHT_FONT_COLOR", + "WorldFrame", + "TooltipBackdropTemplateMixin", + "GameMenuFrame", + "UIDROPDOWNMENU_INIT_MENU", + "UIDROPDOWNMENU_MENU_VALUE" } -max_line_length = 2823 -- fixme +max_line_length = 132 ignore = { - "11./SLASH_.*", -- Setting an undefined (Slash handler) global variable - "11./BINDING_.*", -- Setting an undefined (Keybinding header) global variable - "113/LE_.*", -- Accessing an undefined (Lua ENUM type) global variable - "113/NUM_LE_.*", -- Accessing an undefined (Lua ENUM type) global variable - "211", -- Unused local variable - "211/L", -- Unused local variable "CL" - "211/CL", -- Unused local variable "CL" - "212", -- Unused argument - "213", -- Unused loop variable - -- "231", -- Set but never accessed - "311", -- Value assigned to a local variable is unused - "314", -- Value of a field in a table literal is unused - "42.", -- Shadowing a local variable, an argument, a loop variable. - "43.", -- Shadowing an upvalue, an upvalue argument, an upvalue loop variable. - "542", -- An empty if branch - "611", -- A line consists of nothing but whitespace. - "612", -- A line contains trailing whitespace. - "613", -- Trailing whitespace in a string. - "614", -- Trailing whitespace in a comment. + "211/_.*", + "211/L", + "212/_.*", + -- "11./SLASH_.*", -- Setting an undefined (Slash handler) global variable + -- "11./BINDING_.*", -- Setting an undefined (Keybinding header) global variable + -- "113/LE_.*", -- Accessing an undefined (Lua ENUM type) global variable + -- "113/NUM_LE_.*", -- Accessing an undefined (Lua ENUM type) global variable + "211", -- Unused local variable + -- "211/L", -- Unused local variable "CL" + -- "211/CL", -- Unused local variable "CL" + -- "212", -- Unused argument + -- "213", -- Unused loop variable + -- "231", -- Set but never accessed + -- "311", -- Value assigned to a local variable is unused + -- "314", -- Value of a field in a table literal is unused + -- "42.", -- Shadowing a local variable, an argument, a loop variable. + -- "43.", -- Shadowing an upvalue, an upvalue argument, an upvalue loop variable. + -- "542", -- An empty if branch + -- "611", -- A line consists of nothing but whitespace. + -- "612", -- A line contains trailing whitespace. + -- "613", -- Trailing whitespace in a string. + -- "614", -- Trailing whitespace in a comment. + -- "631" -- max_line_length } -self=false -global=false +self = false + +-- Allow unused arguments. +unused_args = false + +-- Disable line length limits. +-- max_line_length = false +-- max_code_line_length = false +-- max_string_line_length = false +-- max_comment_line_length = false + +exclude_files = { "**/Libs", "Libs/*.lua", ".luacheckrc", "*" } +include_files = { "Shitlist.lua", "ShitlistConfig.lua", "ShitlistUtils.lua", "Locales/*.lua" } diff --git a/.pkgmeta b/.pkgmeta index e39644b..3e5f26d 100644 --- a/.pkgmeta +++ b/.pkgmeta @@ -1,17 +1,41 @@ package-as: Shitlist -manual-changelog: - filename: CHANGELOG.md - markup-type: markdown +# manual-changelog: +# filename: CHANGELOG.md +# markup-type: markdown enable-nolib-creation: no enable-toc-creation: yes -# Ignore takes place before folder's moving takes place ignore: + - .gitignore + - .luacheckrc + - .vscode + - .github - README.md - - luaformat.cfg -move-folders: - Shitlist/Shitlist: Shitlist +required-dependencies: + +externals: + Libs/AceAddon-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceAddon-3.0 + Libs/AceComm-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceComm-3.0 + Libs/AceConfig-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceConfig-3.0 + Libs/AceConsole-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceConsole-3.0 + Libs/AceDB-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceDB-3.0 + Libs/AceDBOptions-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceDBOptions-3.0 + Libs/AceEvent-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceEvent-3.0 + Libs/AceGUI-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceGUI-3.0 + Libs/AceHook-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceHook-3.0 + Libs/AceLocale-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceLocale-3.0 + Libs/AceSerializer-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceSerializer-3.0 + Libs/AceTab-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceTab-3.0 + Libs/AceTimer-3.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceTimer-3.0 + Libs/CallbackHandler-1.0: svn://svn.wowace.com/wow/ace3/mainline/trunk/CallbackHandler-1.0 + Libs/LibDBIcon-1.0: svn://svn.wowace.com/wow/libdbicon-1-0/mainline/trunk/LibDBIcon-1.0 + Libs/LibStub: svn://svn.wowace.com/wow/libstub/mainline/tags/1.0 + Libs/LibUIDropDownMenu: + url: https://repos.wowace.com/wow/libuidropdownmenu/trunk + Libs/LibDataBroker-1.1: + url: http://github.com/tekkub/libdatabroker-1-1.git + tag: latest diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..367879d --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "stylelint.vscode-stylelint", + "sumneko.lua", + "rog2.luacheck", + "ketho.wow-api", + "stanzilla.vscode-wow-toc" + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..dadf53f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,121 @@ +{ + "Lua.diagnostics.enable": true, + "luacheck.useLuacheck": true, + "Lua.completion.callSnippet": "Both", + "Lua.diagnostics.disable": [ + "lowercase-global", + "undefined-field", + "unused-local", + "param-type-mismatch", + "missing-fields" + ], + "editor.rulers": [ + 80, + 120, + 132 + ], + "editor.wordWrapColumn": 133, + "editor.defaultFormatter": "Ketho.wow-api", + "editor.wordWrap": "off", + "Lua.runtime.version": "Lua 5.1", + "[xml]": { + "editor.defaultFormatter": "DotJoshJohnson.xml" + }, + "Lua.diagnostics.globals": [ + "UnitIsPlayer", + "RegisterChatCommand", + "UIDROPDOWNMENU_MAXBUTTONS", + "ChatFontNormal", + "TooltipDataProcessor", + "UIDROPDOWNMENU_MENU_LEVEL", + "ShitlistSettings", + "Settings", + "NOT_BOUND", + "GetLocale", + "UIDropDownMenu_AddButton", + "tremove", + "DEFAULT_CHAT_FRAME", + "FONT_COLOR_CODE_CLOSE", + "GetCursorPosition", + "InterfaceOptions_AddCategory", + "Enum", + "GetItemInfo", + "UIDropDownMenu_CreateInfo", + "SlashCmdList", + "AddDoubleLine", + "GameTooltip", + "NORMAL_FONT_COLOR", + "_L", + "UIParentLoadAddOn", + "SetTooltipMoney", + "CreateFrame", + "ACCEPT", + "hash_SlashCmdList", + "RegisterCallback", + "NORMAL_FONT_COLOR_CODE", + "GameFontNormalSmall", + "OKAY", + "NUM_CHAT_WINDOWS", + "FriendsFrame", + "GameFontHighlightLarge", + "GetRealmName", + "UnitName", + "GetUnit", + "CLOSE", + "geterrorhandler", + "testDB", + "OpacitySliderFrame", + "IsSecureCmd", + "Shitlist", + "AddLine", + "SELECTED_CHAT_FRAME", + "GameFontHighlightSmall", + "SetDesaturation", + "ColorPickerFrame", + "ChatEdit_GetActiveWindow", + "UnitPopupMenus", + "ItemRefTooltip", + "IsControlKeyDown", + "print", + "LibStub", + "CANCEL", + "SHITLIST_ID", + "GetMouseFocus", + "ShitlistDB", + "IsShiftKeyDown", + "GameFontDisableSmall", + "UnitPopup_ShowMenu", + "InterfaceOptionsFrame_OpenToCategory", + "GameFontNormal", + "ReloadUI", + "pairs", + "C_Timer", + "GameFontHighlight", + "AuctionDB", + "_G", + "tinsert", + "UIDropDownMenu_AddSeparator", + "time", + "EasyMenu", + "UIDropDownMenu_SetWidth", + "UIDropDownMenu_SetText", + "UIDropDownMenu_Initialize", + "CloseDropDownMenus", + "ToggleDropDownMenu", + "PlayerFrameDropDown", + "UIDropDownMenu_GetText", + "ChatFrame1EditBox", + "TargetFrame", + "PlayerFrame", + "UIDropDownMenu_GetCurrentDropDown", + "UISpecialFrames", + "ChatFrame1", + "GameTooltip_SetDefaultAnchor", + "HIGHLIGHT_FONT_COLOR", + "WorldFrame", + "TooltipBackdropTemplateMixin", + "GameMenuFrame", + "UIDROPDOWNMENU_INIT_MENU", + "UIDROPDOWNMENU_MENU_VALUE" + ], +} \ No newline at end of file diff --git a/Icon/shitlist.png b/Icon/shitlist.png new file mode 100644 index 0000000000000000000000000000000000000000..f9184f92acdeedf3a4d35ba476a686903d1eeba1 GIT binary patch literal 6977 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 TBvCdu00000NkvXXu0mjfV%t>W literal 0 HcmV?d00001 diff --git a/Locales/Locales.xml b/Locales/Locales.xml new file mode 100644 index 0000000..adf2216 --- /dev/null +++ b/Locales/Locales.xml @@ -0,0 +1,6 @@ + + +