diff --git a/.github/workflows/chatgpt-review.yml b/.github/workflows/chatgpt-review.yml new file mode 100644 index 00000000..e10fd1da --- /dev/null +++ b/.github/workflows/chatgpt-review.yml @@ -0,0 +1,30 @@ +name: Code Review + +permissions: + contents: read + pull-requests: write + +on: + pull_request: + pull_request_review_comment: + types: [created] + +concurrency: + group: + ${{ github.repository }}-${{ github.event.number || github.head_ref || + github.sha }}-${{ github.workflow }}-${{ github.event_name == + 'pull_request_review_comment' && 'pr_comment' || 'pr' }} + cancel-in-progress: ${{ github.event_name != 'pull_request_review_comment' }} + +jobs: + review: + runs-on: ubuntu-latest + steps: + - uses: fluxninja/openai-pr-reviewer@latest + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + with: + debug: false + review_simple_changes: false + review_comment_lgtm: false \ No newline at end of file diff --git a/docs/INSPIRATION.md b/docs/INSPIRATION.md index 984ddeb6..c7dea773 100644 --- a/docs/INSPIRATION.md +++ b/docs/INSPIRATION.md @@ -14,6 +14,7 @@ * https://github.com/linuxserver/docker-webtop * https://github.com/chocolatey/boxstarter * https://github.com/changkun/occamy +* https://cliffy.io/docs@v0.25.7 ## System diff --git a/docs/TODO.md b/docs/TODO.md index d3fa458a..a0b9be97 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -26,6 +26,7 @@ The following items are things we would like to include into the Install Doctor * Monitor https://moonrepo.dev/moon as possible mono-repo manager * Determine whether or not https://webinstall.dev/vim-gui/ will add value to the VIM experience * Wait for packages to be available for GitHub Actions https://github.com/actions/runner +* Find best Figma plugins here: https://www.figma.com/community/popular ## Review @@ -63,6 +64,10 @@ The following items are Docker containers that we may want to include as default * https://easypanel.io/ - App deployments * https://www.activepieces.com/docs/install/docker * https://github.com/activepieces/activepieces - SaaS Automations +* https://github.com/diced/zipline - ShareX / File uploads +* https://github.com/anse-app/anse - ChatGPT interface +* https://github.com/wireapp/wire-webapp - Internal Slack +* https://github.com/jhaals/yopass - OTS web app ### Kubernetes @@ -86,9 +91,6 @@ The projects below are software systems that might be incorporated to handle bar The following items have been reviewed but need to be revisited due to complexity or other reasons. -* https://github.com/microsoft/azuredatastudio -* https://github.com/Nutlope/roomGPT -* https://github.com/Zettlr/Zettlr * https://github.com/AmruthPillai/Reactive-Resume * https://github.com/kubeflow/kubeflow * https://github.com/leon-ai/leon @@ -102,6 +104,5 @@ The following items have been reviewed but need to be revisited due to complexit * builder.io * https://github.com/hocus-dev/hocus * https://github.com/Kanaries/Rath -* https://github.com/reworkd/AgentGPT * cvat.io * https://github.com/illacloud/illa-builder diff --git a/home/.chezmoidata.yaml b/home/.chezmoidata.yaml index 0c617a8e..7c8da906 100644 --- a/home/.chezmoidata.yaml +++ b/home/.chezmoidata.yaml @@ -458,6 +458,7 @@ softwareGroups: - usql Database-Desktop: &Database-Desktop - beekeeper-studio + - mongodb-compass - sqlectron Development-Tools-Desktop: &Development-Tools-Desktop - catlight @@ -511,12 +512,14 @@ softwareGroups: - firefox - flow-launcher - fonts + - gnome - iina - kvantum - lapce - malwarebytes - portmaster - rofi + - sddm - tabby - vlc - vscode @@ -543,6 +546,7 @@ softwareGroups: - git-bug - git-extras - git-filter-repo + - git-jump - git-lfs - git-open - git-secret @@ -644,6 +648,7 @@ softwareGroups: - exiftool - ffmpeg - imagemagick + - korkut - pandoc - sharp - spotdl @@ -983,6 +988,7 @@ softwareGroups: - feathers - firebase - flutter + - generator-ngx-rocket - gfi - gulp - hey @@ -1011,6 +1017,7 @@ softwareGroups: - npm-check # Similar to npm-check-updates - npm-check-updates - oclif + - osx-sign - package-size - page-fetch - pageres diff --git a/home/.chezmoiscripts/universal/run_onchange_after_50-rclone.sh.tmpl b/home/.chezmoiscripts/universal/run_onchange_after_50-rclone.sh.tmpl index 479ccac7..6b05b2f6 100644 --- a/home/.chezmoiscripts/universal/run_onchange_after_50-rclone.sh.tmpl +++ b/home/.chezmoiscripts/universal/run_onchange_after_50-rclone.sh.tmpl @@ -53,6 +53,10 @@ if command -v rclone > /dev/null; then logg info 'Ensuring /var/cache/rclone exists' sudo mkdir -p /var/cache/rclone sudo chmod 700 /var/cache/rclone + # Add user / group with script in ~/.local/bin/add-user, if it is available + if command -v add-user > /dev/null; then + sudo add-user rclone + fi sudo chown -Rf rclone:rclone /var/cache/rclone logg info 'Ensuring /var/log/rclone exists' diff --git a/home/.chezmoitemplates/archlinux/common-dependencies b/home/.chezmoitemplates/archlinux/common-dependencies index 786f40ae..27f0fe50 100644 --- a/home/.chezmoitemplates/archlinux/common-dependencies +++ b/home/.chezmoitemplates/archlinux/common-dependencies @@ -2,6 +2,7 @@ "age" "base-devel" "ccid" + "gnome" "hopenpgp-tools" "libaio" "libxcursor" @@ -14,6 +15,7 @@ "openssl" "pcsclite" "progress" + "sddm" "secure-delete" "tk" "xorg-fonts-type1" diff --git a/home/.chezmoitemplates/centos/common-dependencies b/home/.chezmoitemplates/centos/common-dependencies index d635e327..ce25706f 100644 --- a/home/.chezmoitemplates/centos/common-dependencies +++ b/home/.chezmoitemplates/centos/common-dependencies @@ -1,6 +1,7 @@ {{- $packages := list "gcc" "gcc-c++" + "gnome" "gnupg2-smime" "kernel-devel" "libaio" @@ -13,6 +14,7 @@ "npm" "pcsc-lite" "ruby-devel" + "sddm" "xorg-x11-fonts-Type1" "xorg-x11-xauth" "xrandr" diff --git a/home/.chezmoitemplates/debian/common-dependencies b/home/.chezmoitemplates/debian/common-dependencies index b3eb71ee..81c0eed7 100644 --- a/home/.chezmoitemplates/debian/common-dependencies +++ b/home/.chezmoitemplates/debian/common-dependencies @@ -1,6 +1,7 @@ {{- $packages := list "age/bullseye-backports" "build-essential" + "gnome" "gnupg-agent" "hopenpgp-tools" "libaio1" @@ -26,6 +27,7 @@ "progress" "ruby-dev" "scdaemon" + "sddm" "secure-delete" "tk-dev" "x11-apps" diff --git a/home/.chezmoitemplates/fedora/common-dependencies b/home/.chezmoitemplates/fedora/common-dependencies index 8874a8bb..c43ee6d2 100644 --- a/home/.chezmoitemplates/fedora/common-dependencies +++ b/home/.chezmoitemplates/fedora/common-dependencies @@ -2,6 +2,7 @@ "age" "gcc" "gcc-c++" + "gnome" "gnupg2-smime" "kernel-devel" "libaio" @@ -18,6 +19,7 @@ "pcsc-tools" "progress" "ruby-devel" + "sddm" "xorg-x11-fonts-Type1" "xorg-x11-xauth" "xrandr" diff --git a/home/.chezmoitemplates/opensuse/common-dependencies b/home/.chezmoitemplates/opensuse/common-dependencies index 9e59750f..e6a195d8 100644 --- a/home/.chezmoitemplates/opensuse/common-dependencies +++ b/home/.chezmoitemplates/opensuse/common-dependencies @@ -1,10 +1,12 @@ {{- $packages := list "age" "bash" + "gnome" "locate" "nodejs" "npm" "progress" + "sddm" "secure-delete" -}} {{- $packages | join " " -}} \ No newline at end of file diff --git a/home/.chezmoitemplates/ubuntu/common-dependencies b/home/.chezmoitemplates/ubuntu/common-dependencies index c38feac9..ccc5aed9 100644 --- a/home/.chezmoitemplates/ubuntu/common-dependencies +++ b/home/.chezmoitemplates/ubuntu/common-dependencies @@ -1,6 +1,7 @@ {{- $packages := list "age" "build-essential" + "gnome" "gnupg-agent" "hopenpgp-tools" "libaio1" @@ -26,6 +27,7 @@ "progress" "ruby-dev" "scdaemon" + "sddm" "secure-delete" "tk-dev" "x11-apps" diff --git a/home/dot_local/bin/executable_add-user b/home/dot_local/bin/executable_add-user new file mode 100644 index 00000000..a8e2c6fb --- /dev/null +++ b/home/dot_local/bin/executable_add-user @@ -0,0 +1,95 @@ +#!/usr/bin/env bash +# @file ~/.local/bin/add-user +# @brief Add a user and a group with the same name on either Linux or macOS +# @description +# This script is utilized by other scripts to ensure that there is both a user and group +# named by the single argument that this executable accepts. It checks whether or not +# there is already a user / group with the name present on the system before running +# any code. On macOS, it assigns the user an ID that equal to the maximum user ID present +# on the system plus one. +# +# This script was generated with ChatGPT. + +# Check if the script is being run as root +if [[ $EUID -ne 0 ]]; then + echo -e "\e[91mThis script must be run as root\e[0m" + exit 1 +fi + +# Check if the correct number of arguments is provided +if [[ $# -ne 1 ]]; then + echo -e "\e[93mUsage: $0 \e[0m" + exit 1 +fi + +GROUP=$1 + +# Check if the operating system is macOS +if [[ "$(uname)" == "Darwin" ]]; then + echo -e "\e[96mCreating group and user ${GROUP} on macOS...\e[0m" + + # Check if the group already exists + if ! sudo dscl . read /Groups/"${GROUP}" >/dev/null 2>&1; then + # Create the group + sudo dscl . create /Groups/"${GROUP}" + # Ensure the group has a GID + if [[ "$(sudo dscl . read /Groups/"$group" gid 2>&1)" == *"No such key"* ]]; then + MAX_ID_GROUP=$(dscl . -list /Groups gid | awk '{print $2}' | sort -ug | tail -1) + GROUP_ID=$((MAX_ID_GROUP+1)) + sudo dscl . create /Groups/"${GROUP}" gid "$GROUP_ID" + fi + else + echo -e "\e[93mGroup ${GROUP} already exists\e[0m" + fi + + # Check if the user already exists + if ! sudo dscl . read /Users/"${GROUP}" >/dev/null 2>&1; then + # Create the user + sudo dscl . create /Users/"${GROUP}" + # Ensure the user has a PrimaryGroupID + if [[ "$(sudo dscl . read /Users/"${GROUP}" PrimaryGroupID 2>&1)" == *"No such key"* ]]; then + sudo dscl . create /Users/"${GROUP}" PrimaryGroupID 20 + fi + # Ensure the user has a UniqueID + if [[ "$(sudo dscl . read /Users/"${GROUP}" UniqueID 2>&1)" == *"No such key"* ]]; then + MAX_ID_USER=$(dscl . -list /Users UniqueID | sort -nr -k 2 | head -1 | grep -oE "[0-9]+$") + USER_ID="$((MAX_ID_USER+1))" + sudo dscl . create /Users/"${GROUP}" UniqueID "$USER_ID" + fi + + # Add the user to the group + sudo dseditgroup -o edit -t user -a "${GROUP}" "${GROUP}" + # Add the current user to the group + sudo dseditgroup -o edit -t user -a "${USER}" "${GROUP}" + else + echo -e "\e[93mUser ${GROUP} already exists\e[0m" + fi + + echo -e "\e[92mGroup and user ${GROUP} created successfully on macOS\e[0m" + exit 0 +elif [[ "$(uname)" == "Linux" ]]; then + echo -e "\e[96mCreating group and user ${GROUP} on Linux...\e[0m" + + # Check if the group already exists + if ! grep -qE "^${GROUP}:" /etc/group; then + # Create the group + groupadd "${GROUP}" + else + echo -e "\e[93mGroup ${GROUP} already exists\e[0m" + fi + + # Check if the user already exists + if ! id -u "${GROUP}" >/dev/null 2>&1; then + # Create the user and assign it to the group + useradd -g "${GROUP}" "${GROUP}" + else + echo -e "\e[93mUser ${GROUP} already exists\e[0m" + fi + + echo -e "\e[92mGroup and user ${GROUP} created successfully on Linux\e[0m" + exit 0 +fi + +# If the operating system is neither macOS nor Linux, display an error message +echo -e "\e[91mUnsupported operating system\e[0m" +exit 1 diff --git a/package.json b/package.json index c346e7f7..d58025d4 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,9 @@ }, "typings": "dist/main.d.ts", "dependencies": { - "tslib": "latest" + "nestia": "latest", + "tslib": "latest", + "bin-wrapper": "latest" }, "peerDependenciesMeta": { "eslint": { diff --git a/software.yml b/software.yml index f4149c36..f501fa3f 100644 --- a/software.yml +++ b/software.yml @@ -1975,6 +1975,12 @@ softwarePackages: pacman: git-delta pkg: git-delta scoop: delta + git-jump: + _bin: git-jump + _github: https://github.com/mykolaharmash/git-jump + _name: Git Jump + brew: mykolaharmash/git-jump/git-jump + npm: git-jump delve: _bin: dlv _desc: Delve is a debugger for the Go programming language. @@ -2447,6 +2453,25 @@ softwarePackages: _home: null _name: null ansible: professormanhattan.environment + mongodb-compass: + _bin: mongodb-compass + _github: https://github.com/mongodb-js/compass + _name: MongoDB Compass + _when:cask: '! test -d "/Applications/MongoDB Compass.app"' + cask: mongodb-compass + choco: mongodb-compass + dnf: https://downloads.mongodb.com/compass/mongodb-compass-1.38.0.x86_64.rpm + apt: https://downloads.mongodb.com/compass/mongodb-compass_1.38.0_amd64.deb + osx-sign: + _bin: electron-osx-sign + _github: https://github.com/electron/osx-sign + _name: macOS Code Sign + npm: '@electron/osx-sign' + korkut: + _bin: korkut + _github: https://github.com/oguzhaninan/korkut + _name: Korkut + npm: korkut eslint: _bin: eslint _desc: '[ESLint](https://eslint.org/) allows you to find and fix problems in your JavaScript code' @@ -2456,6 +2481,11 @@ softwarePackages: _name: ESLint brew: eslint npm: eslint + eslint-interactive: + _bin: eslint-interactive + _github: https://github.com/mizdra/eslint-interactive + _name: ESLint Interactive + npm: eslint-interactive ntl: _bin: ntl _desc: null @@ -5749,6 +5779,11 @@ softwarePackages: cask: ngrok choco: ngrok snap: ngrok + generator-ngx-rocket: + _bin: ngx + _github: https://github.com/ngx-rocket/generator-ngx-rocket + _name: Angular + npm: generator-ngx-rocket ngxtop: _bin: ngxtop _desc: Real-time metrics for nginx server @@ -5815,6 +5850,16 @@ softwarePackages: _home: https://pipedream.com/ _name: Pipedream CLI brew: pipedreamhq/pd-cli/pipedream + sddm: + _bin: sddm + _github: https://github.com/sddm/sddm + _name: SDDM + _post: sudo systemctl set-default graphical.target + _service: sddm + apt: sddm + dnf: sddm + pacman: sddm + zypper: sddm notion: _bin: null _desc: Notion is the connected workspace where better, faster work happens. @@ -6665,6 +6710,14 @@ softwarePackages: pacman: procs scoop: procs snap: procs + gnome: + _bin: gnome + _github: https://github.com/GNOME/gnome-shell + _name: GNOME + apt: gnome + dnf: gnome + pacman: gnome + zypper: gnome protonvpn: _bin: protonvpn _desc: '[Proton](https://www.proton.org/) is a free and open-source raster graphics editor used for image manipulation and image editing, free-form drawing, transcoding between different image file formats, and more specialized tasks. Proton is released under GPLv3+ license and is available for Linux, macOS, and Microsoft Windows.'