diff --git a/README.md b/README.md index 4c203a6..2e32f62 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,11 @@ If you happen to use Arch Linux you can grab **epick** from [AUR](https://aur.ar $ paru -S epick ``` +If you have HomeBrew installed, you can use: +```bash +brew tap vv9k/epick && brew install --cask epick +``` + ## Build Install required libraries (only required on Linux): diff --git a/assets/app-icon-macos/Template - Icon - App.afphoto b/assets/app-icon-macos/Template - Icon - App.afphoto new file mode 100644 index 0000000..4f3a621 Binary files /dev/null and b/assets/app-icon-macos/Template - Icon - App.afphoto differ diff --git a/assets/app-icon-macos/icon.afphoto b/assets/app-icon-macos/icon.afphoto new file mode 100644 index 0000000..59c689a Binary files /dev/null and b/assets/app-icon-macos/icon.afphoto differ diff --git a/assets/app-icon-macos/icon/AppIcon.icns b/assets/app-icon-macos/icon/AppIcon.icns new file mode 100644 index 0000000..0e86741 Binary files /dev/null and b/assets/app-icon-macos/icon/AppIcon.icns differ diff --git a/assets/app-icon-macos/icon/generate_icons.sh b/assets/app-icon-macos/icon/generate_icons.sh new file mode 100755 index 0000000..ff6408e --- /dev/null +++ b/assets/app-icon-macos/icon/generate_icons.sh @@ -0,0 +1,20 @@ +#!/bin/bash +rm -r AppIcon.icns +input_filepath="${BASH_SOURCE%/*}/icon.png" +output_iconset_name="AppIcon.iconset" +mkdir $output_iconset_name + +# Generate images +sips -z 16 16 "$input_filepath" --out "${output_iconset_name}/icon_16x16.png" +sips -z 32 32 "$input_filepath" --out "${output_iconset_name}/icon_16x16@2x.png" +sips -z 32 32 "$input_filepath" --out "${output_iconset_name}/icon_32x32.png" +sips -z 64 64 "$input_filepath" --out "${output_iconset_name}/icon_32x32@2x.png" +sips -z 128 128 "$input_filepath" --out "${output_iconset_name}/icon_128x128.png" +sips -z 256 256 "$input_filepath" --out "${output_iconset_name}/icon_128x128@2x.png" +sips -z 256 256 "$input_filepath" --out "${output_iconset_name}/icon_256x256.png" +sips -z 512 512 "$input_filepath" --out "${output_iconset_name}/icon_256x256@2x.png" +sips -z 512 512 "$input_filepath" --out "${output_iconset_name}/icon_512x512.png" + +# Create .icns +iconutil -c icns -o AppIcon.icns $output_iconset_name +rm -r $output_iconset_name diff --git a/assets/app-icon-macos/icon/icon.png b/assets/app-icon-macos/icon/icon.png new file mode 100644 index 0000000..f16bbab Binary files /dev/null and b/assets/app-icon-macos/icon/icon.png differ diff --git a/scripts/homebrew/app/epick.app.tar.gz b/scripts/homebrew/app/epick.app.tar.gz new file mode 100644 index 0000000..082f56e Binary files /dev/null and b/scripts/homebrew/app/epick.app.tar.gz differ diff --git a/scripts/homebrew/app/epick.app/Contents/Info.plist b/scripts/homebrew/app/epick.app/Contents/Info.plist new file mode 100644 index 0000000..748fb62 Binary files /dev/null and b/scripts/homebrew/app/epick.app/Contents/Info.plist differ diff --git a/scripts/homebrew/app/epick.app/Contents/MacOS/epick b/scripts/homebrew/app/epick.app/Contents/MacOS/epick new file mode 100755 index 0000000..249a99b Binary files /dev/null and b/scripts/homebrew/app/epick.app/Contents/MacOS/epick differ diff --git a/scripts/homebrew/app/epick.app/Contents/Resources/AppIcon.icns b/scripts/homebrew/app/epick.app/Contents/Resources/AppIcon.icns new file mode 100644 index 0000000..0e86741 Binary files /dev/null and b/scripts/homebrew/app/epick.app/Contents/Resources/AppIcon.icns differ diff --git a/scripts/homebrew/app/epick.app/Contents/Resources/AppSettings.plist b/scripts/homebrew/app/epick.app/Contents/Resources/AppSettings.plist new file mode 100644 index 0000000..e76e52f Binary files /dev/null and b/scripts/homebrew/app/epick.app/Contents/Resources/AppSettings.plist differ diff --git a/scripts/homebrew/app/epick.app/Contents/Resources/MainMenu.nib b/scripts/homebrew/app/epick.app/Contents/Resources/MainMenu.nib new file mode 100644 index 0000000..f215593 Binary files /dev/null and b/scripts/homebrew/app/epick.app/Contents/Resources/MainMenu.nib differ diff --git a/scripts/homebrew/app/epick.app/Contents/Resources/epick b/scripts/homebrew/app/epick.app/Contents/Resources/epick new file mode 100755 index 0000000..df6aaec Binary files /dev/null and b/scripts/homebrew/app/epick.app/Contents/Resources/epick differ diff --git a/scripts/homebrew/app/epick.app/Contents/Resources/script b/scripts/homebrew/app/epick.app/Contents/Resources/script new file mode 100755 index 0000000..7e0d6d5 --- /dev/null +++ b/scripts/homebrew/app/epick.app/Contents/Resources/script @@ -0,0 +1 @@ +./epick diff --git a/scripts/homebrew/build_cask.sh b/scripts/homebrew/build_cask.sh new file mode 100755 index 0000000..656e0cb --- /dev/null +++ b/scripts/homebrew/build_cask.sh @@ -0,0 +1,5 @@ +SHA=$(shasum -a 256 "${BASH_SOURCE%/*}/app/epick.app.tar.gz") +SHA=$(SHA=$SHA swift parse_sha.swift) + +CASK=$(VERSION=$VERSION SHA=$SHA URL=$URL swift build_cask.swift) +printf "%s" "$CASK" \ No newline at end of file diff --git a/scripts/homebrew/build_cask.swift b/scripts/homebrew/build_cask.swift new file mode 100644 index 0000000..3450157 --- /dev/null +++ b/scripts/homebrew/build_cask.swift @@ -0,0 +1,20 @@ +import Foundation + +let version: String = ProcessInfo.processInfo.environment["VERSION"] ?? "" +let sha256: String = ProcessInfo.processInfo.environment["SHA"] ?? "" +let url: String = ProcessInfo.processInfo.environment["URL"] ?? "" +let cask = """ +cask \"epick\" do + version \"\(version)\" + sha256 \"\(sha256)\" + + url \"\(url)\" + name \"epick\" + + desc \"Color picker for creating harmonic color palettes that works on Linux, Windows, macOS and web.\" + homepage \"https://github.com/vv9k/epick\" + + app \"app/epick.app\" +end +""" +print(cask) \ No newline at end of file diff --git a/scripts/homebrew/build_homebrew.sh b/scripts/homebrew/build_homebrew.sh new file mode 100755 index 0000000..288dc7d --- /dev/null +++ b/scripts/homebrew/build_homebrew.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Build release version (NOTE: I am not an expert on rust's targets) +echo "Building..." +cargo build --release --target x86_64-apple-darwin + +# Copy build to app +cp "${BASH_SOURCE%/*}/../../target/x86_64-apple-darwin/release/epick" "${BASH_SOURCE%/*}/app/epick.app/Contents/Resources/epick" + +# Generate icons (Only has to be done when the icon is updated + don't forget to also change the icon of the epick.app file) +# echo "Generating icons..." +# "${BASH_SOURCE%/*}/../../assets/app-icon-macos/icon/generate_icons.sh" +# Copy icons +# cp "${BASH_SOURCE%/*}/../../assets/app-icon-macos/icon/AppIcon.icns" "${BASH_SOURCE%/*}/app/epick.app/Contents/Resources/AppIcon.icns" + +# Generate archive +echo "Bundling..." +tar -czf "${BASH_SOURCE%/*}/app/epick.app.tar.gz" "${BASH_SOURCE%/*}/app/epick.app" + +# Build Cask diff --git a/scripts/homebrew/parse_sha.swift b/scripts/homebrew/parse_sha.swift new file mode 100644 index 0000000..81321cb --- /dev/null +++ b/scripts/homebrew/parse_sha.swift @@ -0,0 +1,13 @@ +import Foundation + +let sha256_un_parsed: String = ProcessInfo.processInfo.environment["SHA"] ?? "" +let chars = Array(sha256_un_parsed) +var sha256: String = "" +for char in chars { + if char == " " { + break + } else { + sha256.append(char) + } +} +print(sha256)