Skip to content

Commit b0e344e

Browse files
committed
Merge remote-tracking branch 'origin/master' into rsgowman/fix_firestore-api-changes
2 parents 6b7786e + 609cd03 commit b0e344e

File tree

804 files changed

+64202
-14223
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

804 files changed

+64202
-14223
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ Pods/
5858
Podfile.lock
5959
*.xcworkspace
6060

61+
# Firestore's build configuration, as generated by CocoaPods
62+
Firestore/core/src/firebase/firestore/util/config.h
63+
6164
# CMake
6265
.downloads
6366
Debug

.travis.yml

Lines changed: 82 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,92 @@
1+
os: osx
12
osx_image: xcode9.2
23
language: objective-c
34
cache:
45
- bundler
56
- cocoapods
67

78
rvm: 2.3.1
8-
before_install:
9-
# Add next line back with updated DeviceUDID for xcode9.1 if stability issues with simulator
10-
# - open -a "simulator" --args -CurrentDeviceUDID ABBD7191-486B-462F-80B4-AE08C5820DA1
11-
- bundle install
12-
- gem install xcpretty
13-
- bundle exec pod install --project-directory=Example --repo-update
14-
- bundle exec pod install --project-directory=Firestore/Example --no-repo-update
15-
16-
script:
17-
- "! git grep -I ' $'" # Fail on trailing whitespace in non-binary files
18-
- ./test.sh
19-
20-
# TODO fix os_log deprecation warning in FIRLogger to remove --allow-warnings
21-
- bundle exec pod lib lint FirebaseCore.podspec --allow-warnings
22-
23-
# TODO - Uncomment subsequent lines once FirebaseCore source repo is in public Specs repo
24-
# - bundle exec pod lib lint FirebaseAuth.podspec
25-
# - bundle exec pod lib lint FirebaseDatabase.podspec
26-
# - bundle exec pod lib lint FirebaseMessaging.podspec --allow-warnings #pending #390 fix
27-
# - bundle exec pod lib lint FirebaseStorage.podspec
28-
# - bundle exec pod lib lint Firestore/Firestore.podspec
9+
10+
jobs:
11+
include:
12+
- stage: checks
13+
# This only needs to be run once, so restrict it to an arbitrary combination
14+
before_install:
15+
- brew install clang-format
16+
- brew install swiftformat
17+
script:
18+
- ./scripts/check_whitespace.sh
19+
- ./scripts/check_copyright.sh
20+
- ./scripts/check_no_module_imports.sh
21+
- ./scripts/style.sh test-only $TRAVIS_COMMIT_RANGE
22+
# Google C++ style compliance
23+
- ./scripts/lint.sh $TRAVIS_COMMIT_RANGE
24+
25+
- stage: test
26+
env:
27+
- PROJECT=Firebase PLATFORM=iOS
28+
before_install:
29+
# Add next line back with updated DeviceUDID for xcode9.1 if stability issues with simulator
30+
# - open -a "simulator" --args -CurrentDeviceUDID ABBD7191-486B-462F-80B4-AE08C5820DA1
31+
- bundle install
32+
- gem install xcpretty
33+
- ./scripts/if_changed.sh bundle exec pod install --project-directory=Example --repo-update
34+
- ./scripts/if_changed.sh bundle exec pod install --project-directory=Functions/Example
35+
script:
36+
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
37+
38+
# TODO fix os_log deprecation warning in FIRLogger to remove --allow-warnings
39+
- ./scripts/if_changed.sh bundle exec pod lib lint FirebaseCore.podspec --allow-warnings
40+
41+
# TODO - Uncomment subsequent lines once FirebaseCore source repo is in public Specs repo
42+
# - bundle exec pod lib lint FirebaseAuth.podspec
43+
# - bundle exec pod lib lint FirebaseDatabase.podspec
44+
# - bundle exec pod lib lint FirebaseMessaging.podspec
45+
# - bundle exec pod lib lint FirebaseStorage.podspec
46+
# - bundle exec pod lib lint FirebaseFirestore.podspec
47+
48+
- stage: test
49+
env:
50+
- PROJECT=Firestore PLATFORM=iOS METHOD=xcodebuild
51+
before_install:
52+
- bundle install
53+
- gem install xcpretty
54+
- ./scripts/if_changed.sh bundle exec pod install --project-directory=Firestore/Example --repo-update
55+
script:
56+
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
57+
58+
- stage: test
59+
env:
60+
- PROJECT=Firestore PLATFORM=macOS METHOD=cmake
61+
before_install:
62+
- bundle install
63+
- gem install xcpretty
64+
- brew install cmake
65+
- brew install go # Somehow the build for Abseil requires this.
66+
- ./scripts/if_changed.sh bundle exec pod install --project-directory=Example --repo-update
67+
- ./scripts/if_changed.sh bundle exec pod install --project-directory=Firestore/Example --no-repo-update
68+
script:
69+
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM $METHOD
70+
71+
- stage: test
72+
env:
73+
- PROJECT=Firebase PLATFORM=macOS
74+
before_install:
75+
- bundle install
76+
- gem install xcpretty
77+
- ./scripts/if_changed.sh bundle exec pod install --project-directory=Example --repo-update
78+
script:
79+
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
80+
81+
- stage: test
82+
env:
83+
- PROJECT=Firebase PLATFORM=tvOS
84+
before_install:
85+
- bundle install
86+
- gem install xcpretty
87+
- ./scripts/if_changed.sh bundle exec pod install --project-directory=Example --repo-update
88+
script:
89+
- ./scripts/if_changed.sh ./scripts/build.sh $PROJECT $PLATFORM
2990

3091
branches:
3192
only:

CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ set(FIREBASE_INSTALL_DIR ${PROJECT_BINARY_DIR})
3737
enable_testing()
3838

3939
include(external/FirebaseCore)
40-
4140
include(external/googletest)
4241
include(external/leveldb)
42+
include(external/grpc)
43+
include(external/protobuf)
44+
include(external/nanopb)
4345
include(external/firestore)

CODE_OF_CONDUCT.md

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# Firebase Code of Conduct
2+
3+
## Our Pledge
4+
5+
In the interest of fostering an open and welcoming environment, we as
6+
contributors and maintainers pledge to making participation in our project and
7+
our community a harassment-free experience for everyone, regardless of age, body
8+
size, disability, ethnicity, gender identity and expression, level of
9+
experience, education, socio-economic status, nationality, personal appearance,
10+
race, religion, or sexual identity and orientation.
11+
12+
## Our Standards
13+
14+
Examples of behavior that contributes to creating a positive environment
15+
include:
16+
17+
* Using welcoming and inclusive language
18+
* Being respectful of differing viewpoints and experiences
19+
* Gracefully accepting constructive criticism
20+
* Focusing on what is best for the community
21+
* Showing empathy towards other community members
22+
23+
Examples of unacceptable behavior by participants include:
24+
25+
* The use of sexualized language or imagery and unwelcome sexual attention or
26+
advances
27+
* Trolling, insulting/derogatory comments, and personal or political attacks
28+
* Public or private harassment
29+
* Publishing others' private information, such as a physical or electronic
30+
address, without explicit permission
31+
* Other conduct which could reasonably be considered inappropriate in a
32+
professional setting
33+
34+
## Our Responsibilities
35+
36+
Project maintainers are responsible for clarifying the standards of acceptable
37+
behavior and are expected to take appropriate and fair corrective action in
38+
response to any instances of unacceptable behavior.
39+
40+
Project maintainers have the right and responsibility to remove, edit, or reject
41+
comments, commits, code, wiki edits, issues, and other contributions that are
42+
not aligned to this Code of Conduct, or to ban temporarily or permanently any
43+
contributor for other behaviors that they deem inappropriate, threatening,
44+
offensive, or harmful.
45+
46+
## Scope
47+
48+
This Code of Conduct applies both within project spaces and in public spaces
49+
when an individual is representing the project or its community. Examples of
50+
representing a project or community include using an official project e-mail
51+
address, posting via an official social media account, or acting as an appointed
52+
representative at an online or offline event. Representation of a project may be
53+
further defined and clarified by project maintainers.
54+
55+
This Code of Conduct also applies outside the project spaces when the Project
56+
Steward has a reasonable belief that an individual's behavior may have a
57+
negative impact on the project or its community.
58+
59+
## Conflict Resolution
60+
61+
We do not believe that all conflict is bad; healthy debate and disagreement
62+
often yield positive results. However, it is never okay to be disrespectful or
63+
to engage in behavior that violates the project’s code of conduct.
64+
65+
If you see someone violating the code of conduct, you are encouraged to address
66+
the behavior directly with those involved. Many issues can be resolved quickly
67+
and easily, and this gives people more control over the outcome of their
68+
dispute. If you are unable to resolve the matter for any reason, or if the
69+
behavior is threatening or harassing, report it. We are dedicated to providing
70+
an environment where participants feel welcome and safe.
71+
72+
Reports should be directed to Paul Beusterien([email protected]), the
73+
Project Steward for the Firebase iOS SDK. It is the Project Steward’s duty to
74+
receive and address reported violations of the code of conduct. They will then
75+
work with a committee consisting of representatives from the Open Source
76+
Programs Office and the Google Open Source Strategy team. If for any reason you
77+
are uncomfortable reaching out the Project Steward, please email
78+
79+
80+
We will investigate every complaint, but you may not receive a direct response.
81+
We will use our discretion in determining when and how to follow up on reported
82+
incidents, which may range from not taking action to permanent expulsion from
83+
the project and project-sponsored spaces. We will notify the accused of the
84+
report and provide them an opportunity to discuss it before any action is taken.
85+
The identity of the reporter will be omitted from the details of the report
86+
supplied to the accused. In potentially harmful situations, such as ongoing
87+
harassment or threats to anyone's safety, we may take action without notice.
88+
89+
## Attribution
90+
91+
This Code of Conduct is adapted from the Contributor Covenant, version 1.4,
92+
available at
93+
https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

Carthage.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# Firebase Carthage
2+
3+
## Context
4+
5+
This page introduces and provides instructions for an **experimental** Firebase
6+
[Carthage](https://github.com/Carthage/Carthage) implementation. Based on
7+
feedback and usage, the Firebase team may decide to make the Carthage
8+
distribution official.
9+
10+
Please [let us know](https://github.com/firebase/firebase-ios-sdk/issues) if you
11+
have suggestions about how best to distribute Carthage binaries that include
12+
resource bundles.
13+
14+
## Carthage Installation
15+
16+
[Homebrew](http://brew.sh/) is one way to install Carthage.
17+
18+
```bash
19+
$ brew update
20+
$ brew install carthage
21+
```
22+
23+
See the
24+
[Carthage page](https://github.com/Carthage/Carthage#installing-carthage) for
25+
more details and additional installation methods.
26+
27+
## Carthage Usage
28+
29+
- Create a Cartfile with a **subset** of the following components - choosing the
30+
Firebase components that you want to include in your app. Note that
31+
**FirebaseAnalytics** must always be included.
32+
```
33+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseABTestingBinary.json"
34+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAdMobBinary.json"
35+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAnalyticsBinary.json"
36+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseAuthBinary.json"
37+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseCrashBinary.json"
38+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseDatabaseBinary.json"
39+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseDynamicLinksBinary.json"
40+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseFirestoreBinary.json"
41+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseFunctionsBinary.json"
42+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseInvitesBinary.json"
43+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseMessagingBinary.json"
44+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebasePerformanceBinary.json"
45+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseRemoteConfigBinary.json"
46+
binary "https://dl.google.com/dl/firebase/ios/carthage/FirebaseStorageBinary.json"
47+
```
48+
- Run `carthage update`
49+
- Use Finder to open `Carthage/Build/iOS`.
50+
- Copy the contents into the top level of your Xcode project and make sure
51+
they're added to the right build target(s).
52+
- Add the -ObjC flag to "Other Linker Flags".
53+
- Make sure that the build target(s) includes your project's `GoogleService-Info.plist`.
54+
- [Delete Firebase.framework from the Link Binary With Libraries Build Phase](https://github.com/firebase/firebase-ios-sdk/issues/911#issuecomment-372455235).
55+
- If you're including a Firebase component that has resources, copy its bundles
56+
into the Xcode project and make sure they're added to the
57+
`Copy Bundle Resources` Build Phase :
58+
- For Firestore:
59+
- ./Carthage/Build/iOS/gRPC.framework/gRPCCertificates.bundle
60+
- For Invites:
61+
- ./Carthage/Build/iOS/FirebaseInvites.framework/GoogleSignIn.bundle
62+
- ./Carthage/Build/iOS/FirebaseInvites.framework/GPPACLPickerResources.bundle
63+
- ./Carthage/Build/iOS/FirebaseInvites.framework/GINInviteResources.bundle
64+
65+
## Versioning
66+
67+
Unlike the CocoaPods distribution, the Carthage distribution is like the
68+
Firebase zip release in that all the Firebase components share the same version.
69+
Mixing and matching components with different versions may cause linker errors.
70+
71+
## Static Frameworks
72+
73+
Note that the Firebase frameworks in the distribution include static libraries.
74+
While it is fine to link these into apps, it will generally not work to depend
75+
on them from wrapper dynamic frameworks.
76+
77+
## Acknowledgements
78+
79+
Thanks to the Firebase community for encouraging this implementation including
80+
those who have made this the most updated
81+
[firebase-ios-sdk](https://github.com/firebase/firebase-ios-sdk)
82+
[issue](https://github.com/firebase/firebase-ios-sdk/issues/9).
83+
84+
Thanks also to those who have already done Firebase Carthage implementations,
85+
such as https://github.com/soheilbm/Firebase.

0 commit comments

Comments
 (0)