Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
329 commits
Select commit Hold shift + click to select a range
9a5bacf
persist in AppStorage/UserDefaults (#115)
appfrosch Oct 9, 2023
cbb3361
94 - Add navigation title to AddVehicleView (#116)
hoangatuan Oct 9, 2023
5153ba2
Update Localizable.xcstrings
mikaelacaron Oct 9, 2023
b945e83
Update Localizable.xcstrings
mikaelacaron Oct 9, 2023
c8888b9
Fixes #13 - Added Error Handling for Vehicle Addition (#82)
tom-ludwig Oct 10, 2023
1389401
Issue 106: Improve - Use ScaledMetric on ContributorsListView for Use…
rramirez-dev Oct 10, 2023
daa2a21
Update CONTRIBUTING.md
mikaelacaron Oct 10, 2023
3715695
GitHub Actions for Running Unit Tests (#123)
hanhqvu Oct 11, 2023
8ac815c
Remove caching for DocC action
mikaelacaron Oct 11, 2023
7d8daea
FIX: Set upper limit for dynamic type size on DatePicker (#129)
abhinaypratap Oct 11, 2023
b0d3100
Completed initial French localization (#131)
Dean151 Oct 11, 2023
9c6053b
Fix SwiftLint warning
mikaelacaron Oct 11, 2023
7dd4e9e
Added NEW Icon Documentation (#132)
clydehenry3 Oct 11, 2023
5c0118f
Updated Czech Localization (#130)
Oct 11, 2023
889d1e4
Crash fix: Added document ID to vehicleToAdd (#134)
dogra25130 Oct 11, 2023
6f70c06
Create OdometerView tab
mikaelacaron Oct 11, 2023
2f70075
Update README.md
mikaelacaron Oct 11, 2023
8ac8639
Add alternate app icons
mikaelacaron Oct 11, 2023
f2207ef
Add initial Ukrainian localization. (#151)
sergpryimachuk Oct 11, 2023
6b19741
Removed GravatarID from the Contributor model (#154)
SarathVSasikala Oct 12, 2023
ae946bc
removed optional text if not empty (#157)
dogra25130 Oct 12, 2023
dbf1606
Fix previews from crashing
mikaelacaron Oct 12, 2023
2e8c9b1
Update details about the alternate app icons
mikaelacaron Oct 12, 2023
5956a08
Make version info copyable (#148)
anupdsouza Oct 12, 2023
09120d6
Update README.md
mikaelacaron Oct 12, 2023
8c3dfb9
#143 FEATURE - Search MaintenanceEvents on the DashboardView (#150)
sergpryimachuk Oct 12, 2023
41be149
FEATURE - UI implementation for the alert system (#155)
OmarHegazy93 Oct 13, 2023
b7d68c4
17 Alternate App Icons (#156)
DandyLyons Oct 13, 2023
32e432f
Remove event from local model on delete (#161)
josephnoir Oct 13, 2023
5fcf43d
updated EditEventDetail View title (#162)
AakifNadeem Oct 13, 2023
30a81c7
Fix:Firebase Warning - Implemented Event Sync function for sync with …
SarathVSasikala Oct 13, 2023
3be8ac3
Fix:Firebase Warning - added get Vechicles after vechile additions (#…
SarathVSasikala Oct 14, 2023
2bf4b69
Update comment
mikaelacaron Oct 14, 2023
a0b829e
List ordered by amount of contributions and profile name (#127)
am2089 Oct 15, 2023
5a28299
Connect Vehicles and Maintenance Events (#163)
hanhqvu Oct 15, 2023
35bb98e
Add Hindi localisation (#167)
anupdsouza Oct 15, 2023
d754393
Add Properties to Vehicle (#172)
DarkSoul26 Oct 15, 2023
3c91376
Fix all stringly typed Firestore calls in viewModels. (#176)
justinseal Oct 15, 2023
67746bb
Fix Vehicle initializer
mikaelacaron Oct 15, 2023
3b7e040
Large Content Viewer (#142) (#179)
ilyapaddubny Oct 18, 2023
8441220
Update German localization (#189)
Drag0ndust Oct 19, 2023
d364af9
Added Privacy Policy for Settings (#180)
Oksenoyt Oct 19, 2023
019bc3e
Belarusian locacization (#185)
ilyapaddubny Oct 21, 2023
96a681d
Add Korean localization (#192)
josephnoir Oct 21, 2023
318b7b5
152 Start `OdometerView` (#175)
thx1766 Oct 21, 2023
fbb9846
Added Firebase analytics screen name(#89) (#193)
ashwindsilva Oct 21, 2023
1c10c69
Log analytics on the OdometerView
mikaelacaron Oct 21, 2023
c325871
Remove TODO
mikaelacaron Oct 21, 2023
1a9f158
Update README and CONTRIBUTING files
mikaelacaron Oct 22, 2023
778fa03
added russian localization (#206)
arirays Oct 23, 2023
7f8f6ee
Adding App Store Connect texts as DocC article #124 (#195)
SuzGupta Oct 23, 2023
5e21745
Firestore rules documentation (#187)
rramirez-dev Oct 24, 2023
a6d481d
85-Interactive-Tutorial (#184)
ampsonic Oct 24, 2023
7c49357
Bug-Fix issue: 182 Picker in AddMaintainanceView is not working (#196)
rramirez-dev Oct 24, 2023
8cf886c
Rename folder
mikaelacaron Oct 24, 2023
69d8440
Fix spelling
mikaelacaron Oct 24, 2023
6044bee
Changed the order of edit and filter on Dashboard (#219)
majeedyaseen Oct 25, 2023
4c72979
Fix line breaks
mikaelacaron Oct 25, 2023
c19208d
`AddVehicleView` improvements (#220)
sergpryimachuk Oct 25, 2023
7a179a8
Updated ContributorsProfileView to show a ProgressView during image l…
Marcel-git666 Oct 25, 2023
ae9e39a
Rename variable and fix line breaks
mikaelacaron Oct 25, 2023
4ea5791
UI test to Add a Vehicle (#224)
am2089 Oct 25, 2023
93f37d2
Transalte new strings to Ukrainian (#229)
sergpryimachuk Oct 27, 2023
1463f34
Fix stale strings
mikaelacaron Oct 27, 2023
33fdba3
Change order of variables in SettingsView
mikaelacaron Oct 27, 2023
e0539c4
Remove stale empty string
mikaelacaron Oct 27, 2023
0e331d6
Implements contribution tip (#223)
SandroDahl Oct 27, 2023
9049973
BUG - Fastlane Unit Tests #173 (#194)
anupdsouza Oct 27, 2023
86ec3b6
SF Symbols Enum in Constants (#230)
Oct 27, 2023
8c0c0fe
7 Brazilian localization (#234)
Oct 27, 2023
5804680
Documentation update (#239)
shiftingsand Oct 28, 2023
3d5f891
FEATURE - implement realtime alert functionality (#177)
OmarHegazy93 Oct 29, 2023
50bf865
Remove stale strings
mikaelacaron Oct 29, 2023
e5b6228
Update Hindi localisation (#243)
anupdsouza Oct 29, 2023
675af12
Update documentation with DocC Feature Branch Tutorial (#244)
Jakayus Oct 29, 2023
27d6c9c
108-IMPROVE-Adding a ProgressView to the DashboardView (#237)
rramirez-dev Oct 29, 2023
1624bf6
235 Add CI Passing Badge (#245)
allanmaral Oct 30, 2023
7e386a2
Swipe Action to Delete OdometerReading (#246)
Wilsonilo Oct 30, 2023
cb51d2b
Update the German Localization (#251)
appfrosch Oct 30, 2023
dbfbba5
Added Turkish Localization (#252)
isiko35 Oct 31, 2023
0f64351
Change Label Icons on SettingsView to use Scalable Image (#248)
darrengillman Oct 31, 2023
857f758
IMPROVE - Analytics Screen View Modifier (#253)
jessielinden Oct 31, 2023
918143d
Add Dutch localization (#255)
krz Nov 1, 2023
f4d0abe
Fix Indentation in the Localizable.xcstrings
mikaelacaron Nov 1, 2023
1e3acd9
IMPROVE - Update the design of MaintenanceEvent List (#254)
mitaligondaliya Nov 1, 2023
d88b6ab
Fix indentation
mikaelacaron Nov 2, 2023
417ca45
Add conditionals for potential empty fields when creating a new vehic…
TratonGossink Nov 4, 2023
921c4bb
Fix spacing
mikaelacaron Nov 4, 2023
c10d01b
59 add localization comments to the DashboardView (#250)
hartti Nov 4, 2023
74a5ca2
Firebase Analytics (#262)
mikaelacaron Nov 12, 2023
a68036a
Add badge for DocC documentation (#263)
mikaelacaron Nov 15, 2023
0582d6d
Update Xcode version to 15.0.1 because of failing deployments
mikaelacaron Nov 15, 2023
7920a89
Make Paywall Todos and Add Crashlytics (#265)
mikaelacaron Nov 17, 2023
2daf49a
217 fix docc tutorial deployment (#266)
Jakayus Nov 21, 2023
88fd367
Update README with important block
mikaelacaron Nov 21, 2023
81507f3
Fix `FirebaseAnalyticsModifier` (#268)
mikaelacaron Nov 21, 2023
fb9cd15
Fix spelling
mikaelacaron Nov 21, 2023
a7c3228
Move functions inside of AuthenticationViewModel
mikaelacaron Nov 21, 2023
db1bc7d
Save maintenance event as a subcollection of vehicle
mikaelacaron Nov 21, 2023
48007eb
DashboardViewModel
mikaelacaron Nov 23, 2023
ff50cdc
Use composite query to load maintenance events
mikaelacaron Nov 23, 2023
9ec3f29
Move analytics event
mikaelacaron Nov 23, 2023
4d77a06
Update an event
mikaelacaron Nov 23, 2023
5df5c62
Can't change vehicle when updating an event
mikaelacaron Nov 23, 2023
8a7d9f6
Show the vehicle name
mikaelacaron Nov 23, 2023
4d86bbb
Update path for delete maintenance event
mikaelacaron Nov 23, 2023
e6aa92f
Create FirestorePath enum
mikaelacaron Nov 23, 2023
a8f5572
Make all GitHubURLs into an enum
mikaelacaron Nov 23, 2023
1860ea8
Add image for DocC about Firestore
mikaelacaron Nov 23, 2023
6663a94
update to include tutorial in side bar
Jakayus Nov 24, 2023
f0b65e0
address side pane hierarchy for docc
Jakayus Nov 24, 2023
0a88a4f
Create an odometer reading using sub-collections
mikaelacaron Nov 24, 2023
90f5875
Fix whereField for getting maintenance events
mikaelacaron Nov 24, 2023
ee0e0f7
Get odometer readings with a collection group
mikaelacaron Nov 24, 2023
bd51b19
Show vehicle name properly
mikaelacaron Nov 24, 2023
7b4f17f
By default select a vehicle when adding a maintenance event
mikaelacaron Nov 24, 2023
d74c89f
Delete odometer reading
mikaelacaron Nov 24, 2023
32d74ef
Only pass User UID to DashboardView and VM
mikaelacaron Nov 24, 2023
d9197c2
Only pass user UID to OdometerView and VM
mikaelacaron Nov 24, 2023
ea75476
Comment out deleting a vehicle
mikaelacaron Nov 24, 2023
a6f96fa
5 Edit Vehicle (#269)
TratonGossink Nov 24, 2023
963d3b0
Merge branch 'fix-vehicle-event-connection' of https://github.com/mik…
mikaelacaron Nov 24, 2023
1f77076
Fix some of the edit vehicle views
mikaelacaron Nov 24, 2023
87e57bd
Fix Localizable.xcstrings
mikaelacaron Nov 24, 2023
9ec9ac8
Correct Firebase function to update a vehicle
mikaelacaron Nov 24, 2023
c463788
Remove comment
mikaelacaron Nov 24, 2023
1ebd13e
Merge pull request #270 from mikaelacaron/fix-vehicle-event-connection
mikaelacaron Nov 24, 2023
919caef
remove tutorial link in article
Jakayus Nov 25, 2023
62153cc
Merge branch 'dev' into 217-docc-tutorial-sidebar-fix
Jakayus Nov 25, 2023
c4ddbe7
Create EditOdometerReadingView
mikaelacaron Nov 25, 2023
3a99a3f
Update EditOdometerReadingView
mikaelacaron Nov 25, 2023
9b0385c
Update odometer reading in Firebase
mikaelacaron Nov 25, 2023
4dca743
Update comment
mikaelacaron Nov 25, 2023
3096326
Merge pull request #271 from mikaelacaron/211-update-odometer-reading
mikaelacaron Nov 25, 2023
020bf49
Add analytics
mikaelacaron Nov 25, 2023
950d757
Merge branch 'dev' into 217-docc-tutorial-sidebar-fix
Jakayus Nov 27, 2023
85639c8
fix: swapped bindable macro with state macro and updated initializer …
windrunner21 Nov 28, 2023
b1f64bf
Merge pull request #272 from Jakayus/217-docc-tutorial-sidebar-fix
mikaelacaron Nov 29, 2023
ccbd593
Add AppDesign article to DocC
mikaelacaron Nov 29, 2023
a41f06f
Add link to HIG
mikaelacaron Nov 29, 2023
597616c
Merge pull request #274 from mikaelacaron/fix-docs
mikaelacaron Nov 29, 2023
68ea954
Remove unnecessary self
mikaelacaron Nov 29, 2023
25acad7
Merge pull request #273 from windrunner21/210-fix-dashboard-view-even…
mikaelacaron Nov 29, 2023
ac3104b
feature: prevent user from deleting last vehicle
windrunner21 Nov 30, 2023
eca0728
Merge remote-tracking branch 'refs/remotes/upstream/dev'
windrunner21 Nov 30, 2023
638492e
Update Alert copy
mikaelacaron Dec 11, 2023
2623bff
Update Localizable.xcstrings
mikaelacaron Dec 11, 2023
4a116b6
Merge pull request #276 from windrunner21/202-fix-prevent-users-from-…
mikaelacaron Dec 11, 2023
ac8471b
Add Polish localization
maartinj Dec 29, 2023
b65ad57
Merge pull request #280 from maartinj/7-localization-polish
mikaelacaron Dec 31, 2023
9f2d5c4
fix: Change App Language to be System Language instead of Polish
maartinj Jan 3, 2024
2567de0
Merge pull request #282 from maartinj/280-fix-default-localization-po…
mikaelacaron Jan 5, 2024
533ae82
feat: combine the accessibility elements
rbennum Jan 23, 2024
81573a8
Merge pull request #283 from rbennum/51-dashboard-voice-over-control
mikaelacaron Jan 23, 2024
cb560d6
feature: Use NavigationSplitView rather than TabView for iPad #6 (#279)
windrunner21 Jul 8, 2024
6c40d55
feat: Add Onboarding View (only UI) (#284)
maartinj Jul 9, 2024
ab8fb7e
Create issue metrics workflow (#278)
anupdsouza Jul 25, 2024
24572f6
Combine issues and PR into a single report
mikaelacaron Jul 25, 2024
410f2a8
Fix comments in issue-metrics
mikaelacaron Jul 26, 2024
e11141c
Update issue-metrics workflow to use v3 action and combine issues and…
mikaelacaron Jul 26, 2024
d3e30ac
Fix the boilerplate for issue-metrics.yml
mikaelacaron Jul 26, 2024
e06cf85
issue-metrics fix date calculation and title
mikaelacaron Jul 26, 2024
3a15c4b
Improve DashboardView Empty View (#287)
ItsJakeMarcus Jul 26, 2024
9ecbf2f
update docc.yml
mikaelacaron Jul 26, 2024
bef7f39
update fastlane
mikaelacaron Jul 27, 2024
60e7ea6
Add xctestplan
mikaelacaron Jul 27, 2024
c8d9653
fix: infinite loading on Dashboard (#300)
UVCoder1002 Oct 1, 2024
bf28c15
Use Firebase Emulator, Update Packages, and Prep for Hacktoberfest 20…
mikaelacaron Oct 1, 2024
2a5dc70
Update Getting Started DocC Documentation for the Firebase Emulator (…
Vai-Man Oct 2, 2024
95d1e91
Fix fastlane builds
mikaelacaron Oct 2, 2024
7c78bef
Add more SwiftLint rules
mikaelacaron Oct 2, 2024
fa47cb1
Convert everything to Folders
mikaelacaron Oct 2, 2024
1803f17
Update to mention Xcode 16.0
mikaelacaron Oct 2, 2024
3c539e1
Update docs
mikaelacaron Oct 2, 2024
e1f75eb
Add private_swiftui_state SwiftLint rule and resolve the warnings (#…
aking618 Oct 4, 2024
b6ab8d6
Convert ContribtorTests to use SwiftTesting (#322)
OmarHegazy93 Oct 4, 2024
8a7baf9
Move imports to alphabetical order
mikaelacaron Oct 4, 2024
144bc1f
Make File Headers Consistent (#326)
mikaelacaron Oct 4, 2024
fc3097e
Setup SwiftLint as Build Tool Plug-in (#328)
hanhqvu Oct 5, 2024
cf28d40
IMPROVE - Contributing Docs #324 (#327)
rramirez-dev Oct 6, 2024
2ba41ae
Issue 305 - Create Dark and Tinted Icons for the App (#319)
rajhraval Oct 8, 2024
8b28aa4
Update fastlane
mikaelacaron Oct 8, 2024
c077d4e
Fix fastlane
mikaelacaron Oct 8, 2024
a27aaaf
fix fastlane
mikaelacaron Oct 8, 2024
8986022
Set timeout for building xcode
mikaelacaron Oct 8, 2024
4442a8b
Fix CI
mikaelacaron Oct 8, 2024
389765f
Fix CI
mikaelacaron Oct 8, 2024
3a36f1e
Remove deprecated libraries and update Firebase
mikaelacaron Oct 10, 2024
98d962b
Update Firestore rules for emulator
mikaelacaron Oct 10, 2024
231db2b
Update Firestore rules in doc
mikaelacaron Oct 10, 2024
a31ee3b
Fix DocC CI
mikaelacaron Oct 10, 2024
accead4
Merge branch 'dev' into firestore-rules
mikaelacaron Oct 11, 2024
96e2ad9
Added privacy manifest info to PrivacyInfo files (#320)
AimeeT8 Oct 11, 2024
37f1be0
Merge branch 'dev' into firestore-rules
mikaelacaron Oct 14, 2024
53f5c4a
Build All Previews and Updated with Previewable (#339)
Yashraj49 Oct 15, 2024
a3dad0e
Upgrade all targets to iOS 18.0 and macOS 15.0 minimum (#340)
mikaelacaron Oct 15, 2024
383fa0e
Merge branch 'dev' into firestore-rules
mikaelacaron Oct 15, 2024
6e6a911
Vehicle Display in settings (#341)
maartinj Oct 15, 2024
5bf99c0
Add Persian localization (#344)
nssina Oct 16, 2024
7595807
Add search to Localizable.xcstrings
mikaelacaron Oct 16, 2024
5c29a28
Merge branch 'dev' into firestore-rules
mikaelacaron Oct 17, 2024
5e5ed93
Reformat odometer view (#346)
kondayutarou Oct 21, 2024
a59cbca
Added app icons as a preview in ChooseAppIcon view (#338)
mitaligondaliya Oct 21, 2024
f6d4048
Merge branch 'dev' into firestore-rules
mikaelacaron Oct 21, 2024
a87c22e
Update Firebase
mikaelacaron Oct 22, 2024
d9294ff
add rules to docs, but use open rules for emulator
mikaelacaron Oct 22, 2024
52737ab
Add Repobeats to README.md
mikaelacaron Oct 23, 2024
ba71d02
Implement export maintenance events (#345)
OmarHegazy93 Oct 25, 2024
c210590
Improvement - updated the DashboardView row appearance (#361)
ashabooga Oct 27, 2024
beb4704
Add options for measurements in Settings view (#364)
OmarHegazy93 Oct 28, 2024
e7a60d2
Add `VehicleDetailView` (#362)
isiko35 Oct 28, 2024
bdead2b
Added Preview to Odometer view (#365)
mike011 Oct 28, 2024
c560f22
Refactor preview for OdometerView
mikaelacaron Oct 28, 2024
bf2cc29
Merge branch 'dev' into firestore-rules
mikaelacaron Oct 29, 2024
d364003
Add Contributors Number to `ContributorsListView` (#366)
DandyLyons Oct 29, 2024
851ca82
Dutch translation (#367)
lonnekemennen Oct 31, 2024
ca4d6cb
BUG - ExportOptionsView alert when vehicle has no events to export (#…
ashabooga Nov 3, 2024
5721201
Update Firebase to v11 (#369)
mikaelacaron Nov 3, 2024
edd2cff
Update fastlane
mikaelacaron Nov 6, 2024
f13bda2
Merge branch 'dev' into firestore-rules
mikaelacaron Nov 6, 2024
b8055a9
IMPROVE: updated fetchNewestAlert function to be async (#370)
MilanLabuss Nov 6, 2024
1d68c23
Implement CSV export of maintenance events (#371)
mitaligondaliya Dec 12, 2024
62e331c
Merge branch 'dev' into firestore-rules
mikaelacaron Dec 22, 2024
e3bf404
Update CONTRIBUTING.md
mikaelacaron Dec 22, 2024
80d6dc8
Fix typo
mikaelacaron Dec 22, 2024
7598272
feat: Add vehicle-based filtering to DashboardView (#372)
Abrahamiaan Dec 23, 2024
86f2ee2
The line chart for the odometer is ready. (#374)
lukasskolek Jan 10, 2025
e045909
Merge branch 'dev' into firestore-rules
mikaelacaron Jan 10, 2025
481e6ac
Implemented "Rate App" Button in `SettingsView` (#376)
paapa-kusi Feb 18, 2025
635d554
Ignore some SwiftLint warnings
mikaelacaron Feb 18, 2025
1260950
Merge branch 'dev' into firestore-rules
mikaelacaron Feb 18, 2025
325464c
Update packages
mikaelacaron Feb 18, 2025
a426ffe
Improve README - project description, features, tech stack (#378)
radliff Mar 2, 2025
340f5b9
Update security rules
mikaelacaron Mar 2, 2025
f97840b
Update packages
mikaelacaron Mar 2, 2025
3b17ca6
Update Firebase to v12
mikaelacaron Sep 26, 2025
1c99182
Merge branch 'firestore-rules' into dev
mikaelacaron Sep 26, 2025
dd96698
382 Fix GitHub Actions CI (#385)
MattHeaney23 Sep 28, 2025
2b454c9
Bump to os26 Minimum and Remove macOS Target (#390)
mikaelacaron Oct 1, 2025
6b5b30b
Feat: add small total maintenance events count widget (#394)
TMaszko Oct 12, 2025
d3eff07
Update SettingsViewModel.getContributers()
ericjenkinson Oct 17, 2025
ab487fb
Fix linebreak
mikaelacaron Oct 17, 2025
c2e45a1
IMPROVE - Update Onboarding Views with Liquid Glass (#401)
Rakib-RS Oct 30, 2025
db68555
Merge branch 'dev' of https://github.com/mikaelacaron/Basic-Car-Maint…
mikaelacaron Oct 30, 2025
100294b
docs: add changelog article for v1.0 (#391)
Nithya-Reddy-M Nov 1, 2025
aa79a36
Added a filter in OdometerView (#381)
SanjaySiddharth Nov 1, 2025
b37df06
392-odometer-liquid-glass (#405)
aprameyak Feb 12, 2026
23beeb9
Update README
mikaelacaron Feb 12, 2026
9633546
IMPROVE - Add test coverage for OdometerViewModel (#380)
lauriecai May 19, 2026
7d2f190
fix: update OSPO action references to canonical org path (#409)
zkoppert May 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# EditorConfig is awesome: https://editorconfig.org
[*.swift]

indent_style = space
tab_width = 4
indent_size = 4

end_of_line = lf
insert_final_newline = true

max_line_length = 160
trim_trailing_whitespace = false
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/improve.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: Improve a Feature
about: Create a report to help us improve an existing feature
title: IMPROVE -
labels: improve
labels: improvement
assignees: ''

---
Expand Down
2 changes: 1 addition & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# What it Does
* Closes issue #
* Closes #issueNumber
* Describe what your change does

# How I Tested
Expand Down
46 changes: 46 additions & 0 deletions .github/workflows/docc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Deploy Documentation
on:
push:
branches: [main, dev]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: true

jobs:
build:
runs-on: macos-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Setup Config file
run: |
cp Basic-Car-Maintenance.xcconfig.template Basic-Car-Maintenance.xcconfig
- name: Run Build Docs
run: ./build-docc.sh
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: .docs
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
57 changes: 57 additions & 0 deletions .github/workflows/issue-metrics.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Weekly issue metrics
on:
workflow_dispatch:

permissions:
issues: write
pull-requests: read

jobs:
build:
name: issue metrics
runs-on: ubuntu-latest
steps:
- name: Get dates for last week
shell: bash
run: |
##########################################################
# Create report for the previous week
##########################################################
# Get the current date
current_date=$(date +'%Y-%m-%d')
# Calculate the start of the previous week (last Sunday)
start_of_week=$(date -d "last-sunday - 1 week" +'%Y-%m-%d')
# Calculate the end of the previous week (last Saturday)
end_of_week=$(date -d "last-saturday" +'%Y-%m-%d')

echo "$start_of_week..$end_of_week"
echo "prev_week=$start_of_week..$end_of_week" >> "$GITHUB_ENV"

- name: Run issue-metrics tool for issues and PRs opened last week
uses: github-community-projects/issue-metrics@v3
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SEARCH_QUERY: 'mikaelacaron/Basic-Car-Maintenance created:${{ env.prev_week }}'

- name: Create issue for opened issues and PRs last week
uses: peter-evans/create-issue-from-file@v5
with:
title: Weekly issue metrics report for opened issues and PRs
token: ${{ secrets.GITHUB_TOKEN }}
content-filepath: ./issue_metrics.md
assignees: mikaelacaron
labels: weekly-report

- name: Run issue-metrics tool for issues and PRs closed last week
uses: github-community-projects/issue-metrics@v3
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SEARCH_QUERY: 'mikaelacaron/Basic-Car-Maintenance closed:${{ env.prev_week }}'

- name: Create issue for closed issues and prs
uses: peter-evans/create-issue-from-file@v5
with:
title: Weekly issue metrics report for closed issues and prs
content-filepath: ./issue_metrics.md
assignees: mikaelacaron
labels: weekly-report
21 changes: 21 additions & 0 deletions .github/workflows/swiftlint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: SwiftLint
on:
workflow_dispatch:
pull_request:
branches:
- main
- dev
push:
branches:
- main
- dev
jobs:
SwiftLint:
runs-on: macos-13
steps:
- name: Checkout
uses: actions/checkout@v4
- name: SwiftLint
# To make SwiftLint treat all warnings as errors, add the --strict flag:
# run: swiftlint --strict --quiet --reporter github-actions-logging
run: swiftlint --quiet --reporter github-actions-logging
47 changes: 47 additions & 0 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Unit Tests

on:
workflow_dispatch:
pull_request:
branches:
- dev
push:
branches:
- main
- dev

# Limit only the latest workflow created to run
concurrency:
group: build
cancel-in-progress: true

jobs:
build:
runs-on: macos-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Prepare xcconfig
run: cp Basic-Car-Maintenance.xcconfig.template Basic-Car-Maintenance.xcconfig

- name: Xcode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable

- name: Install packages
run: xcodebuild -resolvePackageDependencies

- name: Enable Build Tools
run: cp fastlane/enable-build-tool-plugins.json ~/Library/org.swift.swiftpm/security/plugins.json

- name: Install dependencies
run: bundle install

- name: Install build log formatter
run: brew install xcbeautify

- name: Run Unit Tests
run: FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT=60 bundle exec fastlane unit_tests
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots/**/*.png
fastlane/test_output
fastlane/UnitTestsReport
fastlane/CodeCoverageReport

# Code Injection
# After new code Injection tools there's a generated folder /iOSInjectionProject
Expand Down
60 changes: 54 additions & 6 deletions .swiftlint.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,57 @@
# By default, SwiftLint uses a set of sensible default rules you can adjust:
disabled_rules: # rule identifiers turned on by default to exclude from running
- trailing_whitespace
- empty_parentheses_with_trailing_closure
opt_in_rules: # some rules are turned off by default, so you need to opt-in
- closure_parameter_position
- closure_spacing
- collection_alignment
- colon
- comma
- compiler_protocol_init
- contains_over_filter_count
- contains_over_filter_is_empty
- contains_over_first_not_nil
- contains_over_range_nil_comparison
- control_statement
- type_name
- trailing_whitespace
- identifier_name
- convenience_type
- cyclomatic_complexity
- duplicate_imports
- dynamic_inline
- empty_collection_literal
- empty_count
- empty_enum_arguments
- empty_parameters
- empty_parentheses_with_trailing_closure
opt_in_rules: # some rules are turned off by default, so you need to opt-in
- empty_count # Find all the available rules by running: `swiftlint rules`
- empty_xctest_method
- explicit_init
- for_where
- force_try
- leading_whitespace
- local_doc_comment
- lower_acl_than_parent
- nslocalizedstring_key
- opening_brace
- operator_usage_whitespace
- operator_whitespace
- overridden_super_call
- period_spacing
- private_over_fileprivate
- private_swiftui_state
- syntactic_sugar
- test_case_accessibility
- trailing_comma
- trailing_newline
- trailing_semicolon
- unavailable_function
- unused_closure_parameter
- unused_control_flow_label
- unused_enumerated
- unused_optional_binding
- unused_setter_value
- weak_delegate
- xctfail_message
- yoda_condition

# Alternatively, specify all rules explicitly by uncommenting this option:
# only_rules: # delete `disabled_rules` & `opt_in_rules` if using this
Expand All @@ -21,7 +64,7 @@ excluded: # paths to ignore during linting. Takes precedence over `included`.
- Pods
- Source/ExcludedFolder
- Source/ExcludedFile.swift
- Source/*/ExcludedFile.swift # Exclude files with a wildcard
- .derivedData # Exclude files with a wildcard
analyzer_rules: # Rules run by `swiftlint analyze` (experimental)
- explicit_self

Expand All @@ -31,6 +74,11 @@ force_cast: warning # implicitly
force_try:
severity: warning # explicitly
# rules that have both warning and error levels, can set just the warning level
identifier_name:
excluded:
- id
- db
- URL
# implicitly
line_length: 110
# they can set both implicitly with an array
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
//
// ContributorTests.swift
// Basic-Car-Maintenance-Tests
//
// https://github.com/mikaelacaron/Basic-Car-Maintenance
// See LICENSE for license information.
//

import Foundation
import Testing
@testable import Basic_Car_Maintenance

struct ContributorTests {
private let jsonDecoder = {
let jsonDecoder = JSONDecoder()
jsonDecoder.keyDecodingStrategy = .convertFromSnakeCase
return jsonDecoder
}()

private let jsonEncoder = {
let jsonEncoder = JSONEncoder()
jsonEncoder.keyEncodingStrategy = .convertToSnakeCase
return jsonEncoder
}()

@Test()
func contributorDecoding() throws {
let testContributorJson = """
{
"login": "Drag0ndust",
"id": 12915108,
"node_id": "MDQ6VXNlcjEyOTE1MTA4",
"avatar_url": "https://avatars.githubusercontent.com/u/12915108?v=4",
"url": "https://api.github.com/users/Drag0ndust",
"html_url": "https://github.com/Drag0ndust",
"contributions": 0
}
"""
let data = try #require(testContributorJson.data(using: .utf8))
let sut = try jsonDecoder.decode(Contributor.self, from: data)

#expect(sut.login == "Drag0ndust")
#expect(sut.id == 12915108)
#expect(sut.nodeID == "MDQ6VXNlcjEyOTE1MTA4")
#expect(sut.avatarURL == "https://avatars.githubusercontent.com/u/12915108?v=4")
#expect(sut.url == "https://api.github.com/users/Drag0ndust")
#expect(sut.htmlURL == "https://github.com/Drag0ndust")
#expect(sut.contributions == 0)
}

@Test()
func contributorEncoding() throws {
let contributor = Contributor(
login: "Drag0ndust",
id: 12915108,
nodeID: "MDQ6VXNlcjEyOTE1MTA4",
avatarURL: "https://avatars.githubusercontent.com/u/12915108?v=4",
url: "https://api.github.com/users/Drag0ndust",
htmlURL: "https://github.com/Drag0ndust",
contributions: 0
)

let contributorData = try jsonEncoder.encode(contributor)

// now decode it again and check if the objects are equal
let decodedContributor = try jsonDecoder.decode(Contributor.self, from: contributorData)

#expect(contributor == decodedContributor)
}
}
Loading
Loading