From f64b0714684222b63abfd94fd3b625a63e2eeab8 Mon Sep 17 00:00:00 2001 From: Ben Chatelain Date: Mon, 15 Oct 2018 22:17:07 -0600 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=A6=20Build=20an=20installer=20package?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Homebrew/Components.plist | 29 ++++++++++++++++++++++ Homebrew/Distribution.plist | 21 ++++++++++++++++ mas-cli.xcodeproj/project.pbxproj | 6 ----- script/clean | 4 ++- script/package | 41 ++++++++++++++++++++++++++----- 5 files changed, 88 insertions(+), 13 deletions(-) create mode 100644 Homebrew/Components.plist create mode 100644 Homebrew/Distribution.plist diff --git a/Homebrew/Components.plist b/Homebrew/Components.plist new file mode 100644 index 0000000..885afc0 --- /dev/null +++ b/Homebrew/Components.plist @@ -0,0 +1,29 @@ + + + + + + BundleIsVersionChecked + + BundleOverwriteAction + upgrade + ChildBundles + + + BundleOverwriteAction + + RootRelativeBundlePath + Library/Frameworks/MasKit.framework/Versions/A/Frameworks/Commandant.framework + + + BundleOverwriteAction + + RootRelativeBundlePath + Library/Frameworks/MasKit.framework/Versions/A/Frameworks/Result.framework + + + RootRelativeBundlePath + Library/Frameworks/MasKit.framework + + + diff --git a/Homebrew/Distribution.plist b/Homebrew/Distribution.plist new file mode 100644 index 0000000..ec2d781 --- /dev/null +++ b/Homebrew/Distribution.plist @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + MasTemp.pkg + diff --git a/mas-cli.xcodeproj/project.pbxproj b/mas-cli.xcodeproj/project.pbxproj index 035f1d6..628f14a 100644 --- a/mas-cli.xcodeproj/project.pbxproj +++ b/mas-cli.xcodeproj/project.pbxproj @@ -785,12 +785,10 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; COPY_PHASE_STRIP = NO; DEPLOYMENT_LOCATION = YES; - DSTROOT = "$(SRCROOT)"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/Mac", ); - INSTALL_PATH = /build; LD_RUNPATH_SEARCH_PATHS = "@executable_path/. @executable_path/MasKit.framework/Versions/Current/Frameworks /Library/Frameworks /Library/Frameworks/MasKit.framework/Versions/Current/Frameworks $(inherited)"; PRODUCT_BUNDLE_IDENTIFIER = "com.mphys.mas-cli"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -825,13 +823,11 @@ FRAMEWORK_VERSION = A; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = MasKit/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = at.phatbl.MasKit; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT)/PrivateFrameworks/CommerceKit $(SRCROOT)/PrivateFrameworks/StoreFoundation"; SWIFT_VERSION = 4.2; @@ -864,12 +860,10 @@ FRAMEWORK_VERSION = A; GCC_C_LANGUAGE_STANDARD = gnu11; INFOPLIST_FILE = MasKit/Info.plist; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = at.phatbl.MasKit; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SKIP_INSTALL = YES; SWIFT_INCLUDE_PATHS = "$(inherited) $(SRCROOT)/PrivateFrameworks/CommerceKit $(SRCROOT)/PrivateFrameworks/StoreFoundation"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 4.2; diff --git a/script/clean b/script/clean index b4d67ae..e532fb6 100755 --- a/script/clean +++ b/script/clean @@ -1,9 +1,11 @@ #!/bin/bash -e BUILD_DIR=build +INSTALL_DIR=/tmp/mas-cli.dst main() { - rm -rf $BUILD_DIR/ + rm -rf ${BUILD_DIR:?} + rm -rf ${INSTALL_DIR:?} } main diff --git a/script/package b/script/package index d09a465..09490bb 100755 --- a/script/package +++ b/script/package @@ -1,4 +1,6 @@ -#!/bin/bash -e +#!/bin/bash -ex + +xcodebuild install pushd build @@ -6,12 +8,39 @@ echo "==> 🗜️ Compressing mas.xcarchive" zip -r mas.xcarchive.zip mas.xcarchive echo "==> ️🗜️ Compressing binary and framework" -pushd mas.xcarchive/Products/build -zip -r mas-cli.zip mas MasKit.framework -mv mas-cli.zip ../../../ +pushd mas.xcarchive/Products +zip -r \ + mas-cli.zip \ + usr/local/bin/mas \ + Library/Frameworks/MasKit.framework +mv mas-cli.zip ../../ popd -echo -n "==> 🔢 SHA256: " -shasum -a 256 mas-cli.zip +echo "==> 📦 Assemble an installer package" +IDENTIFIER=com.mphys.mas-cli +COMPONENTS_PLIST=../Homebrew/Components.plist +DISTRIBUTION_PLIST=../Homebrew/Distribution.plist +INSTALL_TEMPORARY_FOLDER=/tmp/mas-cli.dst +INTERNAL_PACKAGE=mas_temp.pkg +OUTPUT_PACKAGE=mas.pkg +VERSION_STRING=1.1.1 + +tree "$INSTALL_TEMPORARY_FOLDER" + +pkgbuild \ + --component-plist "$COMPONENTS_PLIST" \ + --identifier "$IDENTIFIER" \ + --install-location "/" \ + --root "$INSTALL_TEMPORARY_FOLDER" \ + --version "$VERSION_STRING" \ + "$INTERNAL_PACKAGE" + +productbuild \ + --distribution "$DISTRIBUTION_PLIST" \ + --package-path "$INTERNAL_PACKAGE" \ + "$OUTPUT_PACKAGE" + +echo -n "==> 🔢 SHA256 " +shasum -a 256 mas-cli.zip mas.xcarchive.zip mas.pkg popd