diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..0a8368f --- /dev/null +++ b/.travis.yml @@ -0,0 +1,48 @@ +language: objective-c +osx_image: xcode9.4 +xcode_project: $PROJECTNAME.xcodeproj +env: + global: + - PROJECT="$PROJECTNAME.xcodeproj" + - $SCHEME="$PROJECTNAME" + - FRAMEWORK_NAME="$PROJECTNAME.framework" + +before_install: + - gem install xcpretty --no-rdoc --no-ri --no-document --quiet + - gem install cocoapods --no-rdoc --no-ri --no-document --quiet + # - gem install xcpretty-travis-formatter + +script: + - set -o pipefail + - xcodebuild -version + - swift package generate-xcodeproj + - xcodebuild -project "$PROJECT" -scheme "$SCHEME" -sdk iphonesimulator -configuration Debug ONLY_ACTIVE_ARCH=NO build | xcpretty + - xcodebuild -project "$PROJECT" -scheme "$SCHEME" -sdk iphoneos -configuration Release ONLY_ACTIVE_ARCH=NO build | xcpretty + - pod lib lint --quick + +after_success: + # Run `pod trunk push` if specified + - if [ -n "$TRAVIS_TAG" ]; then + pod trunk push --allow-warnings; + fi + +# - bash <(curl -s https://codecov.io/bash) +before_deploy: + - if [ -n "$TRAVIS_TAG" ]; then + brew update; + brew outdated carthage || brew upgrade carthage; + carthage version; + swift package generate-xcodeproj; + carthage build --platform ios --no-skip-current --verbose; + carthage archive $PROJECTNAME; + fi + +deploy: + provider: releases + api_key: "$GITHUBTOKEN" + file: $FRAMEWORK_NAME.zip + skip_cleanup: true + on: + repo: amosavian/$PROJECTNAME + tags: true + diff --git a/AMSMB2.podspec b/AMSMB2.podspec new file mode 100644 index 0000000..a89aaea --- /dev/null +++ b/AMSMB2.podspec @@ -0,0 +1,137 @@ +# +# Be sure to run `pod spec lint ExtendedAttributes.podspec' to ensure this is a +# valid spec and to remove all comments including this before submitting the spec. +# +# To learn more about Podspec attributes see http://docs.cocoapods.org/specification.html +# To see working Podspecs in the CocoaPods repo see https://github.com/CocoaPods/Specs/ +# + +Pod::Spec.new do |s| + + # ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # These will help people to find your library, and whilst it + # can feel like a chore to fill in it's definitely to your advantage. The + # summary should be tweet-length, and the description more in depth. + # + + s.name = "AMSMB2" + s.version = "1.0.0" + s.summary = "Swift framework to connect SMB2/3 shares" + + # This description is used to generate tags and improve search results. + # * Think: What does it do? Why did you write it? What is the focus? + # * Try to keep it short, snappy and to the point. + # * Write the description between the DESC delimiters below. + # * Finally, don't worry about the indent, CocoaPods strips it! + s.description = <<-DESC + This is small Swift library for iOS which wraps libsmb2 and allows to connect a SMB2/3 share and do file operation. + DESC + + s.homepage = "https://github.com/amosavian/AMSMB2" + # s.screenshots = "www.example.com/screenshots_1.gif", "www.example.com/screenshots_2.gif" + + + # ――― Spec License ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # Licensing your code is important. See http://choosealicense.com for more info. + # CocoaPods will detect a license file if there is a named LICENSE* + # Popular ones are 'MIT', 'BSD' and 'Apache License, Version 2.0'. + # + + s.license = { :type => "LGPL-2.1", :file => "LICENSE" } + + + # ――― Author Metadata ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # Specify the authors of the library, with email addresses. Email addresses + # of the authors are extracted from the SCM log. E.g. $ git log. CocoaPods also + # accepts just a name if you'd rather not provide an email address. + # + # Specify a social_media_url where others can refer to, for example a twitter + # profile URL. + # + + s.authors = { "Amir Abbas Mousavian" => "a.mosavian@gmail.com" } + s.social_media_url = "https://twitter.com/amosavian" + # Or just: s.author = "Amir Abbas" + + # ――― Platform Specifics ――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # If this Pod runs only on iOS or OS X, then specify the platform and + # the deployment target. You can optionally include the target after the platform. + # + + # s.platform = :ios + # s.platform = :ios, "5.0" + + # When using multiple platforms + s.swift_version = "4.1" + s.ios.deployment_target = "9.0" + # s.osx.deployment_target = "10.11" + # s.watchos.deployment_target = "2.0" + # s.tvos.deployment_target = "9.0" + + + # ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # Specify the location from where the source should be retrieved. + # Supports git, hg, bzr, svn and HTTP. + # + + s.source = { :git => "https://github.com/amosavian/AMSMB2.git", :tag => "#{s.version}" } + + + # ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # CocoaPods is smart about how it includes source code. For source files + # giving a folder will include any swift, h, m, mm, c & cpp files. + # For header files it will include any header in the folder. + # Not including the public_header_files will make all headers public. + # + + s.vendored_libraries = "libsmb2/lib/libcrypto.a", "libsmb2/lib/libssl.a", "libsmb2/lib/libsmb2.a" + s.source_files = "AMSMB2/**/*.swift" + s.xcconfig = { 'LIBRARY_SEARCH_PATHS' => "$(PODS_ROOT)/AMSMB2/libsmb2/lib", 'SWIFT_INCLUDE_PATHS' => "${PODS_ROOT}/AMSMB2/libsmb2/**" } + #s.exclude_files = "AMSMB2/Exclude" + # s.public_header_files = "libsmb2/include/**/*.h" + + # ――― Resources ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # A list of resources included with the Pod. These are copied into the + # target bundle with a build phase script. Anything else will be cleaned. + # You can preserve files from being cleaned, please don't preserve + # non-essential files like tests, examples and documentation. + # + + # s.resource = "icon.png" + # s.resources = "Resources/*.png" + + s.preserve_paths = "libsmb2/include/module.modulemap" + + + # ――― Project Linking ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # Link your library with frameworks, or libraries. Libraries do not include + # the lib prefix of their name. + # + + # s.framework = "SomeFramework" + s.frameworks = "Foundation" + + # s.library = "iconv" + # s.libraries = "iconv", "xml2" + + + # ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― # + # + # If your library depends on compiler flags you can set them in the xcconfig hash + # where they will only apply to your library. If you depend on other Podspecs + # you can include multiple dependencies to ensure it works. + + # s.requires_arc = true + + # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" } + # s.dependency "JSONKit", "~> 1.4" + +end diff --git a/libsmb2/include/module.modulemap b/libsmb2/include/module.modulemap index a60e162..8878faf 100644 --- a/libsmb2/include/module.modulemap +++ b/libsmb2/include/module.modulemap @@ -5,7 +5,7 @@ module SMB2 [extern_c] { header "smb2/smb2-errors.h" } - module SMB2Interal { + module SMB2Internal { header "libsmb2-private.h" }