diff --git a/.cspell.json b/.cspell.json new file mode 100644 index 0000000..08e7561 --- /dev/null +++ b/.cspell.json @@ -0,0 +1,26 @@ +{ + "words": [ + "Aire-One", + "berlam", + "constructorfct", + "dbus", + "drawin", + "dryrun", + "fatalwarnings", + "freedesktop", + "JohnnyMorganz", + "keygrabber", + "ldoc", + "luacheck", + "luacheckrc", + "luadoc", + "luarocks", + "mktemp", + "mousegrabber", + "rockspec", + "staticfct", + "stylua", + "upower", + "wibox" + ] +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..cad40ef --- /dev/null +++ b/.editorconfig @@ -0,0 +1,19 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +indent_style = space +indent_size = 3 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{json,yaml}] +indent_size = 2 + +[Makefile] +indent_style = tab + diff --git a/.github/workflows/doc.yaml b/.github/workflows/doc.yaml new file mode 100644 index 0000000..60ce04a --- /dev/null +++ b/.github/workflows/doc.yaml @@ -0,0 +1,38 @@ +name: Build doc + +on: + push: + branches: + - master + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: lunarmodules/ldoc@v1.5.0 + - uses: actions/upload-pages-artifact@v3 + id: deployment + with: + path: doc/ + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - uses: actions/deploy-pages@v4 + id: deployment diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml new file mode 100644 index 0000000..3c82f12 --- /dev/null +++ b/.github/workflows/lint.yaml @@ -0,0 +1,51 @@ +name: Lint + +on: + push: + branches: + - master + pull_request: + +jobs: + luacheck: + needs: [] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: lunarmodules/luacheck@v1 + + stylua: + needs: [] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: JohnnyMorganz/stylua-action@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + version: v0.20.0 + args: --check . + + ldoc: + needs: [] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: lunarmodules/ldoc@v1.5.0 + with: + args: --fatalwarnings . + + spellcheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: streetsidesoftware/cspell-action@v6 + with: + incremental_files_only: false + + rockspec: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: leafo/gh-actions-lua@v9 + - uses: leafo/gh-actions-luarocks@v4 + - run: luarocks lint awesome-slot-dev-1.rockspec diff --git a/.github/workflows/rock.yaml b/.github/workflows/rock.yaml new file mode 100644 index 0000000..29852af --- /dev/null +++ b/.github/workflows/rock.yaml @@ -0,0 +1,21 @@ +name: Upload rock to LuaRocks + +on: + push: + +jobs: + affected: + uses: lunarmodules/.github/.github/workflows/list_affected_rockspecs.yml@main + upload: + needs: affected + if: >- + ${{ + github.repository == 'Aire-One/awesome-slot' && + ( github.ref_name == 'master' || startsWith(github.ref, 'refs/tags/') ) && + needs.affected.outputs.rockspecs + }} + uses: lunarmodules/.github/.github/workflows/upload_to_luarocks.yml@main + with: + rockspecs: ${{ needs.affected.outputs.rockspecs }} + secrets: + apikey: ${{ secrets.LUAROCKS_APIKEY }} diff --git a/.gitignore b/.gitignore index a2e6bd4..5df5866 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -doc/ +/doc diff --git a/.luacheckrc b/.luacheckrc new file mode 100644 index 0000000..f4701c2 --- /dev/null +++ b/.luacheckrc @@ -0,0 +1,31 @@ +std = "min" + +include_files = { + ".busted", + ".luacheckrc", + "*.rockspec", + "src/", +} + +read_globals = { + "awesome", + "button", + "dbus", + "drawable", + "drawin", + "key", + "keygrabber", + "mousegrabber", + "selection", + "tag", + "window", + "table.unpack", + "math.atan2", +} + +globals = { + "screen", + "mouse", + "root", + "client", +} diff --git a/.stylua.toml b/.stylua.toml new file mode 100644 index 0000000..8440490 --- /dev/null +++ b/.stylua.toml @@ -0,0 +1,6 @@ +indent_type = "Spaces" +indent_width = 3 +call_parentheses = "None" + +[sort_requires] +enabled = true diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..5e5cd5b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,16 @@ +{ + "Lua.runtime.path": [ + "/usr/share/awesome/lib/?.lua", + "/usr/share/awesome/lib/?/init.lua" + ], + "[lua]": { + "editor.defaultFormatter": "JohnnyMorganz.stylua" + }, + "stylua.targetReleaseVersion": "latest", + "files.associations": { + ".busted": "lua", + ".luacheckrc": "lua", + "*.rockspec": "lua", + "config.ld": "lua" + } +} diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2f579c9 --- /dev/null +++ b/Makefile @@ -0,0 +1,24 @@ +install: + luarocks --local build + +luacheck: + luacheck . + +stylua: + stylua --check . + +ldoc-dryrun: + $(eval TMP := $(shell mktemp -d)) + ldoc --fatalwarnings --dir $(TMP) . + rm -rf $(TMP) + +cspell: + cspell lint . + +lint-rockspec: + luarocks lint awesome-battery_widget-dev-1.rockspec + +lint: luacheck stylua ldoc-dryrun cspell lint-rockspec + +ldoc: + ldoc . diff --git a/README.md b/README.md index 67b6a2d..5c48a9e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # UPower Battery Widget -This is my re-implementation of the [awesome-upower-battery][awesome-upower-battery-repository] by [berlam][berlam]. This widget has a lot of potencial for the [Awesome WM][AwesomeWM] and I wanted to hack it a bit for my personal use. +This is my re-implementation of the [awesome-upower-battery][awesome-upower-battery-repository] by [berlam][berlam]. This widget has a lot of potential for the [Awesome WM][AwesomeWM] and I wanted to hack it a bit for my personal use. UPower is an abstraction for power devices. You can use it to access advanced statistics about your power devices. UPowerGlib is a Glib interface to access data exposed by UPower. diff --git a/config.ld b/config.ld index 5b863a0..43ace71 100644 --- a/config.ld +++ b/config.ld @@ -1,12 +1,12 @@ -- Configuration file for ldoc -project = 'battery_widget' -title = 'Awesome WM - Battery Widget' +project = "battery_widget" +title = "A UPowerGlib based battery widget for the Awesome WM with a basic widget template mechanism! 🔋" all = false -dir = 'doc' -format='markdown' -pretty = 'lua' +dir = "doc" +format = "markdown" +pretty = "lua" prettify_files = true backtick_references = true merge = true @@ -15,7 +15,6 @@ wrap = true sort_modules = true not_luadoc = true - -- Define some new ldoc tags from the AwesomeWM doc new_type("staticfct", "Static functions", false, "Parameters") new_type("constructorfct", "Constructor", false, "Parameters")