Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,6 @@ trim_trailing_whitespace = false

[*.yml]
indent_size = 2

[GNUmakefile]
indent_style = tab
1 change: 1 addition & 0 deletions .fpm
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
-s dir
-f
--name mommy
--license unlicense
--architecture all
Expand Down
Binary file modified .github/img/demo.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 5 additions & 4 deletions .github/img/demo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,22 @@
# * Resize window to 80x20
# * Hide console border
# 3. In SimpleScreenRecorder, select console window, and change width to 1900 and height to 800
# 4. Start recording, activate this script with global shortcut, then stop recording
# 5. Create a GIF with `ffmpeg -i simplescreenrecorder*.mkv -vf "fps=24,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 demo.gif`
# 4. Open `sh` shell
# 5. Start recording, activate this script with global shortcut, then stop recording
# 6. Create a GIF with `ffmpeg -y -i ~/Videos/simplescreenrecorder*.mkv -vf "fps=24,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 ./.github/img/demo.gif`

set -e

echo "Waiting 1 second before starting"
sleep "1"

echo "Run faulty command"
xdotool type --delay 100 "mommy ./trest.sh"
xdotool type --delay 100 "mommy make tesr"
sleep "1.5"
xdotool key Return
sleep "2"

echo "Run working command"
xdotool type --delay 100 "mommy ./test.sh"
xdotool type --delay 100 "mommy make test"
sleep "1.5"
xdotool key Return
206 changes: 166 additions & 40 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,43 +4,13 @@ on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:

permissions:
contents: write
packages: read

jobs:
create-release:
runs-on: ubuntu-latest
needs: [build-linux, build-macos, build-freebsd, build-netbsd, build-openbsd]
if: github.ref == 'refs/heads/main' # For other branches, artifacts are attached to the workflow run as `dist.zip`

steps:
- name: Checkout
uses: actions/checkout@v3
- name: Download built packages
uses: actions/download-artifact@v3
with:
name: dist
- name: Extract version number
run: echo "VERSION=v$(head -n 1 ./version)" >> $GITHUB_ENV
- name: Extract release notes
id: extract-release-notes
uses: ffurrer2/extract-release-notes@v1
with:
release_notes_file: RELEASE_NOTES.md
- name: Create release
uses: softprops/action-gh-release@v1
with:
draft: true
prerelease: false
tag_name: ${{ env.VERSION }}
body_path: RELEASE_NOTES.md
files: mommy*

build-linux:
runs-on: ubuntu-latest
steps:
Expand All @@ -50,8 +20,8 @@ jobs:
run: |
sudo apt install -y rubygems libarchive-tools rpm zstd
sudo gem install --no-document fpm
- name: Build package
run: ./build.sh apk deb rpm pacman
- name: Build packages
run: make dist/apk dist/deb dist/rpm dist/pacman
- name: Upload built package
uses: actions/upload-artifact@v3
with:
Expand All @@ -66,7 +36,7 @@ jobs:
- name: Install fpm
run: sudo gem install --no-document fpm
- name: Build package
run: ./build.sh osxpkg
run: make dist/osxpkg
- name: Upload built package
uses: actions/upload-artifact@v3
with:
Expand All @@ -83,6 +53,10 @@ jobs:
with:
usesh: true
prepare: |
echo "::group::Install basic packages"
pkg install -y git gmake || exit 1
echo "::endgroup::"

# fpm
echo "::group::Install fpm: Actually install fpm"
pkg install -y devel/ruby-gems || exit 1
Expand All @@ -97,13 +71,12 @@ jobs:
# /fpm

echo "::group::Ignore ownership issues"
pkg install -y git || exit 1
git config --global --add safe.directory "$GITHUB_WORKSPACE" || exit 1
echo "::endgroup::"
run: |
set -e

./build.sh freebsd
gmake dist/freebsd
- name: Upload built package
uses: actions/upload-artifact@v3
with:
Expand All @@ -122,21 +95,24 @@ jobs:
prepare: |
set -e

echo "::group::Install basic packages"
pkg_add git gmake || exit 1
echo "::endgroup::"

echo "::group::Install fpm"
pkg_add ruby
/usr/pkg/bin/gem* install --no-document fpm
pkg_add pkg_install # This is necessary to make `fpm` work with `pkgin` format for some reason
echo "::endgroup::"

echo "::group::Ignore ownership issues"
pkg_add git
git config --global --add safe.directory "$GITHUB_WORKSPACE"
echo "::endgroup::"
run: |
set -e
export PATH="/usr/sbin:$PATH" # Add `pkg_*` commands to path

./build.sh netbsd
gmake dist/netbsd
- name: Upload built package
uses: actions/upload-artifact@v3
with:
Expand All @@ -155,22 +131,172 @@ jobs:
prepare: |
set -e

echo "::group::Install basic packages"
pkg_add git gmake
echo "::endgroup::"

echo "::group::Install fpm"
pkg_add "$(pkg_info -Q ruby | grep "^ruby-[0-9]" | tail -n 1)"
/usr/local/bin/gem* install --no-document fpm
ln -s /usr/local/bin/fpm* /usr/local/bin/fpm # Symlink `fpm` to latest version
echo "::endgroup::"

echo "::group::Ignore ownership issues"
pkg_add git
git config --global --add safe.directory "$GITHUB_WORKSPACE"
echo "::endgroup::"
run: |
set -e

./build.sh openbsd
gmake dist/openbsd
- name: Upload built package
uses: actions/upload-artifact@v3
with:
name: dist
path: dist/mommy*


release-mommy:
runs-on: ubuntu-latest
needs: [ build-linux, build-macos, build-freebsd, build-netbsd, build-openbsd ]
if: github.ref == 'refs/heads/main' && github.event_name != 'workflow_dispatch'

steps:
- name: Checkout
uses: actions/checkout@v3
- name: Download built packages
uses: actions/download-artifact@v3
with:
name: dist
- name: Extract version number
run: echo "MOMMY_VERSION=v$(head -n 1 ./version)" >> $GITHUB_ENV
- name: Extract release notes
id: extract-release-notes
uses: ffurrer2/extract-release-notes@v1
with:
release_notes_file: RELEASE_NOTES.md
- name: Checkout release
uses: softprops/action-gh-release@v1
with:
draft: false
prerelease: false
tag_name: ${{ env.MOMMY_VERSION }}
body_path: RELEASE_NOTES.md
files: mommy*


release-aur:
runs-on: ubuntu-latest
container: archlinux:latest
needs: [ release-mommy ]

steps:
- name: Set up basic system
run: |
echo "::group::Update system"
pacman -Syu --noconfirm
echo "::endgroup::"

echo "::group::Install basic packages"
pacman -S --noconfirm --needed git base-devel
echo "::endgroup::"

echo "::group::Add non-privileged user to run makepkg"
useradd -m build
echo "build ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers
echo "::endgroup::"

- name: Checkout mommy
uses: actions/checkout@v3
with:
path: mommy
- name: Extract version number
run: echo "MOMMY_VERSION=v$(head -n 1 ./mommy/version)" >> $GITHUB_ENV

- name: Checkout aur-mommy
uses: actions/checkout@v3
with:
repository: FWDekker/aur-mommy
path: aur-mommy
ref: master
fetch-depth: 0
# Required to trigger CI action when pushed
token: ${{ secrets.personal_access_token }}
- name: Fix aur-mommy directory ownership
run: chown -R build:build ./aur-mommy/
- name: Update build files
working-directory: ./aur-mommy/
run: |
echo "::group::Fast-forward main"
git checkout dev
git checkout master
git merge --commit dev
echo "::endgroup::"

echo "::group::Update build files"
./update.sh "$MOMMY_VERSION"
echo "::endgroup::"

echo "::group::Commit update"
git config --global user.name "FWDekkerBot"
git config --global user.email "bot@fwdekker.com"
git commit -am "mommy updated the build files to mommy $MOMMY_VERSION~"
echo "::endgroup::"

echo "::group::Fast-forward dev"
git checkout dev
git merge --commit master
echo "::endgroup::"

echo "::group::Push changes"
git push origin master dev
echo "::endgroup::"


release-homebrew:
runs-on: ubuntu-latest
needs: [ release-mommy ]

steps:
- name: Checkout mommy
uses: actions/checkout@v3
with:
path: mommy
- name: Extract version number
run: echo "MOMMY_VERSION=v$(head -n 1 ./mommy/version)" >> $GITHUB_ENV

- name: Checkout homebrew-mommy
uses: actions/checkout@v3
with:
repository: FWDekker/homebrew-mommy
path: homebrew-mommy
ref: main
fetch-depth: 0
# Required to trigger CI action when pushed
token: ${{ secrets.personal_access_token }}
- name: Update formula
working-directory: ./homebrew-mommy/
run: |
echo "::group::Fast-forward main"
git checkout dev
git checkout main
git merge --commit dev
echo "::endgroup::"

echo "::group::Update formula"
./update.sh "$MOMMY_VERSION"
echo "::endgroup::"

echo "::group::Commit update"
git config --global user.name "FWDekkerBot"
git config --global user.email "bot@fwdekker.com"
git commit -am "mommy updated the formula to mommy $MOMMY_VERSION~"
echo "::endgroup::"

echo "::group::Fast-forward dev"
git checkout dev
git merge --commit main
echo "::endgroup::"

echo "::group::Push changes"
git push origin main dev
echo "::endgroup::"
Loading