From 830cb8785a674a84dc1205a4f58aaf6b8ddb0b67 Mon Sep 17 00:00:00 2001 From: Patrick Mueller Date: Thu, 12 Jan 2023 16:42:22 +0100 Subject: [PATCH] Initial Commit --- Firebonk.xcodeproj/project.pbxproj | 629 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcschemes/xcschememanagement.plist | 14 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 63 ++ Firebonk/Assets.xcassets/Contents.json | 6 + Firebonk/ContentView.swift | 22 + Firebonk/Firebonk.entitlements | 10 + Firebonk/FirebonkApp.swift | 17 + Firebonk/FirebonkDocument.swift | 39 ++ Firebonk/Info.plist | 39 ++ .../Preview Assets.xcassets/Contents.json | 6 + FirebonkTests/FirebonkTests.swift | 35 + FirebonkUITests/FirebonkUITests.swift | 41 ++ .../FirebonkUITestsLaunchTests.swift | 32 + 16 files changed, 979 insertions(+) create mode 100644 Firebonk.xcodeproj/project.pbxproj create mode 100644 Firebonk.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Firebonk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Firebonk.xcodeproj/xcuserdata/pa_mu.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Firebonk/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 Firebonk/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Firebonk/Assets.xcassets/Contents.json create mode 100644 Firebonk/ContentView.swift create mode 100644 Firebonk/Firebonk.entitlements create mode 100644 Firebonk/FirebonkApp.swift create mode 100644 Firebonk/FirebonkDocument.swift create mode 100644 Firebonk/Info.plist create mode 100644 Firebonk/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 FirebonkTests/FirebonkTests.swift create mode 100644 FirebonkUITests/FirebonkUITests.swift create mode 100644 FirebonkUITests/FirebonkUITestsLaunchTests.swift diff --git a/Firebonk.xcodeproj/project.pbxproj b/Firebonk.xcodeproj/project.pbxproj new file mode 100644 index 0000000..46346a2 --- /dev/null +++ b/Firebonk.xcodeproj/project.pbxproj @@ -0,0 +1,629 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 349639EB297061D6002B1FB8 /* FirebonkApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 349639EA297061D6002B1FB8 /* FirebonkApp.swift */; }; + 349639ED297061D6002B1FB8 /* FirebonkDocument.swift in Sources */ = {isa = PBXBuildFile; fileRef = 349639EC297061D6002B1FB8 /* FirebonkDocument.swift */; }; + 349639EF297061D6002B1FB8 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 349639EE297061D6002B1FB8 /* ContentView.swift */; }; + 349639F1297061D7002B1FB8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 349639F0297061D7002B1FB8 /* Assets.xcassets */; }; + 349639F6297061D7002B1FB8 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 349639F5297061D7002B1FB8 /* Preview Assets.xcassets */; }; + 34963A00297061D8002B1FB8 /* FirebonkTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 349639FF297061D8002B1FB8 /* FirebonkTests.swift */; }; + 34963A0A297061D8002B1FB8 /* FirebonkUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34963A09297061D8002B1FB8 /* FirebonkUITests.swift */; }; + 34963A0C297061D8002B1FB8 /* FirebonkUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34963A0B297061D8002B1FB8 /* FirebonkUITestsLaunchTests.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 349639FC297061D8002B1FB8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 349639DF297061D6002B1FB8 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 349639E6297061D6002B1FB8; + remoteInfo = Firebonk; + }; + 34963A06297061D8002B1FB8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 349639DF297061D6002B1FB8 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 349639E6297061D6002B1FB8; + remoteInfo = Firebonk; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 349639E7297061D6002B1FB8 /* Firebonk.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Firebonk.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 349639EA297061D6002B1FB8 /* FirebonkApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebonkApp.swift; sourceTree = ""; }; + 349639EC297061D6002B1FB8 /* FirebonkDocument.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebonkDocument.swift; sourceTree = ""; }; + 349639EE297061D6002B1FB8 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 349639F0297061D7002B1FB8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 349639F2297061D7002B1FB8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 349639F3297061D7002B1FB8 /* Firebonk.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Firebonk.entitlements; sourceTree = ""; }; + 349639F5297061D7002B1FB8 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 349639FB297061D8002B1FB8 /* FirebonkTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FirebonkTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 349639FF297061D8002B1FB8 /* FirebonkTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebonkTests.swift; sourceTree = ""; }; + 34963A05297061D8002B1FB8 /* FirebonkUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FirebonkUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 34963A09297061D8002B1FB8 /* FirebonkUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebonkUITests.swift; sourceTree = ""; }; + 34963A0B297061D8002B1FB8 /* FirebonkUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebonkUITestsLaunchTests.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 349639E4297061D6002B1FB8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 349639F8297061D8002B1FB8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 34963A02297061D8002B1FB8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 349639DE297061D6002B1FB8 = { + isa = PBXGroup; + children = ( + 349639E9297061D6002B1FB8 /* Firebonk */, + 349639FE297061D8002B1FB8 /* FirebonkTests */, + 34963A08297061D8002B1FB8 /* FirebonkUITests */, + 349639E8297061D6002B1FB8 /* Products */, + ); + sourceTree = ""; + }; + 349639E8297061D6002B1FB8 /* Products */ = { + isa = PBXGroup; + children = ( + 349639E7297061D6002B1FB8 /* Firebonk.app */, + 349639FB297061D8002B1FB8 /* FirebonkTests.xctest */, + 34963A05297061D8002B1FB8 /* FirebonkUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 349639E9297061D6002B1FB8 /* Firebonk */ = { + isa = PBXGroup; + children = ( + 349639EA297061D6002B1FB8 /* FirebonkApp.swift */, + 349639EC297061D6002B1FB8 /* FirebonkDocument.swift */, + 349639EE297061D6002B1FB8 /* ContentView.swift */, + 349639F0297061D7002B1FB8 /* Assets.xcassets */, + 349639F2297061D7002B1FB8 /* Info.plist */, + 349639F3297061D7002B1FB8 /* Firebonk.entitlements */, + 349639F4297061D7002B1FB8 /* Preview Content */, + ); + path = Firebonk; + sourceTree = ""; + }; + 349639F4297061D7002B1FB8 /* Preview Content */ = { + isa = PBXGroup; + children = ( + 349639F5297061D7002B1FB8 /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 349639FE297061D8002B1FB8 /* FirebonkTests */ = { + isa = PBXGroup; + children = ( + 349639FF297061D8002B1FB8 /* FirebonkTests.swift */, + ); + path = FirebonkTests; + sourceTree = ""; + }; + 34963A08297061D8002B1FB8 /* FirebonkUITests */ = { + isa = PBXGroup; + children = ( + 34963A09297061D8002B1FB8 /* FirebonkUITests.swift */, + 34963A0B297061D8002B1FB8 /* FirebonkUITestsLaunchTests.swift */, + ); + path = FirebonkUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 349639E6297061D6002B1FB8 /* Firebonk */ = { + isa = PBXNativeTarget; + buildConfigurationList = 34963A0F297061D8002B1FB8 /* Build configuration list for PBXNativeTarget "Firebonk" */; + buildPhases = ( + 349639E3297061D6002B1FB8 /* Sources */, + 349639E4297061D6002B1FB8 /* Frameworks */, + 349639E5297061D6002B1FB8 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Firebonk; + productName = Firebonk; + productReference = 349639E7297061D6002B1FB8 /* Firebonk.app */; + productType = "com.apple.product-type.application"; + }; + 349639FA297061D8002B1FB8 /* FirebonkTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 34963A12297061D8002B1FB8 /* Build configuration list for PBXNativeTarget "FirebonkTests" */; + buildPhases = ( + 349639F7297061D8002B1FB8 /* Sources */, + 349639F8297061D8002B1FB8 /* Frameworks */, + 349639F9297061D8002B1FB8 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 349639FD297061D8002B1FB8 /* PBXTargetDependency */, + ); + name = FirebonkTests; + productName = FirebonkTests; + productReference = 349639FB297061D8002B1FB8 /* FirebonkTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 34963A04297061D8002B1FB8 /* FirebonkUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 34963A15297061D8002B1FB8 /* Build configuration list for PBXNativeTarget "FirebonkUITests" */; + buildPhases = ( + 34963A01297061D8002B1FB8 /* Sources */, + 34963A02297061D8002B1FB8 /* Frameworks */, + 34963A03297061D8002B1FB8 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 34963A07297061D8002B1FB8 /* PBXTargetDependency */, + ); + name = FirebonkUITests; + productName = FirebonkUITests; + productReference = 34963A05297061D8002B1FB8 /* FirebonkUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 349639DF297061D6002B1FB8 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1420; + LastUpgradeCheck = 1420; + TargetAttributes = { + 349639E6297061D6002B1FB8 = { + CreatedOnToolsVersion = 14.2; + }; + 349639FA297061D8002B1FB8 = { + CreatedOnToolsVersion = 14.2; + TestTargetID = 349639E6297061D6002B1FB8; + }; + 34963A04297061D8002B1FB8 = { + CreatedOnToolsVersion = 14.2; + TestTargetID = 349639E6297061D6002B1FB8; + }; + }; + }; + buildConfigurationList = 349639E2297061D6002B1FB8 /* Build configuration list for PBXProject "Firebonk" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 349639DE297061D6002B1FB8; + productRefGroup = 349639E8297061D6002B1FB8 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 349639E6297061D6002B1FB8 /* Firebonk */, + 349639FA297061D8002B1FB8 /* FirebonkTests */, + 34963A04297061D8002B1FB8 /* FirebonkUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 349639E5297061D6002B1FB8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 349639F6297061D7002B1FB8 /* Preview Assets.xcassets in Resources */, + 349639F1297061D7002B1FB8 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 349639F9297061D8002B1FB8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 34963A03297061D8002B1FB8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 349639E3297061D6002B1FB8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 349639ED297061D6002B1FB8 /* FirebonkDocument.swift in Sources */, + 349639EB297061D6002B1FB8 /* FirebonkApp.swift in Sources */, + 349639EF297061D6002B1FB8 /* ContentView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 349639F7297061D8002B1FB8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 34963A00297061D8002B1FB8 /* FirebonkTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 34963A01297061D8002B1FB8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 34963A0C297061D8002B1FB8 /* FirebonkUITestsLaunchTests.swift in Sources */, + 34963A0A297061D8002B1FB8 /* FirebonkUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 349639FD297061D8002B1FB8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 349639E6297061D6002B1FB8 /* Firebonk */; + targetProxy = 349639FC297061D8002B1FB8 /* PBXContainerItemProxy */; + }; + 34963A07297061D8002B1FB8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 349639E6297061D6002B1FB8 /* Firebonk */; + targetProxy = 34963A06297061D8002B1FB8 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 34963A0D297061D8002B1FB8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 34963A0E297061D8002B1FB8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 34963A10297061D8002B1FB8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = Firebonk/Firebonk.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"Firebonk/Preview Content\""; + DEVELOPMENT_TEAM = HS7KNT4MZ2; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = Firebonk/Info.plist; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + "INFOPLIST_KEY_UISupportsDocumentBrowser[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UISupportsDocumentBrowser[sdk=iphonesimulator*]" = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 13.1; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = de.plutodev.apps.Firebonk; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 34963A11297061D8002B1FB8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = Firebonk/Firebonk.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"Firebonk/Preview Content\""; + DEVELOPMENT_TEAM = HS7KNT4MZ2; + ENABLE_HARDENED_RUNTIME = YES; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = Firebonk/Info.plist; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + "INFOPLIST_KEY_UISupportsDocumentBrowser[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UISupportsDocumentBrowser[sdk=iphonesimulator*]" = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 13.1; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = de.plutodev.apps.Firebonk; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 34963A13297061D8002B1FB8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = HS7KNT4MZ2; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MACOSX_DEPLOYMENT_TARGET = 13.1; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = de.plutodev.apps.FirebonkTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Firebonk.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Firebonk"; + }; + name = Debug; + }; + 34963A14297061D8002B1FB8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = HS7KNT4MZ2; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MACOSX_DEPLOYMENT_TARGET = 13.1; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = de.plutodev.apps.FirebonkTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Firebonk.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Firebonk"; + }; + name = Release; + }; + 34963A16297061D8002B1FB8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = HS7KNT4MZ2; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MACOSX_DEPLOYMENT_TARGET = 13.1; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = de.plutodev.apps.FirebonkUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Firebonk; + }; + name = Debug; + }; + 34963A17297061D8002B1FB8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = HS7KNT4MZ2; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MACOSX_DEPLOYMENT_TARGET = 13.1; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = de.plutodev.apps.FirebonkUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Firebonk; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 349639E2297061D6002B1FB8 /* Build configuration list for PBXProject "Firebonk" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 34963A0D297061D8002B1FB8 /* Debug */, + 34963A0E297061D8002B1FB8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 34963A0F297061D8002B1FB8 /* Build configuration list for PBXNativeTarget "Firebonk" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 34963A10297061D8002B1FB8 /* Debug */, + 34963A11297061D8002B1FB8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 34963A12297061D8002B1FB8 /* Build configuration list for PBXNativeTarget "FirebonkTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 34963A13297061D8002B1FB8 /* Debug */, + 34963A14297061D8002B1FB8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 34963A15297061D8002B1FB8 /* Build configuration list for PBXNativeTarget "FirebonkUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 34963A16297061D8002B1FB8 /* Debug */, + 34963A17297061D8002B1FB8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 349639DF297061D6002B1FB8 /* Project object */; +} diff --git a/Firebonk.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Firebonk.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Firebonk.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Firebonk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Firebonk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Firebonk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Firebonk.xcodeproj/xcuserdata/pa_mu.xcuserdatad/xcschemes/xcschememanagement.plist b/Firebonk.xcodeproj/xcuserdata/pa_mu.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..a7dc2bd --- /dev/null +++ b/Firebonk.xcodeproj/xcuserdata/pa_mu.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Firebonk.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Firebonk/Assets.xcassets/AccentColor.colorset/Contents.json b/Firebonk/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Firebonk/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Firebonk/Assets.xcassets/AppIcon.appiconset/Contents.json b/Firebonk/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..532cd72 --- /dev/null +++ b/Firebonk/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,63 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Firebonk/Assets.xcassets/Contents.json b/Firebonk/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Firebonk/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Firebonk/ContentView.swift b/Firebonk/ContentView.swift new file mode 100644 index 0000000..ddba09b --- /dev/null +++ b/Firebonk/ContentView.swift @@ -0,0 +1,22 @@ +// +// ContentView.swift +// Firebonk +// +// Created by Patrick Müller on 12.01.23. +// + +import SwiftUI + +struct ContentView: View { + @Binding var document: FirebonkDocument + + var body: some View { + TextEditor(text: $document.text) + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView(document: .constant(FirebonkDocument())) + } +} diff --git a/Firebonk/Firebonk.entitlements b/Firebonk/Firebonk.entitlements new file mode 100644 index 0000000..6d968ed --- /dev/null +++ b/Firebonk/Firebonk.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-write + + + diff --git a/Firebonk/FirebonkApp.swift b/Firebonk/FirebonkApp.swift new file mode 100644 index 0000000..5ee8861 --- /dev/null +++ b/Firebonk/FirebonkApp.swift @@ -0,0 +1,17 @@ +// +// FirebonkApp.swift +// Firebonk +// +// Created by Patrick Müller on 12.01.23. +// + +import SwiftUI + +@main +struct FirebonkApp: App { + var body: some Scene { + DocumentGroup(newDocument: FirebonkDocument()) { file in + ContentView(document: file.$document) + } + } +} diff --git a/Firebonk/FirebonkDocument.swift b/Firebonk/FirebonkDocument.swift new file mode 100644 index 0000000..1991a82 --- /dev/null +++ b/Firebonk/FirebonkDocument.swift @@ -0,0 +1,39 @@ +// +// FirebonkDocument.swift +// Firebonk +// +// Created by Patrick Müller on 12.01.23. +// + +import SwiftUI +import UniformTypeIdentifiers + +extension UTType { + static var exampleText: UTType { + UTType(importedAs: "com.example.plain-text") + } +} + +struct FirebonkDocument: FileDocument { + var text: String + + init(text: String = "Hello, world!") { + self.text = text + } + + static var readableContentTypes: [UTType] { [.exampleText] } + + init(configuration: ReadConfiguration) throws { + guard let data = configuration.file.regularFileContents, + let string = String(data: data, encoding: .utf8) + else { + throw CocoaError(.fileReadCorruptFile) + } + text = string + } + + func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper { + let data = text.data(using: .utf8)! + return .init(regularFileWithContents: data) + } +} diff --git a/Firebonk/Info.plist b/Firebonk/Info.plist new file mode 100644 index 0000000..730eeb1 --- /dev/null +++ b/Firebonk/Info.plist @@ -0,0 +1,39 @@ + + + + + CFBundleDocumentTypes + + + CFBundleTypeRole + Editor + LSItemContentTypes + + com.example.plain-text + + NSUbiquitousDocumentUserActivityType + $(PRODUCT_BUNDLE_IDENTIFIER).example-document + + + UTImportedTypeDeclarations + + + UTTypeConformsTo + + public.plain-text + + UTTypeDescription + Example Text + UTTypeIdentifier + com.example.plain-text + UTTypeTagSpecification + + public.filename-extension + + exampletext + + + + + + diff --git a/Firebonk/Preview Content/Preview Assets.xcassets/Contents.json b/Firebonk/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Firebonk/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FirebonkTests/FirebonkTests.swift b/FirebonkTests/FirebonkTests.swift new file mode 100644 index 0000000..5fa31b2 --- /dev/null +++ b/FirebonkTests/FirebonkTests.swift @@ -0,0 +1,35 @@ +// +// FirebonkTests.swift +// FirebonkTests +// +// Created by Patrick Müller on 12.01.23. +// + +import XCTest + +final class FirebonkTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/FirebonkUITests/FirebonkUITests.swift b/FirebonkUITests/FirebonkUITests.swift new file mode 100644 index 0000000..441f7db --- /dev/null +++ b/FirebonkUITests/FirebonkUITests.swift @@ -0,0 +1,41 @@ +// +// FirebonkUITests.swift +// FirebonkUITests +// +// Created by Patrick Müller on 12.01.23. +// + +import XCTest + +final class FirebonkUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/FirebonkUITests/FirebonkUITestsLaunchTests.swift b/FirebonkUITests/FirebonkUITestsLaunchTests.swift new file mode 100644 index 0000000..69aaecb --- /dev/null +++ b/FirebonkUITests/FirebonkUITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// FirebonkUITestsLaunchTests.swift +// FirebonkUITests +// +// Created by Patrick Müller on 12.01.23. +// + +import XCTest + +final class FirebonkUITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +}