diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..13d57e65 --- /dev/null +++ b/.gitignore @@ -0,0 +1,121 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/swift,swiftpm,xcode,cocoapods +# Edit at https://www.toptal.com/developers/gitignore?templates=swift,swiftpm,xcode,cocoapods + +### CocoaPods ### +## CocoaPods GitIgnore Template + +# CocoaPods - Only use to conserve bandwidth / Save time on Pushing +# - Also handy if you have a large number of dependant pods +# - AS PER https://guides.cocoapods.org/using/using-cocoapods.html NEVER IGNORE THE LOCK FILE +Pods/ + +### Swift ### +# Xcode +# +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + +## User settings +xcuserdata/ + +## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) +*.xcscmblueprint +*.xccheckout + +## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) +build/ +DerivedData/ +*.moved-aside +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 + +## Obj-C/Swift specific +*.hmap + +## App packaging +*.ipa +*.dSYM.zip +*.dSYM + +## Playgrounds +timeline.xctimeline +playground.xcworkspace + +# Swift Package Manager +# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. +Packages/ +# Package.pins +# Package.resolved +# *.xcodeproj +# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata +# hence it is not needed unless you have added a package configuration file to your project +.swiftpm + +.build/ + +# CocoaPods +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control +# Pods/ +# Add this line if you want to avoid checking in source code from the Xcode workspace +# *.xcworkspace + +# Carthage +# Add this line if you want to avoid checking in source code from Carthage dependencies. +# Carthage/Checkouts + +Carthage/Build/ + +# Accio dependency management +Dependencies/ +.accio/ + +# fastlane +# It is recommended to not store the screenshots in the git repo. +# Instead, use fastlane to re-generate the screenshots whenever they are needed. +# For more information about the recommended setup visit: +# https://docs.fastlane.tools/best-practices/source-control/#source-control + +fastlane/report.xml +fastlane/Preview.html +fastlane/screenshots/**/*.png +fastlane/test_output + +# Code Injection +# After new code Injection tools there's a generated folder /iOSInjectionProject +# https://github.com/johnno1962/injectionforxcode + +iOSInjectionProject/ + +### SwiftPM ### +Packages +xcuserdata +*.xcodeproj + + +### Xcode ### +# Xcode +# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore + + + + +## Gcc Patch +/*.gcno + +### Xcode Patch ### +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings + +# End of https://www.toptal.com/developers/gitignore/api/swift,swiftpm,xcode,cocoapods +n \ No newline at end of file diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index afb08347..01a6fa1b 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -3,13 +3,20 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ + 3533495136D843E85211E3E2 /* Pods_Mastodon_MastodonUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1B4523A7981F1044DE89C21 /* Pods_Mastodon_MastodonUITests.framework */; }; + 5E44BF88AD33646E64727BCF /* Pods_MastodonTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD92E0F10BDE4FE7C4B999F2 /* Pods_MastodonTests.framework */; }; + 7A9135D4559750AF07CA9BE4 /* Pods_Mastodon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 602D783BEC22881EBAD84419 /* Pods_Mastodon.framework */; }; + DB3D0FF325BAA61700EAA174 /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB3D0FF225BAA61700EAA174 /* AlamofireImage */; }; + DB3D100025BAA6DA00EAA174 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB3D0FFF25BAA6DA00EAA174 /* ViewController.swift */; }; + DB3D100D25BAA75E00EAA174 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DB3D100F25BAA75E00EAA174 /* Localizable.strings */; }; + DB3D102425BAA7B400EAA174 /* Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB3D102225BAA7B400EAA174 /* Assets.swift */; }; + DB3D102525BAA7B400EAA174 /* Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB3D102325BAA7B400EAA174 /* Strings.swift */; }; DB427DD625BAA00100D1B89D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB427DD525BAA00100D1B89D /* AppDelegate.swift */; }; DB427DD825BAA00100D1B89D /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB427DD725BAA00100D1B89D /* SceneDelegate.swift */; }; - DB427DDA25BAA00100D1B89D /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB427DD925BAA00100D1B89D /* ViewController.swift */; }; DB427DDD25BAA00100D1B89D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DB427DDB25BAA00100D1B89D /* Main.storyboard */; }; DB427DDF25BAA00100D1B89D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DB427DDE25BAA00100D1B89D /* Assets.xcassets */; }; DB427DE225BAA00100D1B89D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = DB427DE025BAA00100D1B89D /* LaunchScreen.storyboard */; }; @@ -35,10 +42,22 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 2E1F6A67FDF9771D3E064FDC /* Pods-Mastodon.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.debug.xcconfig"; sourceTree = ""; }; + 459EA4F43058CAB47719E963 /* Pods-Mastodon-MastodonUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.debug.xcconfig"; sourceTree = ""; }; + 602D783BEC22881EBAD84419 /* Pods_Mastodon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Mastodon.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 75E3471C898DDD9631729B6E /* Pods-Mastodon.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.release.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.release.xcconfig"; sourceTree = ""; }; + 9780A4C98FFC65B32B50D1C0 /* Pods-MastodonTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonTests.release.xcconfig"; path = "Target Support Files/Pods-MastodonTests/Pods-MastodonTests.release.xcconfig"; sourceTree = ""; }; + A1B4523A7981F1044DE89C21 /* Pods_Mastodon_MastodonUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Mastodon_MastodonUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BB482D32A7B9825BF5327C4F /* Pods-Mastodon-MastodonUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.release.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.release.xcconfig"; sourceTree = ""; }; + CD92E0F10BDE4FE7C4B999F2 /* Pods_MastodonTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MastodonTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DB3D0FED25BAA42200EAA174 /* MastodonSDK */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MastodonSDK; sourceTree = ""; }; + DB3D0FFF25BAA6DA00EAA174 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + DB3D100E25BAA75E00EAA174 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + DB3D102225BAA7B400EAA174 /* Assets.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Assets.swift; sourceTree = ""; }; + DB3D102325BAA7B400EAA174 /* Strings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Strings.swift; sourceTree = ""; }; DB427DD225BAA00100D1B89D /* Mastodon.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Mastodon.app; sourceTree = BUILT_PRODUCTS_DIR; }; DB427DD525BAA00100D1B89D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; DB427DD725BAA00100D1B89D /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; - DB427DD925BAA00100D1B89D /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; DB427DDC25BAA00100D1B89D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; DB427DDE25BAA00100D1B89D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; DB427DE125BAA00100D1B89D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; @@ -49,6 +68,7 @@ DB427DF325BAA00100D1B89D /* MastodonUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MastodonUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; DB427DF725BAA00100D1B89D /* MastodonUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MastodonUITests.swift; sourceTree = ""; }; DB427DF925BAA00100D1B89D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EC6E707B68A67DB08EC288FA /* Pods-MastodonTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonTests.debug.xcconfig"; path = "Target Support Files/Pods-MastodonTests/Pods-MastodonTests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -56,6 +76,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 7A9135D4559750AF07CA9BE4 /* Pods_Mastodon.framework in Frameworks */, + DB3D0FF325BAA61700EAA174 /* AlamofireImage in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -63,6 +85,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 5E44BF88AD33646E64727BCF /* Pods_MastodonTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -70,19 +93,75 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 3533495136D843E85211E3E2 /* Pods_Mastodon_MastodonUITests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 1EBA4F56E920856A3FC84ACB /* Pods */ = { + isa = PBXGroup; + children = ( + 2E1F6A67FDF9771D3E064FDC /* Pods-Mastodon.debug.xcconfig */, + 75E3471C898DDD9631729B6E /* Pods-Mastodon.release.xcconfig */, + 459EA4F43058CAB47719E963 /* Pods-Mastodon-MastodonUITests.debug.xcconfig */, + BB482D32A7B9825BF5327C4F /* Pods-Mastodon-MastodonUITests.release.xcconfig */, + EC6E707B68A67DB08EC288FA /* Pods-MastodonTests.debug.xcconfig */, + 9780A4C98FFC65B32B50D1C0 /* Pods-MastodonTests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + 4E8E8B18DB8471A676012CF9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 602D783BEC22881EBAD84419 /* Pods_Mastodon.framework */, + A1B4523A7981F1044DE89C21 /* Pods_Mastodon_MastodonUITests.framework */, + CD92E0F10BDE4FE7C4B999F2 /* Pods_MastodonTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + DB3D0FF725BAA68500EAA174 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + DB427DD525BAA00100D1B89D /* AppDelegate.swift */, + DB427DD725BAA00100D1B89D /* SceneDelegate.swift */, + DB427DDB25BAA00100D1B89D /* Main.storyboard */, + DB427DE025BAA00100D1B89D /* LaunchScreen.storyboard */, + ); + path = "Supporting Files"; + sourceTree = ""; + }; + DB3D0FF825BAA6B200EAA174 /* Resources */ = { + isa = PBXGroup; + children = ( + DB427DDE25BAA00100D1B89D /* Assets.xcassets */, + DB3D100F25BAA75E00EAA174 /* Localizable.strings */, + ); + path = Resources; + sourceTree = ""; + }; + DB3D101B25BAA79200EAA174 /* Generated */ = { + isa = PBXGroup; + children = ( + DB3D102225BAA7B400EAA174 /* Assets.swift */, + DB3D102325BAA7B400EAA174 /* Strings.swift */, + ); + path = Generated; + sourceTree = ""; + }; DB427DC925BAA00100D1B89D = { isa = PBXGroup; children = ( + DB3D0FED25BAA42200EAA174 /* MastodonSDK */, DB427DD425BAA00100D1B89D /* Mastodon */, DB427DEB25BAA00100D1B89D /* MastodonTests */, DB427DF625BAA00100D1B89D /* MastodonUITests */, DB427DD325BAA00100D1B89D /* Products */, + 1EBA4F56E920856A3FC84ACB /* Pods */, + 4E8E8B18DB8471A676012CF9 /* Frameworks */, ); sourceTree = ""; }; @@ -99,13 +178,11 @@ DB427DD425BAA00100D1B89D /* Mastodon */ = { isa = PBXGroup; children = ( - DB427DD525BAA00100D1B89D /* AppDelegate.swift */, - DB427DD725BAA00100D1B89D /* SceneDelegate.swift */, - DB427DD925BAA00100D1B89D /* ViewController.swift */, - DB427DDB25BAA00100D1B89D /* Main.storyboard */, - DB427DDE25BAA00100D1B89D /* Assets.xcassets */, - DB427DE025BAA00100D1B89D /* LaunchScreen.storyboard */, DB427DE325BAA00100D1B89D /* Info.plist */, + DB3D0FFF25BAA6DA00EAA174 /* ViewController.swift */, + DB3D101B25BAA79200EAA174 /* Generated */, + DB3D0FF825BAA6B200EAA174 /* Resources */, + DB3D0FF725BAA68500EAA174 /* Supporting Files */, ); path = Mastodon; sourceTree = ""; @@ -135,15 +212,21 @@ isa = PBXNativeTarget; buildConfigurationList = DB427DFC25BAA00100D1B89D /* Build configuration list for PBXNativeTarget "Mastodon" */; buildPhases = ( + 7A04933A2AB1D5B758D4F908 /* [CP] Check Pods Manifest.lock */, DB427DCE25BAA00100D1B89D /* Sources */, DB427DCF25BAA00100D1B89D /* Frameworks */, DB427DD025BAA00100D1B89D /* Resources */, + 5532CB85BBE168B25B20720B /* [CP] Embed Pods Frameworks */, + DB3D100425BAA71500EAA174 /* ShellScript */, ); buildRules = ( ); dependencies = ( ); name = Mastodon; + packageProductDependencies = ( + DB3D0FF225BAA61700EAA174 /* AlamofireImage */, + ); productName = Mastodon; productReference = DB427DD225BAA00100D1B89D /* Mastodon.app */; productType = "com.apple.product-type.application"; @@ -152,6 +235,7 @@ isa = PBXNativeTarget; buildConfigurationList = DB427DFF25BAA00100D1B89D /* Build configuration list for PBXNativeTarget "MastodonTests" */; buildPhases = ( + E139F888AA77A10B890BFED6 /* [CP] Check Pods Manifest.lock */, DB427DE425BAA00100D1B89D /* Sources */, DB427DE525BAA00100D1B89D /* Frameworks */, DB427DE625BAA00100D1B89D /* Resources */, @@ -170,9 +254,11 @@ isa = PBXNativeTarget; buildConfigurationList = DB427E0225BAA00100D1B89D /* Build configuration list for PBXNativeTarget "MastodonUITests" */; buildPhases = ( + 6E033728B42BA1C0018B6131 /* [CP] Check Pods Manifest.lock */, DB427DEF25BAA00100D1B89D /* Sources */, DB427DF025BAA00100D1B89D /* Frameworks */, DB427DF125BAA00100D1B89D /* Resources */, + ECC2E90D421B45415C311BED /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -215,6 +301,9 @@ Base, ); mainGroup = DB427DC925BAA00100D1B89D; + packageReferences = ( + DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */, + ); productRefGroup = DB427DD325BAA00100D1B89D /* Products */; projectDirPath = ""; projectRoot = ""; @@ -232,6 +321,7 @@ buildActionMask = 2147483647; files = ( DB427DE225BAA00100D1B89D /* LaunchScreen.storyboard in Resources */, + DB3D100D25BAA75E00EAA174 /* Localizable.strings in Resources */, DB427DDF25BAA00100D1B89D /* Assets.xcassets in Resources */, DB427DDD25BAA00100D1B89D /* Main.storyboard in Resources */, ); @@ -253,13 +343,135 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 5532CB85BBE168B25B20720B /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Mastodon/Pods-Mastodon-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Mastodon/Pods-Mastodon-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Mastodon/Pods-Mastodon-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 6E033728B42BA1C0018B6131 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Mastodon-MastodonUITests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 7A04933A2AB1D5B758D4F908 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Mastodon-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + DB3D100425BAA71500EAA174 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [[ -f \"${PODS_ROOT}/SwiftGen/bin/swiftgen\" ]]; then\n \"${PODS_ROOT}/SwiftGen/bin/swiftgen\" \nelse\n echo \"warning: SwiftGen is not installed. Run 'pod install --repo-update' to install it.\"\nfi\n"; + }; + E139F888AA77A10B890BFED6 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-MastodonTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + ECC2E90D421B45415C311BED /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ DB427DCE25BAA00100D1B89D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - DB427DDA25BAA00100D1B89D /* ViewController.swift in Sources */, + DB3D100025BAA6DA00EAA174 /* ViewController.swift in Sources */, DB427DD625BAA00100D1B89D /* AppDelegate.swift in Sources */, + DB3D102525BAA7B400EAA174 /* Strings.swift in Sources */, + DB3D102425BAA7B400EAA174 /* Assets.swift in Sources */, DB427DD825BAA00100D1B89D /* SceneDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -296,6 +508,14 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ + DB3D100F25BAA75E00EAA174 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + DB3D100E25BAA75E00EAA174 /* en */, + ); + name = Localizable.strings; + sourceTree = ""; + }; DB427DDB25BAA00100D1B89D /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( @@ -366,7 +586,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.4; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -421,7 +641,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 14.4; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = iphoneos; @@ -433,6 +653,7 @@ }; DB427DFD25BAA00100D1B89D /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 2E1F6A67FDF9771D3E064FDC /* Pods-Mastodon.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -443,6 +664,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 1.0.0; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.Mastodon; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -452,6 +674,7 @@ }; DB427DFE25BAA00100D1B89D /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 75E3471C898DDD9631729B6E /* Pods-Mastodon.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -462,6 +685,7 @@ "$(inherited)", "@executable_path/Frameworks", ); + MARKETING_VERSION = 1.0.0; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.Mastodon; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; @@ -471,13 +695,13 @@ }; DB427E0025BAA00100D1B89D /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = EC6E707B68A67DB08EC288FA /* Pods-MastodonTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = 7LFDZ96332; INFOPLIST_FILE = MastodonTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -493,13 +717,13 @@ }; DB427E0125BAA00100D1B89D /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 9780A4C98FFC65B32B50D1C0 /* Pods-MastodonTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = 7LFDZ96332; INFOPLIST_FILE = MastodonTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.4; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -515,8 +739,8 @@ }; DB427E0325BAA00100D1B89D /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 459EA4F43058CAB47719E963 /* Pods-Mastodon-MastodonUITests.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = 7LFDZ96332; INFOPLIST_FILE = MastodonUITests/Info.plist; @@ -535,8 +759,8 @@ }; DB427E0425BAA00100D1B89D /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = BB482D32A7B9825BF5327C4F /* Pods-Mastodon-MastodonUITests.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = 7LFDZ96332; INFOPLIST_FILE = MastodonUITests/Info.plist; @@ -593,6 +817,25 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Alamofire/AlamofireImage.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 4.1.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + DB3D0FF225BAA61700EAA174 /* AlamofireImage */ = { + isa = XCSwiftPackageProductDependency; + package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; + productName = AlamofireImage; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = DB427DCA25BAA00100D1B89D /* Project object */; } diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index a570ea81..7e0fb56e 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ Mastodon.xcscheme_^#shared#^_ orderHint - 0 + 5 diff --git a/Mastodon.xcworkspace/contents.xcworkspacedata b/Mastodon.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..fbf2dc54 --- /dev/null +++ b/Mastodon.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Mastodon.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Mastodon.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/Mastodon.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000..8842af1e --- /dev/null +++ b/Mastodon.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,25 @@ +{ + "object": { + "pins": [ + { + "package": "Alamofire", + "repositoryURL": "https://github.com/Alamofire/Alamofire.git", + "state": { + "branch": null, + "revision": "eaf6e622dd41b07b251d8f01752eab31bc811493", + "version": "5.4.1" + } + }, + { + "package": "AlamofireImage", + "repositoryURL": "https://github.com/Alamofire/AlamofireImage.git", + "state": { + "branch": null, + "revision": "3e8edbeb75227f8542aa87f90240cf0424d6362f", + "version": "4.1.0" + } + } + ] + }, + "version": 1 +} diff --git a/Mastodon/Generated/Assets.swift b/Mastodon/Generated/Assets.swift new file mode 100644 index 00000000..9d169beb --- /dev/null +++ b/Mastodon/Generated/Assets.swift @@ -0,0 +1,70 @@ +// swiftlint:disable all +// Generated using SwiftGen — https://github.com/SwiftGen/SwiftGen + +#if os(macOS) + import AppKit +#elseif os(iOS) + import UIKit +#elseif os(tvOS) || os(watchOS) + import UIKit +#endif + +// Deprecated typealiases +@available(*, deprecated, renamed: "ColorAsset.Color", message: "This typealias will be removed in SwiftGen 7.0") +internal typealias AssetColorTypeAlias = ColorAsset.Color + +// swiftlint:disable superfluous_disable_command file_length implicit_return + +// MARK: - Asset Catalogs + +// swiftlint:disable identifier_name line_length nesting type_body_length type_name +internal enum Asset { + internal static let accentColor = ColorAsset(name: "AccentColor") +} +// swiftlint:enable identifier_name line_length nesting type_body_length type_name + +// MARK: - Implementation Details + +internal final class ColorAsset { + internal fileprivate(set) var name: String + + #if os(macOS) + internal typealias Color = NSColor + #elseif os(iOS) || os(tvOS) || os(watchOS) + internal typealias Color = UIColor + #endif + + @available(iOS 11.0, tvOS 11.0, watchOS 4.0, macOS 10.13, *) + internal private(set) lazy var color: Color = { + guard let color = Color(asset: self) else { + fatalError("Unable to load color asset named \(name).") + } + return color + }() + + fileprivate init(name: String) { + self.name = name + } +} + +internal extension ColorAsset.Color { + @available(iOS 11.0, tvOS 11.0, watchOS 4.0, macOS 10.13, *) + convenience init?(asset: ColorAsset) { + let bundle = BundleToken.bundle + #if os(iOS) || os(tvOS) + self.init(named: asset.name, in: bundle, compatibleWith: nil) + #elseif os(macOS) + self.init(named: NSColor.Name(asset.name), bundle: bundle) + #elseif os(watchOS) + self.init(named: asset.name) + #endif + } +} + +// swiftlint:disable convenience_type +private final class BundleToken { + static let bundle: Bundle = { + Bundle(for: BundleToken.self) + }() +} +// swiftlint:enable convenience_type diff --git a/Mastodon/Generated/Strings.swift b/Mastodon/Generated/Strings.swift new file mode 100644 index 00000000..c51bbaea --- /dev/null +++ b/Mastodon/Generated/Strings.swift @@ -0,0 +1,30 @@ +// swiftlint:disable all +// Generated using SwiftGen — https://github.com/SwiftGen/SwiftGen + +import Foundation + +// swiftlint:disable superfluous_disable_command file_length implicit_return + +// MARK: - Strings + +// swiftlint:disable explicit_type_interface function_parameter_count identifier_name line_length +// swiftlint:disable nesting type_body_length type_name vertical_whitespace_opening_braces +internal enum L10n { +} +// swiftlint:enable explicit_type_interface function_parameter_count identifier_name line_length +// swiftlint:enable nesting type_body_length type_name vertical_whitespace_opening_braces + +// MARK: - Implementation Details + +extension L10n { + private static func tr(_ table: String, _ key: String, _ args: CVarArg...) -> String { + let format = BundleToken.bundle.localizedString(forKey: key, value: nil, table: table) + return String(format: format, locale: Locale.current, arguments: args) + } +} + +// swiftlint:disable convenience_type +private final class BundleToken { + static let bundle = Bundle(for: BundleToken.self) +} +// swiftlint:enable convenience_type diff --git a/Mastodon/Info.plist b/Mastodon/Info.plist index 5b531f7b..e45a487d 100644 --- a/Mastodon/Info.plist +++ b/Mastodon/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 1.0 + $(MARKETING_VERSION) CFBundleVersion 1 LSRequiresIPhoneOS diff --git a/Mastodon/Assets.xcassets/AccentColor.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from Mastodon/Assets.xcassets/AccentColor.colorset/Contents.json rename to Mastodon/Resources/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/Mastodon/Assets.xcassets/AppIcon.appiconset/Contents.json b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Mastodon/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Mastodon/Assets.xcassets/Contents.json b/Mastodon/Resources/Assets.xcassets/Contents.json similarity index 100% rename from Mastodon/Assets.xcassets/Contents.json rename to Mastodon/Resources/Assets.xcassets/Contents.json diff --git a/Mastodon/Resources/en.lproj/Localizable.strings b/Mastodon/Resources/en.lproj/Localizable.strings new file mode 100644 index 00000000..ac78f76b --- /dev/null +++ b/Mastodon/Resources/en.lproj/Localizable.strings @@ -0,0 +1,7 @@ +/* + Localizable.strings + Mastodon + + Created by MainasuK Cirno on 2021/1/22. + +*/ diff --git a/Mastodon/AppDelegate.swift b/Mastodon/Supporting Files/AppDelegate.swift similarity index 100% rename from Mastodon/AppDelegate.swift rename to Mastodon/Supporting Files/AppDelegate.swift diff --git a/Mastodon/Base.lproj/LaunchScreen.storyboard b/Mastodon/Supporting Files/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from Mastodon/Base.lproj/LaunchScreen.storyboard rename to Mastodon/Supporting Files/Base.lproj/LaunchScreen.storyboard diff --git a/Mastodon/Base.lproj/Main.storyboard b/Mastodon/Supporting Files/Base.lproj/Main.storyboard similarity index 100% rename from Mastodon/Base.lproj/Main.storyboard rename to Mastodon/Supporting Files/Base.lproj/Main.storyboard diff --git a/Mastodon/SceneDelegate.swift b/Mastodon/Supporting Files/SceneDelegate.swift similarity index 100% rename from Mastodon/SceneDelegate.swift rename to Mastodon/Supporting Files/SceneDelegate.swift diff --git a/MastodonSDK/Package.swift b/MastodonSDK/Package.swift new file mode 100644 index 00000000..61755106 --- /dev/null +++ b/MastodonSDK/Package.swift @@ -0,0 +1,32 @@ +// swift-tools-version:5.3 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "MastodonSDK", + platforms: [ + .iOS(.v13), + ], + products: [ + .library( + name: "MastodonSDK", + targets: ["MastodonSDK"]), + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + // .package(url: /* package url */, from: "1.0.0"), + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "MastodonSDK", + dependencies: [] + ), + .testTarget( + name: "MastodonSDKTests", + dependencies: ["MastodonSDK"] + ), + ] +) diff --git a/MastodonSDK/README.md b/MastodonSDK/README.md new file mode 100644 index 00000000..2ddc7012 --- /dev/null +++ b/MastodonSDK/README.md @@ -0,0 +1,3 @@ +# MastodonSDK + +A description of this package. diff --git a/MastodonSDK/Sources/MastodonSDK/MastodonSDK.swift b/MastodonSDK/Sources/MastodonSDK/MastodonSDK.swift new file mode 100644 index 00000000..89c41049 --- /dev/null +++ b/MastodonSDK/Sources/MastodonSDK/MastodonSDK.swift @@ -0,0 +1,3 @@ +struct MastodonSDK { + var text = "Hello, World!" +} diff --git a/MastodonSDK/Tests/LinuxMain.swift b/MastodonSDK/Tests/LinuxMain.swift new file mode 100644 index 00000000..5b06c121 --- /dev/null +++ b/MastodonSDK/Tests/LinuxMain.swift @@ -0,0 +1,7 @@ +import XCTest + +import MastodonSDKTests + +var tests = [XCTestCaseEntry]() +tests += MastodonSDKTests.allTests() +XCTMain(tests) diff --git a/MastodonSDK/Tests/MastodonSDKTests/MastodonSDKTests.swift b/MastodonSDK/Tests/MastodonSDKTests/MastodonSDKTests.swift new file mode 100644 index 00000000..85e78181 --- /dev/null +++ b/MastodonSDK/Tests/MastodonSDKTests/MastodonSDKTests.swift @@ -0,0 +1,15 @@ +import XCTest +@testable import MastodonSDK + +final class MastodonSDKTests: XCTestCase { + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct + // results. + XCTAssertEqual(MastodonSDK().text, "Hello, World!") + } + + static var allTests = [ + ("testExample", testExample), + ] +} diff --git a/MastodonSDK/Tests/MastodonSDKTests/XCTestManifests.swift b/MastodonSDK/Tests/MastodonSDKTests/XCTestManifests.swift new file mode 100644 index 00000000..8685c317 --- /dev/null +++ b/MastodonSDK/Tests/MastodonSDKTests/XCTestManifests.swift @@ -0,0 +1,9 @@ +import XCTest + +#if !canImport(ObjectiveC) +public func allTests() -> [XCTestCaseEntry] { + return [ + testCase(MastodonSDKTests.allTests), + ] +} +#endif diff --git a/Podfile b/Podfile new file mode 100644 index 00000000..2fc62f54 --- /dev/null +++ b/Podfile @@ -0,0 +1,22 @@ +platform :ios, '13.0' + +target 'Mastodon' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + + # Pods for Mastodon + + # misc + pod 'SwiftGen', '~> 6.3.0' + pod 'DateToolsSwift', '~> 5.0.0' + + target 'MastodonTests' do + inherit! :search_paths + # Pods for testing + end + + target 'MastodonUITests' do + # Pods for testing + end + +end diff --git a/Podfile.lock b/Podfile.lock new file mode 100644 index 00000000..f82c47d7 --- /dev/null +++ b/Podfile.lock @@ -0,0 +1,20 @@ +PODS: + - DateToolsSwift (5.0.0) + - SwiftGen (6.3.0) + +DEPENDENCIES: + - DateToolsSwift (~> 5.0.0) + - SwiftGen (~> 6.3.0) + +SPEC REPOS: + trunk: + - DateToolsSwift + - SwiftGen + +SPEC CHECKSUMS: + DateToolsSwift: 4207ada6ad615d8dc076323d27037c94916dbfa6 + SwiftGen: 3d5024a47ea79e408cded20763d7a17d18a4548c + +PODFILE CHECKSUM: ed665713fa5980e9fe017a69012b7ec2b15a684f + +COCOAPODS: 1.10.1 diff --git a/README.md b/README.md new file mode 100644 index 00000000..7dcb338d --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# Mastodon + + +## Requirements + +## Setup + +### Setup for M1 Mac + +CocoaPods may fail to update. Try install fii to fix it. + +```zsh +# https://github.com/CocoaPods/CocoaPods/issues/10220 +sudo arch -x86_64 gem install ffi + +``` + + +## Acknowledgements + +- [ActiveLabel](https://github.com/optonaut/ActiveLabel.swift) +- [AlamofireImage](https://github.com/Alamofire/AlamofireImage) +- [AlamofireNetworkActivityIndicator](https://github.com/Alamofire/AlamofireNetworkActivityIndicator) +- [Alamofire](https://github.com/Alamofire/Alamofire) +- [CommonOSLog](https://github.com/mainasuk/CommonOSLog) +- [DateToolSwift](https://github.com/MatthewYork/DateTools) +- [Kanna](https://github.com/tid-kijyun/Kanna) +- [SwiftGen](https://github.com/SwiftGen/SwiftGen) +- [SwiftyJSON](https://github.com/SwiftyJSON/SwiftyJSON) + +## License diff --git a/swiftgen.yml b/swiftgen.yml new file mode 100644 index 00000000..e74c5356 --- /dev/null +++ b/swiftgen.yml @@ -0,0 +1,10 @@ +strings: + inputs: Mastodon/Resources/en.lproj/Localizable.strings + outputs: + - templateName: structured-swift5 + output: Mastodon/Generated/Strings.swift +xcassets: + inputs: Mastodon/Resources/Assets.xcassets + outputs: + templateName: swift5 + output: Mastodon/Generated/Assets.swift \ No newline at end of file