From c561c4da77c6d1e8ae03e2262951bf629b448273 Mon Sep 17 00:00:00 2001 From: Nolan Waite Date: Thu, 19 Oct 2023 04:14:03 -0300 Subject: [PATCH] Ditch .xcworkspace in favour of standalone .xcodeproj --- .../project.pbxproj | 111 +++++++++++------- .../contents.xcworkspacedata | 2 +- .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/swiftpm/Package.resolved | 24 ++-- .../xcshareddata/xcschemes/Awful.xcscheme | 2 +- .../xcschemes/CopyMarkdownApp.xcscheme | 0 .../xcschemes/CopyMarkdownExtension.xcscheme | 0 .../xcschemes/Smilie Keyboard.xcscheme | 0 .../xcschemes/SmilieExtractor.xcscheme | 0 .../xcschemes/Smilies Stickers.xcscheme | 0 Awful.xcworkspace/contents.xcworkspacedata | 28 ----- .../xcshareddata/IDETemplateMacros.plist | 10 -- {Xcode => Config}/Awful.xctestplan | 12 +- .../Config => Config}/Common-Debug.xcconfig | 0 .../Config => Config}/Common-Release.xcconfig | 0 {Xcode/Config => Config}/Common.xcconfig | 2 +- .../sourcery.yml | 0 {Xcode => Scripts}/beta | 12 +- {Xcode => Scripts}/bump | 0 {Xcode => Scripts}/bump.py | 2 +- {Xcode => Scripts}/fix-copyright.rb | 0 {Xcode => Scripts}/submit | 0 {Xcode => Scripts}/submit.py | 0 .../xcshareddata/Awful.xccheckout | 53 --------- Xcode/ci_scripts/ci_post_clone.sh | 7 -- 25 files changed, 93 insertions(+), 172 deletions(-) rename {Xcode/Awful.xcodeproj => Awful.xcodeproj}/project.pbxproj (97%) rename {Xcode/Awful.xcodeproj => Awful.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (72%) rename {Awful.xcworkspace => Awful.xcodeproj/project.xcworkspace}/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {Awful.xcworkspace => Awful.xcodeproj/project.xcworkspace}/xcshareddata/swiftpm/Package.resolved (74%) rename {Xcode/Awful.xcodeproj => Awful.xcodeproj}/xcshareddata/xcschemes/Awful.xcscheme (99%) rename {Xcode/Awful.xcodeproj => Awful.xcodeproj}/xcshareddata/xcschemes/CopyMarkdownApp.xcscheme (100%) rename {Xcode/Awful.xcodeproj => Awful.xcodeproj}/xcshareddata/xcschemes/CopyMarkdownExtension.xcscheme (100%) rename {Xcode/Awful.xcodeproj => Awful.xcodeproj}/xcshareddata/xcschemes/Smilie Keyboard.xcscheme (100%) rename {Xcode/Awful.xcodeproj => Awful.xcodeproj}/xcshareddata/xcschemes/SmilieExtractor.xcscheme (100%) rename {Xcode/Awful.xcodeproj => Awful.xcodeproj}/xcshareddata/xcschemes/Smilies Stickers.xcscheme (100%) delete mode 100644 Awful.xcworkspace/contents.xcworkspacedata delete mode 100644 Awful.xcworkspace/xcshareddata/IDETemplateMacros.plist rename {Xcode => Config}/Awful.xctestplan (77%) rename {Xcode/Config => Config}/Common-Debug.xcconfig (100%) rename {Xcode/Config => Config}/Common-Release.xcconfig (100%) rename {Xcode/Config => Config}/Common.xcconfig (98%) rename Xcode/sourcery-config.yml => Config/sourcery.yml (100%) rename {Xcode => Scripts}/beta (95%) rename {Xcode => Scripts}/bump (100%) rename {Xcode => Scripts}/bump.py (97%) rename {Xcode => Scripts}/fix-copyright.rb (100%) rename {Xcode => Scripts}/submit (100%) rename {Xcode => Scripts}/submit.py (100%) delete mode 100644 Xcode/Awful.xcodeproj/project.xcworkspace/xcshareddata/Awful.xccheckout delete mode 100755 Xcode/ci_scripts/ci_post_clone.sh diff --git a/Xcode/Awful.xcodeproj/project.pbxproj b/Awful.xcodeproj/project.pbxproj similarity index 97% rename from Xcode/Awful.xcodeproj/project.pbxproj rename to Awful.xcodeproj/project.pbxproj index 904b85d0b..ed6b32cc8 100644 --- a/Xcode/Awful.xcodeproj/project.pbxproj +++ b/Awful.xcodeproj/project.pbxproj @@ -374,7 +374,6 @@ 1C015BBE21A9C8D00027C9F1 /* ScrollViewDelegateMultiplexer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScrollViewDelegateMultiplexer.h; sourceTree = ""; }; 1C015BBF21A9C8D00027C9F1 /* ScrollViewDelegateMultiplexer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScrollViewDelegateMultiplexer.m; sourceTree = ""; }; 1C0396372AE1059F00ABF9FA /* PullToRefresh */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = PullToRefresh; sourceTree = ""; }; - 1C065F8D272B8D12007005ED /* ci_post_clone.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = ci_post_clone.sh; sourceTree = ""; }; 1C09BFEF1A09D485007C11F5 /* InAppActionCollectionViewLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InAppActionCollectionViewLayout.swift; sourceTree = ""; }; 1C09BFF11A09F86A007C11F5 /* InAppActionCollectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InAppActionCollectionView.swift; sourceTree = ""; }; 1C0AFAE01ECA96E6002D4003 /* posts-view-alternate-dark.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = "posts-view-alternate-dark.css"; sourceTree = ""; }; @@ -389,7 +388,7 @@ 1C15334B20707EB10021A2BD /* Common.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Common.xcconfig; sourceTree = ""; }; 1C15334E20708F140021A2BD /* Common-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Common-Debug.xcconfig"; sourceTree = ""; }; 1C15334F20708F250021A2BD /* Common-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Common-Release.xcconfig"; sourceTree = ""; }; - 1C15335220709E950021A2BD /* Local.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Local.xcconfig; path = ../../Local.xcconfig; sourceTree = ""; }; + 1C15335220709E950021A2BD /* Local.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Local.xcconfig; sourceTree = SOURCE_ROOT; }; 1C16FB9F1CB492C600C88BD1 /* ComposeField.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ComposeField.swift; sourceTree = ""; }; 1C16FBA11CB49D2700C88BD1 /* SelfHostingAttachmentInterpolator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SelfHostingAttachmentInterpolator.swift; sourceTree = ""; }; 1C16FBA31CB4A41C00C88BD1 /* ComposeTextView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ComposeTextView.swift; sourceTree = ""; }; @@ -468,6 +467,14 @@ 1C3A143D19DFC5D10022C44C /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; 1C3A144019DFC5D10022C44C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 1C3A144519DFC5D10022C44C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 1C3A8D3E2AE10AF9003E9A07 /* MRProgress */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = MRProgress; sourceTree = ""; }; + 1C3A8D402AE10D3B003E9A07 /* beta */ = {isa = PBXFileReference; explicitFileType = text.script.python; path = beta; sourceTree = ""; }; + 1C3A8D412AE10D3B003E9A07 /* submit.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = submit.py; sourceTree = ""; }; + 1C3A8D422AE10D3B003E9A07 /* Awful.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = Awful.xctestplan; sourceTree = ""; }; + 1C3A8D432AE10D3B003E9A07 /* fix-copyright.rb */ = {isa = PBXFileReference; lastKnownFileType = text.script.ruby; path = "fix-copyright.rb"; sourceTree = ""; }; + 1C3A8D442AE10D3B003E9A07 /* submit */ = {isa = PBXFileReference; explicitFileType = text.script.python; path = submit; sourceTree = ""; }; + 1C3A8D452AE10D3B003E9A07 /* bump.py */ = {isa = PBXFileReference; lastKnownFileType = text.script.python; path = bump.py; sourceTree = ""; }; + 1C3A8D462AE10D3B003E9A07 /* bump */ = {isa = PBXFileReference; explicitFileType = text.script.python; path = bump; sourceTree = ""; }; 1C3E180E224C558500BD88E5 /* FLAnimatedImageView+Nuke.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FLAnimatedImageView+Nuke.swift"; sourceTree = ""; }; 1C3E1814224C632A00BD88E5 /* UIImage+Decompression.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Decompression.swift"; sourceTree = ""; }; 1C3E1816224C659500BD88E5 /* CGImage+IsOpaque.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CGImage+IsOpaque.swift"; sourceTree = ""; }; @@ -594,6 +601,12 @@ 1CD7EED5228501BF00B62865 /* CGRect+Center.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CGRect+Center.swift"; sourceTree = ""; }; 1CD7EED7228504C100B62865 /* UIView+CompressedHeight.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+CompressedHeight.swift"; sourceTree = ""; }; 1CD9FB631D1A38030070C8C7 /* NigglyRefreshView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NigglyRefreshView.swift; sourceTree = ""; }; + 1CDAC85B2AE10966006CEE88 /* ImgurAnonymousAPI */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = ImgurAnonymousAPI; sourceTree = ""; }; + 1CDAC85C2AE10966006CEE88 /* AwfulCore */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = AwfulCore; sourceTree = ""; }; + 1CDAC85E2AE10966006CEE88 /* AwfulSwift */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = AwfulSwift; sourceTree = ""; }; + 1CDAC85F2AE10966006CEE88 /* AwfulScraping */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = AwfulScraping; sourceTree = ""; }; + 1CDAC8602AE10966006CEE88 /* Smilies */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = Smilies; sourceTree = ""; }; + 1CDAC8612AE10966006CEE88 /* Logger */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = Logger; sourceTree = ""; }; 1CDC53D921FCF38F0086BD2B /* OpenCopiedURLController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenCopiedURLController.swift; sourceTree = ""; }; 1CDC53DB220131400086BD2B /* ImgurAnonymousAPI+Shared.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ImgurAnonymousAPI+Shared.swift"; sourceTree = ""; }; 1CDC53DF220669640086BD2B /* Photos+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Photos+.swift"; sourceTree = ""; }; @@ -605,7 +618,7 @@ 1CE2B76A19C2374C00FDC33E /* Login.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Login.storyboard; sourceTree = ""; }; 1CE55A791A1072D900E474A6 /* ForumsTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ForumsTableViewController.swift; sourceTree = ""; }; 1CEB5BFE19AB9C1700C82C30 /* InAppActionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InAppActionViewController.swift; sourceTree = ""; }; - 1CF0A6C520A50FC5004C26EA /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; + 1CF0A6C520A50FC5004C26EA /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 1CF171FF225A4D78004B2ABB /* UILayoutPriority+IntegerLiteral.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UILayoutPriority+IntegerLiteral.swift"; sourceTree = ""; }; 1CF186A517D48E5700B26717 /* Thread Tags */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "Thread Tags"; sourceTree = ""; }; 1CF264C91F7811EA0059CCCA /* RootTabBarController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = RootTabBarController.storyboard; sourceTree = ""; }; @@ -751,13 +764,13 @@ isa = PBXGroup; children = ( 1C5C2C5422D2584100EA5A80 /* ARChromeActivity */, + 1C3A8D3E2AE10AF9003E9A07 /* MRProgress */, 1C4712302665640500E5AA74 /* PSMenuItem */, 1C0396372AE1059F00ABF9FA /* PullToRefresh */, 1C453F4423384923007AC6CD /* README.md */, 1C5C2C4E22D254D600EA5A80 /* TUSafariActivity */, ); - name = Vendor; - path = ../Vendor; + path = Vendor; sourceTree = ""; }; 19C28FACFE9D520D11CA2CBB /* Products */ = { @@ -793,17 +806,10 @@ path = Navigation; sourceTree = ""; }; - 1C065F8C272B8CEE007005ED /* ci_scripts */ = { - isa = PBXGroup; - children = ( - 1C065F8D272B8D12007005ED /* ci_post_clone.sh */, - ); - path = ci_scripts; - sourceTree = ""; - }; 1C15334D20708EFF0021A2BD /* Config */ = { isa = PBXGroup; children = ( + 1C3A8D422AE10D3B003E9A07 /* Awful.xctestplan */, 1C15334E20708F140021A2BD /* Common-Debug.xcconfig */, 1C15334F20708F250021A2BD /* Common-Release.xcconfig */, 1C15334B20707EB10021A2BD /* Common.xcconfig */, @@ -1011,8 +1017,7 @@ 1CD005CD1BB734C900232FFD /* View Controllers */, 1CF7FACB1BB60C2200A077F2 /* Views */, ); - name = App; - path = ../App; + path = App; sourceTree = ""; }; 1C3A143419DFC5D10022C44C /* Extractor */ = { @@ -1032,6 +1037,19 @@ path = Extractor; sourceTree = ""; }; + 1C3A8D3F2AE10D3B003E9A07 /* Scripts */ = { + isa = PBXGroup; + children = ( + 1C3A8D402AE10D3B003E9A07 /* beta */, + 1C3A8D462AE10D3B003E9A07 /* bump */, + 1C3A8D452AE10D3B003E9A07 /* bump.py */, + 1C3A8D432AE10D3B003E9A07 /* fix-copyright.rb */, + 1C3A8D442AE10D3B003E9A07 /* submit */, + 1C3A8D412AE10D3B003E9A07 /* submit.py */, + ); + path = Scripts; + sourceTree = ""; + }; 1C4712302665640500E5AA74 /* PSMenuItem */ = { isa = PBXGroup; children = ( @@ -1073,8 +1091,7 @@ 1C56972224C3F1900077CA62 /* App */, 1C56973824C3F1910077CA62 /* Extension */, ); - name = CopyMarkdown; - path = ../CopyMarkdown; + path = CopyMarkdown; sourceTree = ""; }; 1C5C2C4E22D254D600EA5A80 /* TUSafariActivity */ = { @@ -1093,15 +1110,14 @@ path = ARChromeActivity; sourceTree = ""; }; - 1C66A9BA19DD3017001B9A41 /* Smilies */ = { + 1C66A9BA19DD3017001B9A41 /* Smilies Extra */ = { isa = PBXGroup; children = ( 1C3A143419DFC5D10022C44C /* Extractor */, 1C66AA0119DD3971001B9A41 /* Keyboard */, 1CBBAAB61D949EE100A847EC /* Stickers */, ); - name = Smilies; - path = "../Smilies Extra"; + path = "Smilies Extra"; sourceTree = ""; }; 1C66AA0119DD3971001B9A41 /* Keyboard */ = { @@ -1372,13 +1388,19 @@ isa = PBXGroup; children = ( 1C3857A115675AFE0078AF95 /* App */, - 1C065F8C272B8CEE007005ED /* ci_scripts */, + 1CDAC85C2AE10966006CEE88 /* AwfulCore */, + 1CDAC85F2AE10966006CEE88 /* AwfulScraping */, + 1CDAC85E2AE10966006CEE88 /* AwfulSwift */, 1C15334D20708EFF0021A2BD /* Config */, 1C56974E24C3F39B0077CA62 /* CopyMarkdown */, 29B97323FDCFA39411CA2CEA /* Frameworks */, + 1CDAC85B2AE10966006CEE88 /* ImgurAnonymousAPI */, + 1CDAC8612AE10966006CEE88 /* Logger */, 19C28FACFE9D520D11CA2CBB /* Products */, 1CF0A6C520A50FC5004C26EA /* README.md */, - 1C66A9BA19DD3017001B9A41 /* Smilies */, + 1C3A8D3F2AE10D3B003E9A07 /* Scripts */, + 1CDAC8602AE10966006CEE88 /* Smilies */, + 1C66A9BA19DD3017001B9A41 /* Smilies Extra */, 1190F76913BE4ECB00B9D271 /* Vendor */, ); name = Awful; @@ -1800,15 +1822,20 @@ inputFileListPaths = ( ); inputPaths = ( + "$(PROJECT_DIR)/Vendor/Sourcery/bin/sourcery", + "$(PROJECT_DIR)/Config/sourcery.yml", + "$(PROJECT_DIR)/App/Sourcery/UserDefaults+Settings.stencil", + "$(PROJECT_DIR)/App/Settings/UserDefaults+Settings.swift", ); name = Sourcery; outputFileListPaths = ( ); outputPaths = ( + "$(PROJECT_DIR)/App/Sourcery/UserDefaults+Settings.generated", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"$PROJECT_DIR/../Vendor/Sourcery/bin/sourcery\" --config \"$PROJECT_DIR/sourcery-config.yml\"\n"; + shellScript = "\"$PROJECT_DIR/Vendor/Sourcery/bin/sourcery\" --config \"$PROJECT_DIR/Config/sourcery.yml\"\n"; showEnvVarsInLog = 0; }; 1C8F0DE6191CFA2200CE8DEE /* Compile CSS */ = { @@ -1823,7 +1850,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/bash; - shellScript = "set -eu -o pipefail\n\nPATH=\"${PROJECT_DIR}/../node_modules/less/bin:$PATH:/usr/local/bin:/usr/local/share/npm/bin:/opt/local/bin:/opt/homebrew/bin\"\nhash lessc 2>/dev/null || { echo \"Please install less! brew install less\"; exit 0; }\n\ncd \"${PROJECT_DIR}/../App\"\n\n# lessc ain't quick so we'll only compile what's changed.\n# Updating any imported LESS files should also trigger recompilation.\nIMPORTED=$(find . -name \"*.less\" -not -name \"posts-view*\" -exec stat -f %m {} \\; | sort -n -r | head -n 1)\n\nmtime() {\n echo `stat -f %m \"${1}\" 2>/dev/null`\n}\n\nlessc() {\n command lessc --no-color --include-path=\"Profiles:Theming\" \"$@\"\n}\n\nLESSFILES=(Stylesheets/profile.less)\nLESSFILES+=(Theming/posts-view*.less)\n\nfor s in \"${LESSFILES[@]}\"; do\n c=\"${s%.less}.css\"\n smodified=$(mtime \"$s\")\n cmodified=$(mtime \"$c\")\n if [[ ! -e \"$c\" || smodified -gt cmodified || IMPORTED -gt cmodified ]]; then\n echo \"Compiling $s\"\n lessc \"$s\" \"$c\"\n fi\ndone\n"; + shellScript = "set -eu -o pipefail\n\nPATH=\"${PROJECT_DIR}/node_modules/less/bin:$PATH:/usr/local/bin:/usr/local/share/npm/bin:/opt/local/bin:/opt/homebrew/bin\"\nhash lessc 2>/dev/null || { echo \"Please install less! brew install less\"; exit 0; }\n\ncd \"${PROJECT_DIR}/App\"\n\n# lessc ain't quick so we'll only compile what's changed.\n# Updating any imported LESS files should also trigger recompilation.\nIMPORTED=$(find . -name \"*.less\" -not -name \"posts-view*\" -exec stat -f %m {} \\; | sort -n -r | head -n 1)\n\nmtime() {\n echo `stat -f %m \"${1}\" 2>/dev/null`\n}\n\nlessc() {\n command lessc --no-color --include-path=\"Profiles:Theming\" \"$@\"\n}\n\nLESSFILES=(Stylesheets/profile.less)\nLESSFILES+=(Theming/posts-view*.less)\n\nfor s in \"${LESSFILES[@]}\"; do\n c=\"${s%.less}.css\"\n smodified=$(mtime \"$s\")\n cmodified=$(mtime \"$c\")\n if [[ ! -e \"$c\" || smodified -gt cmodified || IMPORTED -gt cmodified ]]; then\n echo \"Compiling $s\"\n lessc \"$s\" \"$c\"\n fi\ndone\n"; }; /* End PBXShellScriptBuildPhase section */ @@ -2099,7 +2126,7 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = "../Smilies Extra/Extractor/Info.plist"; + INFOPLIST_FILE = "Smilies Extra/Extractor/Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2113,7 +2140,7 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - INFOPLIST_FILE = "../Smilies Extra/Extractor/Info.plist"; + INFOPLIST_FILE = "Smilies Extra/Extractor/Info.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2159,7 +2186,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_ENTITLEMENTS = ../CopyMarkdown/App/App.entitlements; + CODE_SIGN_ENTITLEMENTS = CopyMarkdown/App/App.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; @@ -2183,7 +2210,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = ../CopyMarkdown/App/Info.plist; + INFOPLIST_FILE = CopyMarkdown/App/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", @@ -2237,7 +2264,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_ENTITLEMENTS = ../CopyMarkdown/App/App.entitlements; + CODE_SIGN_ENTITLEMENTS = CopyMarkdown/App/App.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; @@ -2255,7 +2282,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = ../CopyMarkdown/App/Info.plist; + INFOPLIST_FILE = CopyMarkdown/App/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", @@ -2305,7 +2332,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_ENTITLEMENTS = ../CopyMarkdown/Extension/Extension.entitlements; + CODE_SIGN_ENTITLEMENTS = CopyMarkdown/Extension/Extension.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; @@ -2328,7 +2355,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = ../CopyMarkdown/Extension/Info.plist; + INFOPLIST_FILE = CopyMarkdown/Extension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", @@ -2381,7 +2408,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_ENTITLEMENTS = ../CopyMarkdown/Extension/Extension.entitlements; + CODE_SIGN_ENTITLEMENTS = CopyMarkdown/Extension/Extension.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; @@ -2398,7 +2425,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = ../CopyMarkdown/Extension/Info.plist; + INFOPLIST_FILE = CopyMarkdown/Extension/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", @@ -2420,7 +2447,7 @@ 1C66A9FD19DD393A001B9A41 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - INFOPLIST_FILE = "../Smilies Extra/Keyboard/Info.plist"; + INFOPLIST_FILE = "Smilies Extra/Keyboard/Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = com.awfulapp.Awful.debug.SmilieKeyboard; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = NO; @@ -2430,7 +2457,7 @@ 1C66A9FE19DD393A001B9A41 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - INFOPLIST_FILE = "../Smilies Extra/Keyboard/Info.plist"; + INFOPLIST_FILE = "Smilies Extra/Keyboard/Info.plist"; PRODUCT_BUNDLE_IDENTIFIER = com.awfulapp.Awful.SmilieKeyboard; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = NO; @@ -2448,7 +2475,7 @@ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = ../App/Tests/Info.plist; + INFOPLIST_FILE = App/Tests/Info.plist; PRODUCT_BUNDLE_IDENTIFIER = ca.nolanw.Awful.Tests; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AwfulDebug.app/AwfulDebug"; @@ -2467,7 +2494,7 @@ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; - INFOPLIST_FILE = ../App/Tests/Info.plist; + INFOPLIST_FILE = App/Tests/Info.plist; PRODUCT_BUNDLE_IDENTIFIER = ca.nolanw.Awful.Tests; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AwfulDebug.app/AwfulDebug"; @@ -2480,13 +2507,13 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; BUNDLE_SHORT_VERSION = 5.5; - INFOPLIST_FILE = "$(SRCROOT)/../App/Resources/Info.plist"; + INFOPLIST_FILE = App/Resources/Info.plist; PRODUCT_BUNDLE_IDENTIFIER = com.awfulapp.Awful.debug; PRODUCT_MODULE_NAME = Awful; PRODUCT_NAME = AwfulDebug; SUPPORTS_MACCATALYST = YES; SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OBJC_BRIDGING_HEADER = "../App/Main/Awful-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "App/Main/Awful-Bridging-Header.h"; }; name = Debug; }; @@ -2496,12 +2523,12 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; BUNDLE_SHORT_VERSION = 5.5; - INFOPLIST_FILE = "$(SRCROOT)/../App/Resources/Info.plist"; + INFOPLIST_FILE = App/Resources/Info.plist; PRODUCT_BUNDLE_IDENTIFIER = com.awfulapp.Awful; PRODUCT_MODULE_NAME = Awful; PRODUCT_NAME = Awful; SUPPORTS_MACCATALYST = YES; - SWIFT_OBJC_BRIDGING_HEADER = "../App/Main/Awful-Bridging-Header.h"; + SWIFT_OBJC_BRIDGING_HEADER = "App/Main/Awful-Bridging-Header.h"; }; name = Release; }; diff --git a/Xcode/Awful.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Awful.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 72% rename from Xcode/Awful.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Awful.xcodeproj/project.xcworkspace/contents.xcworkspacedata index f3313da41..919434a62 100644 --- a/Xcode/Awful.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Awful.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/Awful.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Awful.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Awful.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Awful.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Awful.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Awful.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 74% rename from Awful.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to Awful.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 2edab8311..146dcbbfc 100644 --- a/Awful.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Awful.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Flipboard/FLAnimatedImage", "state": { "branch": null, - "revision": "e7f9fd4681ae41bf6f3056db08af4f401d61da52", - "version": "1.0.16" + "revision": "d4f07b6f164d53c1212c3e54d6460738b1981e9f", + "version": "1.0.17" } }, { @@ -15,8 +15,8 @@ "repositoryURL": "https://github.com/nolanw/HTMLReader", "state": { "branch": null, - "revision": "ba104cdd80783d9d206f27df6535fffb553c79e2", - "version": "2.2.0" + "revision": "d4003bf59feead2361f684a372123eae0afe104f", + "version": "2.2.1" } }, { @@ -24,8 +24,8 @@ "repositoryURL": "https://github.com/airbnb/lottie-ios.git", "state": { "branch": null, - "revision": "d6feea26a370019b4d3a85f5984cb95a2734776f", - "version": "4.2.0" + "revision": "45517c3cfec9469bbdd4f86e32393c28ae9df0bc", + "version": "4.3.3" } }, { @@ -33,8 +33,8 @@ "repositoryURL": "https://github.com/kean/Nuke", "state": { "branch": null, - "revision": "472a03c15f39592007d94f25abe554350bc8aa2b", - "version": "10.5.1" + "revision": "a002b7fd786f2df2ed4333fe73a9727499fd9d97", + "version": "10.11.2" } }, { @@ -51,8 +51,8 @@ "repositoryURL": "https://github.com/mxcl/PromiseKit", "state": { "branch": null, - "revision": "aea48ea1855f5d82e2dffa6027afce3aab8f3dd7", - "version": "6.13.3" + "revision": "8a98e31a47854d3180882c8068cc4d9381bf382d", + "version": "6.22.1" } }, { @@ -60,8 +60,8 @@ "repositoryURL": "https://github.com/kylef/Spectre.git", "state": { "branch": null, - "revision": "f717bbce0e19f0129fc001b2b6bed43b70fd8b87", - "version": "0.9.1" + "revision": "f79d4ecbf8bc4e1579fbd86c3e1d652fb6876c53", + "version": "0.9.2" } }, { diff --git a/Xcode/Awful.xcodeproj/xcshareddata/xcschemes/Awful.xcscheme b/Awful.xcodeproj/xcshareddata/xcschemes/Awful.xcscheme similarity index 99% rename from Xcode/Awful.xcodeproj/xcshareddata/xcschemes/Awful.xcscheme rename to Awful.xcodeproj/xcshareddata/xcschemes/Awful.xcscheme index 0477edfa1..75e26d237 100644 --- a/Xcode/Awful.xcodeproj/xcshareddata/xcschemes/Awful.xcscheme +++ b/Awful.xcodeproj/xcshareddata/xcschemes/Awful.xcscheme @@ -57,7 +57,7 @@ shouldUseLaunchSchemeArgsEnv = "YES"> diff --git a/Xcode/Awful.xcodeproj/xcshareddata/xcschemes/CopyMarkdownApp.xcscheme b/Awful.xcodeproj/xcshareddata/xcschemes/CopyMarkdownApp.xcscheme similarity index 100% rename from Xcode/Awful.xcodeproj/xcshareddata/xcschemes/CopyMarkdownApp.xcscheme rename to Awful.xcodeproj/xcshareddata/xcschemes/CopyMarkdownApp.xcscheme diff --git a/Xcode/Awful.xcodeproj/xcshareddata/xcschemes/CopyMarkdownExtension.xcscheme b/Awful.xcodeproj/xcshareddata/xcschemes/CopyMarkdownExtension.xcscheme similarity index 100% rename from Xcode/Awful.xcodeproj/xcshareddata/xcschemes/CopyMarkdownExtension.xcscheme rename to Awful.xcodeproj/xcshareddata/xcschemes/CopyMarkdownExtension.xcscheme diff --git a/Xcode/Awful.xcodeproj/xcshareddata/xcschemes/Smilie Keyboard.xcscheme b/Awful.xcodeproj/xcshareddata/xcschemes/Smilie Keyboard.xcscheme similarity index 100% rename from Xcode/Awful.xcodeproj/xcshareddata/xcschemes/Smilie Keyboard.xcscheme rename to Awful.xcodeproj/xcshareddata/xcschemes/Smilie Keyboard.xcscheme diff --git a/Xcode/Awful.xcodeproj/xcshareddata/xcschemes/SmilieExtractor.xcscheme b/Awful.xcodeproj/xcshareddata/xcschemes/SmilieExtractor.xcscheme similarity index 100% rename from Xcode/Awful.xcodeproj/xcshareddata/xcschemes/SmilieExtractor.xcscheme rename to Awful.xcodeproj/xcshareddata/xcschemes/SmilieExtractor.xcscheme diff --git a/Xcode/Awful.xcodeproj/xcshareddata/xcschemes/Smilies Stickers.xcscheme b/Awful.xcodeproj/xcshareddata/xcschemes/Smilies Stickers.xcscheme similarity index 100% rename from Xcode/Awful.xcodeproj/xcshareddata/xcschemes/Smilies Stickers.xcscheme rename to Awful.xcodeproj/xcshareddata/xcschemes/Smilies Stickers.xcscheme diff --git a/Awful.xcworkspace/contents.xcworkspacedata b/Awful.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 3d36ae91f..000000000 --- a/Awful.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/Awful.xcworkspace/xcshareddata/IDETemplateMacros.plist b/Awful.xcworkspace/xcshareddata/IDETemplateMacros.plist deleted file mode 100644 index 71b29b80a..000000000 --- a/Awful.xcworkspace/xcshareddata/IDETemplateMacros.plist +++ /dev/null @@ -1,10 +0,0 @@ - - - - - FILEHEADER - ___FILENAME___ -// -// Copyright ___YEAR___ Awful Contributors. CC BY-NC-SA 3.0 US https://github.com/Awful/Awful.app - - diff --git a/Xcode/Awful.xctestplan b/Config/Awful.xctestplan similarity index 77% rename from Xcode/Awful.xctestplan rename to Config/Awful.xctestplan index 1d5e53405..c0afeaddf 100644 --- a/Xcode/Awful.xctestplan +++ b/Config/Awful.xctestplan @@ -34,7 +34,7 @@ { "parallelizable" : true, "target" : { - "containerPath" : "container:..\/AwfulCore", + "containerPath" : "container:AwfulCore", "identifier" : "AwfulCoreTests", "name" : "AwfulCoreTests" } @@ -42,15 +42,7 @@ { "parallelizable" : true, "target" : { - "containerPath" : "container:..\/AwfulScraping", - "identifier" : "AwfulScrapingTests", - "name" : "AwfulScrapingTests" - } - }, - { - "parallelizable" : true, - "target" : { - "containerPath" : "container:..\/Smilies", + "containerPath" : "container:Smilies", "identifier" : "SmiliesTests", "name" : "SmiliesTests" } diff --git a/Xcode/Config/Common-Debug.xcconfig b/Config/Common-Debug.xcconfig similarity index 100% rename from Xcode/Config/Common-Debug.xcconfig rename to Config/Common-Debug.xcconfig diff --git a/Xcode/Config/Common-Release.xcconfig b/Config/Common-Release.xcconfig similarity index 100% rename from Xcode/Config/Common-Release.xcconfig rename to Config/Common-Release.xcconfig diff --git a/Xcode/Config/Common.xcconfig b/Config/Common.xcconfig similarity index 98% rename from Xcode/Config/Common.xcconfig rename to Config/Common.xcconfig index cf93d32cd..8c7e47844 100644 --- a/Xcode/Config/Common.xcconfig +++ b/Config/Common.xcconfig @@ -1,7 +1,7 @@ // Project-level build settings common to all configurations. // Place for settings that shouldn't be committed, like API keys. See README.md for suggestions. -#include? "../Local.xcconfig" +#include? "Local.xcconfig" ALWAYS_SEARCH_USER_PATHS = NO diff --git a/Xcode/sourcery-config.yml b/Config/sourcery.yml similarity index 100% rename from Xcode/sourcery-config.yml rename to Config/sourcery.yml diff --git a/Xcode/beta b/Scripts/beta similarity index 95% rename from Xcode/beta rename to Scripts/beta index 5cccf3cd0..2c0b6e00b 100755 --- a/Xcode/beta +++ b/Scripts/beta @@ -19,11 +19,11 @@ def attempt_git_push(): call(['git', 'push']) -def build_and_archive(build_dir, workspace, scheme, configuration, platform): +def build_and_archive(build_dir, xcodeproj, scheme, configuration, platform): archive_path = os.path.join(build_dir, 'Awful-' + platform + '.xcarchive') if platform == 'catalyst': check_call(['xcodebuild', - '-workspace', workspace, + '-project', xcodeproj, '-scheme', scheme, '-configuration', configuration, '-archivePath', archive_path, @@ -35,7 +35,7 @@ def build_and_archive(build_dir, workspace, scheme, configuration, platform): ]) else: check_call(['xcodebuild', - '-workspace', workspace, + '-project', xcodeproj, '-scheme', scheme, '-configuration', configuration, '-archivePath', archive_path, @@ -174,10 +174,10 @@ def main(): create_github_release(tag) build_dir = os.path.normpath(os.path.join(SCRIPT_DIR, '..', 'build.noindex')) - workspace = os.path.normpath(os.path.join(SCRIPT_DIR, '..', 'Awful.xcworkspace')) + xcodeproj = os.path.normpath(os.path.join(SCRIPT_DIR, '..', 'Awful.xcodeproj')) if 'catalyst' in platforms: - archive_path = build_and_archive(build_dir, workspace, 'Awful', 'Release', 'catalyst') + archive_path = build_and_archive(build_dir, xcodeproj, 'Awful', 'Release', 'catalyst') if not args.skip_upload: (app_path, zip_path) = export_archive(archive_path, build_dir, 'catalyst') @@ -190,7 +190,7 @@ def main(): if 'ios' in platforms: - archive_path = build_and_archive(build_dir, workspace, 'Awful', 'Release', 'ios') + archive_path = build_and_archive(build_dir, xcodeproj, 'Awful', 'Release', 'ios') if not args.skip_upload: (_, ipa_path) = export_archive(archive_path, build_dir, 'ios') diff --git a/Xcode/bump b/Scripts/bump similarity index 100% rename from Xcode/bump rename to Scripts/bump diff --git a/Xcode/bump.py b/Scripts/bump.py similarity index 97% rename from Xcode/bump.py rename to Scripts/bump.py index e2915d0d0..167f590e3 100644 --- a/Xcode/bump.py +++ b/Scripts/bump.py @@ -79,7 +79,7 @@ def bump_version(bumper): ensure_repo_is_clean() - xcconfig = os.path.join(script_dir, "Config", "Common.xcconfig") + xcconfig = os.path.join(script_dir, "..", "Config", "Common.xcconfig") old_bundle_version = read_bundle_version(xcconfig) new_bundle_version = bumper(old_bundle_version) diff --git a/Xcode/fix-copyright.rb b/Scripts/fix-copyright.rb similarity index 100% rename from Xcode/fix-copyright.rb rename to Scripts/fix-copyright.rb diff --git a/Xcode/submit b/Scripts/submit similarity index 100% rename from Xcode/submit rename to Scripts/submit diff --git a/Xcode/submit.py b/Scripts/submit.py similarity index 100% rename from Xcode/submit.py rename to Scripts/submit.py diff --git a/Xcode/Awful.xcodeproj/project.xcworkspace/xcshareddata/Awful.xccheckout b/Xcode/Awful.xcodeproj/project.xcworkspace/xcshareddata/Awful.xccheckout deleted file mode 100644 index 89cb8dab3..000000000 --- a/Xcode/Awful.xcodeproj/project.xcworkspace/xcshareddata/Awful.xccheckout +++ /dev/null @@ -1,53 +0,0 @@ - - - - - IDESourceControlProjectFavoriteDictionaryKey - - IDESourceControlProjectIdentifier - B533F94B-9752-4A87-B6BC-225BC2C7B697 - IDESourceControlProjectName - Awful - IDESourceControlProjectOriginsDictionary - - 8DEBCDEA-BEBA-4524-8795-EE332E1B1B01 - https://github.com/Awful/Awful.app.git - 98A936E2-06A0-4DC5-B648-A78E9DAFA88F - https://github.com/Awful/thread-tags - - IDESourceControlProjectPath - Xcode/Awful.xcodeproj/project.xcworkspace - IDESourceControlProjectRelativeInstallPathDictionary - - 8DEBCDEA-BEBA-4524-8795-EE332E1B1B01 - ../../.. - 98A936E2-06A0-4DC5-B648-A78E9DAFA88F - ../../../App/Resources/Thread Tags - - IDESourceControlProjectURL - https://github.com/Awful/Awful.app.git - IDESourceControlProjectVersion - 110 - IDESourceControlProjectWCCIdentifier - 8DEBCDEA-BEBA-4524-8795-EE332E1B1B01 - IDESourceControlProjectWCConfigurations - - - IDESourceControlRepositoryExtensionIdentifierKey - public.vcs.git - IDESourceControlWCCIdentifierKey - 8DEBCDEA-BEBA-4524-8795-EE332E1B1B01 - IDESourceControlWCCName - Awful - - - IDESourceControlRepositoryExtensionIdentifierKey - public.vcs.git - IDESourceControlWCCIdentifierKey - 98A936E2-06A0-4DC5-B648-A78E9DAFA88F - IDESourceControlWCCName - Thread Tags - - - - diff --git a/Xcode/ci_scripts/ci_post_clone.sh b/Xcode/ci_scripts/ci_post_clone.sh deleted file mode 100755 index 0fbc05e4f..000000000 --- a/Xcode/ci_scripts/ci_post_clone.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -set -e - -# If an app group is specified via custom environment variable, set up the entitlements. -[ -n "$AWFUL_APP_GROUP_IDENTIFIER" ] && -perl -pe "s/PASTE YOUR APP GROUP IDENTIFIER HERE/$AWFUL_APP_GROUP_IDENTIFIER/g" ../../Local.sample.entitlements > ../../Local.entitlements && -echo "CODE_SIGN_ENTITLEMENTS = ../Local.entitlements" > ../../Local.xcconfig