diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml new file mode 100644 index 000000000..416a983ad --- /dev/null +++ b/.github/workflows/static.yml @@ -0,0 +1,59 @@ +# Simple workflow for deploying static content to GitHub Pages +name: Deploy static content to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +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-and-deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Build App Files + run: | + [ ! -x ./simple2json ] && chmod a+x ./simple2json + ./simple2json 2>&1 | tee build-log.txt + + echo "json conversion done" | tee -a build-log.txt + + [ ! -x ./am2pla-site ] && chmod a+x ./am2pla-site + ./am2pla-site 2>&1 | tee -a build-log.txt + + - name: Upload Build Log + uses: actions/upload-artifact@v6 + with: + name: build-log + path: build-log.txt + + - name: Setup Pages + uses: actions/configure-pages@v6 + - name: Upload artifact + uses: actions/upload-pages-artifact@v5 + with: + # Upload entire repository + path: '.' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v5 diff --git a/.github/workflows/sync-with-AM.yml b/.github/workflows/sync-with-AM.yml index 81eb92f9c..957367490 100644 --- a/.github/workflows/sync-with-AM.yml +++ b/.github/workflows/sync-with-AM.yml @@ -21,35 +21,19 @@ jobs: - name: "Checkout source repository" uses: actions/checkout@v7 - - name: "Update lists" - run: | - AM2PLA_SCRIPT=$(curl -Ls https://raw.githubusercontent.com/ivan-hc/AM/main/tools/am2pla-site) - [ -n "$AM2PLA_SCRIPT" ] && echo "$AM2PLA_SCRIPT" | grep -q "^AMREPO=" && echo "◆ Update am2pla-site script..." && echo "$AM2PLA_SCRIPT" > ./am2pla-site - sed -i 's/^cd "$(xdg-user-dir DESKTOP)"/#cd "$(xdg-user-dir DESKTOP)"/g' ./am2pla-site - [ ! -x ./am2pla-site ] && chmod a+x ./am2pla-site - ./am2pla-site - - name: "Remove unneeded pages/icons" run: | AMD64_LIST=$(curl -Ls https://raw.githubusercontent.com/ivan-hc/AM/main/programs/x86_64-apps) if [ -n "$AMD64_LIST" ] && echo "$AMD64_LIST" 2>/dev/null | grep -q "^◆ "; then - - MDS=$(ls apps/* | sed 's:.*/::; s/.md$//g') - for m in $MDS; do - if ! echo "$AMD64_LIST" 2>/dev/null | grep -q "◆ $m :"; then - rm -f "apps/$m.md" - echo "Removed apps/$m.md" + rm -f apps/*.json apps/*.md + for f in apps/*; do + name=$(echo "$f" | sed 's:.*/::; s/\.\(md\|json\)$//') + if ! echo "$AMD64_LIST" 2>/dev/null | grep -q "◆ $name :"; then + rm -f "apps/$name" + echo "Removed apps/$name" fi done - #PNGS=$(ls icons/* | sed 's:.*/::; s/.png$//g') - #for p in $PNGS; do - # if ! echo "$AMD64_LIST" 2>/dev/null | grep -q "◆ $p :"; then - # rm -f "icons/$p.png" - # echo "Removed icons/$p.png" - # fi - #done - fi - name: "Create dumb pages/icons if missing" @@ -59,10 +43,9 @@ jobs: APPS=$(echo "$AMD64_LIST" 2>/dev/null | awk '{print $2}' | xargs) for a in $APPS; do - if ! test -f apps/"$a".md; then + if ! test -f apps/"$a"; then INSTALLATION_SCRIPT=$(curl -Ls https://raw.githubusercontent.com/ivan-hc/AM/main/programs/x86_64/"$a") if [ -n "$INSTALLATION_SCRIPT" ] && echo "$INSTALLATION_SCRIPT" 2>/dev/null | grep -q "^APP=$a"; then - APP=$(echo "$a" | tr '[:lower:]' '[:upper:]') DESCRIPTION=$(echo "$AMD64_LIST" 2>/dev/null | grep "^◆ $a :" | sed "s/^◆ $a ://g") if echo "$INSTALLATION_SCRIPT" 2>/dev/null | grep -q "^SITE="; then @@ -83,36 +66,26 @@ jobs: else SITE="https://$(echo "$INSTALLATION_SCRIPT" 2>/dev/null | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*" | head -1 | awk -F[/:] '{print $4}')" fi - - printf "# $APP\n\n" > apps/"$a".md - echo "$DESCRIPTION" >> apps/"$a".md - printf "\n SITE: $SITE\n\n" >> apps/"$a".md - printf " | [Applications](https://portable-linux-apps.github.io/apps.html) | [Home](https://portable-linux-apps.github.io)\n | --- | --- |" >> apps/"$a".md - echo "Adding apps/$a.md" + ESC_DESC=$(echo "$DESCRIPTION" | sed 's/"/\\"/g') + printf '# %s\n%s\n# SCREENSHOTS: %s\n# SITES: %s\n' \ + "$a" "$ESC_DESC" "/contribute_ss.png /contribute_ss.png" "$SITE" > apps/"$a" + + echo "Adding apps/$a" fi fi done - MDS=$(ls apps/* | sed 's:.*/::; s/.md$//g') - for m in $MDS; do - if ! test -f icons/"$m".png; then - cp -r no-icon.png "icons/$m.png" - echo "Adding icons/$m.png" - fi - done - rm -f icons/*.md - fi - name: "Push to Source" run: | git config --global user.name "Portable-Linux-Apps" git config --global user.email "noreply@github.com" - git add *.md *.json am2pla-site apps icons - if git diff-index --quiet HEAD; then - echo "No changes to commit." >> $GITHUB_STEP_SUMMARY - else + git add 'apps/' 'icons/*.png' + if ! git diff-index --cached --quiet HEAD; then git commit -m "Sync files from source repository" - git push && echo "Sync to Source succeeded" >> $GITHUB_STEP_SUMMARY + git push origin + else + echo "No changes to commit." fi diff --git a/.gitignore b/.gitignore index e1c1b28a2..c9148f53c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,11 @@ -# Jekyll -_site/ -.jekyll-cache/ -.jekyll-metadata/ -.sass-cache/ - -# Gemfile dependencies -Gemfile.lock - -# Bundler files -.bundle/ - # System files .DS_Store # macOS Thumbs.db # Windows + +# Python cache +__pycache__ + +# Kate backup +*~ + +test diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2edc3a4ac..ba481f1d7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,13 +7,13 @@ This catalog is updated every half hour and is based entirely on this list: http If an app is added to this list, it means that an installation script has also been added here: https://github.com/ivan-hc/AM/tree/main/programs/x86_64 ## If an app is **added** to AM - - All lists will be automatically updated via https://github.com/ivan-hc/AM/blob/main/tools/am2pla-site - - A new .md page will be created. It will use the description in that list and the URL specified in the installation script ("SITE" variable). + - All lists will be automatically updated via https://github.com/Portable-Linux-Apps/Portable-Linux-Apps.github.io/blob/main/tools/am2pla-site + - A new .json file will be created. It will use the description in that list and the URL specified in the installation script ("SITE" variable). - A new generic icon will be created using https://github.com/Portable-Linux-Apps/Portable-Linux-Apps.github.io/blob/main/no-icon.png ## If an app is **removed** from AM - All references to it in the lists will be removed - - The .md page will be removed + - The .json file will be removed - The icon will be retained in case the application is added again in the future ## This project is powered by github actions, so... @@ -32,9 +32,7 @@ This catalog is for everyone, so anyone can make a [pull request](https://github - Icons must be 128x128 or smaller ## Update app's pages - - Write whatever you want, but leave the header (first line, the one starting with #) as is. - - You can add buttons to the ones at the bottom, including a donation link. - - You can add screenshots or GIFs. +See FAQ #5 on the website ------------------------------------ diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 22bf31a13..000000000 --- a/Gemfile +++ /dev/null @@ -1,10 +0,0 @@ -# frozen_string_literal: true - -source "https://rubygems.org" - -# gem "rails" -gem "github-pages", group: :jekyll_plugins - -# Needed for `jekyll serve` on Ruby 3.0+ (webrick was removed from the stdlib). -# GitHub Pages production doesn't use this. -gem "webrick", "~> 1.8", group: :development diff --git a/PortableLinuxApps.html b/PortableLinuxApps.html deleted file mode 100644 index c619c2ffe..000000000 --- a/PortableLinuxApps.html +++ /dev/null @@ -1,12102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -PortableLinuxApps — - -Census, cataloging and distribution of all AppImages and -portable apps for GNU/Linux, through the "AM" package manager. Largest AppImages collection! - - - - - - - - - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - diff --git a/README.md b/README.md index 4b9625cdd..28135fdb9 100644 --- a/README.md +++ b/README.md @@ -1,128 +1,2 @@ -
- -###### *Welcome to the most complete database of all AppImage packages and portable applications for GNU/Linux.* - -# PORTABLE LINUX APPS - -### *the first AUR-inspired AppImage Software Center!* - --------- - -# Main page "[Portable-Linux-Apps.github.io](https://portable-linux-apps.github.io)" - --------- - -| *[Go to the applications list](https://portable-linux-apps.github.io/apps.html)* | *[Install "AM", the package manager](https://github.com/ivan-hc/AM)* | -| - | - | -| [](https://portable-linux-apps.github.io/apps.html) | [](https://github.com/ivan-hc/AM) | - -### Testing - -Most pages on this site are auto-generated by `tools/am2pla-site` in -the [`ivan-hc/AM`](https://github.com/ivan-hc/AM) repository — a -GitHub Actions workflow runs that script every 30 minutes and pushes -the output back to `main`. Hand-edits to generated files (`index.md`, -`apps.md`, `appimages.md`, the 24 category pages, `apps.json`, the -`am2pla-site` copy in this repo) are overwritten on the next sync. -Durable changes live in `_layouts/`, `assets/css/`, `assets/js/`, -`_config.yml`, `Gemfile`, this README, and `.github/workflows/`. - -To test changes to the website before pushing or while working on a -pull request, pick one of the three options below. Docker is -recommended because the container matches the GitHub Pages build -environment and works on any host Ruby version. - -
- -#### Option 1: Docker (recommended, no local Ruby needed) - -Uses the official `ruby:3.3` image, which matches the Ruby version GitHub -Pages itself builds with. The first run takes a few minutes while -`bundle install` compiles native gems; the named `jekyll-bundle` volume -caches them so later runs start quickly. - -```sh -# delete any host-generated lockfile so the container can regenerate one -rm -f Gemfile.lock - -docker run --rm -it -p 4000:4000 \ - -v "$PWD:/srv/jekyll" -w /srv/jekyll \ - -v jekyll-bundle:/usr/local/bundle \ - ruby:3.3 \ - bash -c "bundle install && bundle exec jekyll serve --host 0.0.0.0" -``` - -#### Option 2: Local Jekyll - -* [Install Jekyll](https://jekyllrb.com/docs/installation/) -* In a terminal, change to the repository root directory -* run `bundle install` (only needed the first time, or after `Gemfile` - changes) -* run `bundle exec jekyll serve` - -Requires **Ruby 3.0 - 3.3**. The `github-pages` gem currently pins an old -version of `jekyll-github-metadata` (2.16.1) that crashes on Ruby 3.4+ -with an `instance_variable_defined?` `NameError`. If your distribution -ships Ruby 3.4 or newer, use Docker (Option 1) or install Ruby 3.3 via a -version manager such as [`rbenv`](https://github.com/rbenv/rbenv) or -[`asdf`](https://asdf-vm.com/). The `Gemfile` declares `webrick` in the -`:development` group so `jekyll serve` works on Ruby 3.0+ (GitHub Pages -production does not use `webrick`). - -#### Option 3: Testing changes to the site generation script - -If you are changing `tools/am2pla-site` in the `ivan-hc/AM` repository -(the script that produces the catalog pages on every sync), run it -against a detached worktree of this site so the output doesn't pollute -your main checkout. The `sed` mirrors what the sync workflow does — it -neutralises the script's `cd "$(xdg-user-dir DESKTOP)"` so output lands -in the worktree instead of your Desktop directory. - -```sh -# Adjust to wherever you have ivan-hc/AM cloned -AM_REPO=~/src/AM - -# Detached worktree of this repo's main branch -git worktree add -d ../pla-site-test main - -# Run the patched script inside the worktree -sed 's|^cd "$(xdg-user-dir|#&|' "$AM_REPO/tools/am2pla-site" > /tmp/am2pla-site-test -cd ../pla-site-test && bash /tmp/am2pla-site-test - -# Preview with the Docker command from Option 1 (or use Option 2) -docker run --rm -it -p 4000:4000 \ - -v "$PWD:/srv/jekyll" -w /srv/jekyll \ - -v jekyll-bundle:/usr/local/bundle \ - ruby:3.3 \ - bash -c "bundle install && bundle exec jekyll serve --host 0.0.0.0" - -# Clean up when done -cd - && git worktree remove --force ../pla-site-test -``` - -When the Docker container runs as root it leaves a root-owned -`_site/` and `Gemfile.lock` inside the worktree; `git worktree remove ---force` will fail to delete those, so finish with -`sudo rm -rf ../pla-site-test` if the remove complains. - -#### Viewing the site - -You will see messages that confirm that site has generated and the server is -running. Then in your browser, navigate to http://127.0.0.1:4000 to confirm -the changes you made are what you expected. Error messages will appear in the -terminal window from where you ran Jekyll. When you change a file, the site -will rebuild automatically (it will take a few moments and you'll be informed -in the terminal when it's done). However, if you change '_config.yml', you -must kill Jekyll with ctrl-c and run it again to test the change. - --------- - -*© 2020-present Ivan Alessandro Sala aka 'Ivan-HC'* - I'm here just for fun! - ------------------------------------------------------------------------- - -| [**ko-fi.com**](https://ko-fi.com/IvanAlexHC) | [**PayPal.me**](https://paypal.me/IvanAlexHC) | -| - | - | - ------------------------------------------------------------------------- - +# Portable Linux Apps +[Goto Website](https://portable-linux-apps.github.io/) diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 60b238a67..000000000 --- a/_config.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: PORTABLE LINUX APPS -collections: - categories: - output: true -description: >- # this means to ignore newlines until "baseurl:" - The first AUR-inspired Software Center of all AppImage packages and portable - applications for GNU/Linux. -baseurl: "" -url: https://portable-linux-apps.github.io/ -repository: Portable-Linux-Apps/portable-linux-apps.github.io -avatar: favicon.ico - -google_analytics: -piwik_analytics: - -exclude: - - node_modules - - script - - .jekyll-cache/ - - .sass-cache/ - - Gemfile - - Gemfile.lock - - README.md - - LICENSE - - .github/ - - .gitignore - - .git/ - -sass: - style: :compressed - -theme: jekyll-theme-primer -plugins: - - jekyll-seo-tag - - jekyll-redirect-from - - jekyll-sitemap - -markdown: GFM -github: - private: false - repository_url: "https://github.com/Portable-Linux-Apps/Portable-Linux-Apps.github.io" diff --git a/_includes/head-custom.html b/_includes/head-custom.html deleted file mode 100644 index 8b5dc22c4..000000000 --- a/_includes/head-custom.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/ai.md b/ai.md index d6baacfa2..076eb54a7 100644 --- a/ai.md +++ b/ai.md @@ -3,7 +3,7 @@ | [Back to Home](index.md) | [Back to Applications](apps.md) | --- | --- | -#### Here are listed **93** programs for this category. +#### Here are listed **102** programs for this category.