diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..cac1914 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,23 @@ +version: 2 + +updates: + # - package-ecosystem: "pub" + # directory: "/packages/flutter_timetable" + # schedule: + # interval: "weekly" + + - package-ecosystem: "pub" + directory: "/packages/flutter_timetable_interface" + schedule: + interval: "weekly" + + - package-ecosystem: "pub" + directory: "/packages/flutter_timetable_firebase" + schedule: + interval: "weekly" + + - package-ecosystem: "pub" + directory: "/packages/flutter_timetable_view" + schedule: + interval: "weekly" + diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 4075bc2..9b5ed36 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -1,4 +1,4 @@ -name: Iconica Standard Component CI Workflow +name: Iconica Standard Melos CI Workflow # Workflow Caller version: 1.0.0 on: @@ -7,6 +7,8 @@ on: jobs: call-global-iconica-workflow: - uses: Iconica-Development/.github/.github/workflows/component-ci.yml@master + uses: Iconica-Development/.github/.github/workflows/melos-ci.yml@master secrets: inherit - permissions: write-all \ No newline at end of file + permissions: write-all + with: + subfolder: '.' # add optional subfolder to run workflow in \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4e9721f..e4d7ae3 100644 --- a/.gitignore +++ b/.gitignore @@ -23,16 +23,18 @@ migrate_working_dir/ # Flutter/Dart/Pub related # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. -/pubspec.lock +pubspec.lock **/doc/api/ .dart_tool/ .packages build/ .metadata -example/android/ -example/ios/ -example/web/ -example/linux/ -example/macos/ -example/windows/ \ No newline at end of file +android/ +ios/ +web/ +linux/ +macos/ +windows/ + +pubspec_overrides.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index e3f03ee..21a0fc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,4 +29,8 @@ ## [1.4.0] - 13 November 2023 -* Add the option for sorting the blocks by their id. \ No newline at end of file +* Add the option for sorting the blocks by their id. + +## [2.0.0] - 03 December 2023 + +* Create Melos variant of the component where there are multiple packages in the same repository. diff --git a/LICENSE b/LICENSE index fe891f8..1070e69 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2022 Iconica, All rights reserved. +Copyright (c) 2023 Iconica, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/melos.yaml b/melos.yaml new file mode 100644 index 0000000..6c91c7c --- /dev/null +++ b/melos.yaml @@ -0,0 +1,38 @@ +name: flutter_timetable + +packages: + - packages/** + +command: + version: + branch: master + +scripts: + lint:all: + run: dart run melos run analyze && dart run melos run format-check + description: Run all static analysis checks. + + get: + run: | + melos exec -c 1 -- "flutter pub get" + melos exec --scope="*example*" -c 1 -- "flutter pub get" + + upgrade: + run: melos exec -c 1 -- "flutter pub upgrade" + + create: + run: melos exec --scope="*example*" -c 1 -- "flutter create ." + + analyze: + run: | + dart run melos exec -c 1 -- \ + flutter analyze --fatal-infos + description: Run `flutter analyze` for all packages. + + format: + run: dart run melos exec dart format . + description: Run `dart format` for all packages. + + format-check: + run: dart run melos exec dart format . --set-exit-if-changed + description: Run `dart format` checks for all packages. diff --git a/packages/flutter_timetable_interface/analysis_options.yaml b/packages/flutter_timetable_interface/analysis_options.yaml new file mode 100644 index 0000000..a5744c1 --- /dev/null +++ b/packages/flutter_timetable_interface/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/flutter_timetable_interface/lib/flutter_timetable_interface.dart b/packages/flutter_timetable_interface/lib/flutter_timetable_interface.dart new file mode 100644 index 0000000..02c17bd --- /dev/null +++ b/packages/flutter_timetable_interface/lib/flutter_timetable_interface.dart @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2023 Iconica +// +// SPDX-License-Identifier: BSD-3-Clause + +library flutter_timetable_interface; + +export 'src/model/time_block.dart'; diff --git a/lib/src/models/time_block.dart b/packages/flutter_timetable_interface/lib/src/model/time_block.dart similarity index 100% rename from lib/src/models/time_block.dart rename to packages/flutter_timetable_interface/lib/src/model/time_block.dart diff --git a/packages/flutter_timetable_interface/pubspec.yaml b/packages/flutter_timetable_interface/pubspec.yaml new file mode 100644 index 0000000..cad602d --- /dev/null +++ b/packages/flutter_timetable_interface/pubspec.yaml @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: 2023 Iconica +# +# SPDX-License-Identifier: GPL-3.0-or-later + +name: flutter_timetable_interface +description: A new Flutter package project. +version: 2.0.0 +repository: https://github.com/Iconica-Development/flutter_timetable +publish_to: none + +environment: + sdk: ">=3.1.0 <4.0.0" + flutter: ">=1.17.0" + +dependencies: + flutter: + sdk: flutter + +dev_dependencies: + flutter_lints: ^2.0.0 + +flutter: diff --git a/analysis_options.yaml b/packages/flutter_timetable_view/analysis_options.yaml similarity index 100% rename from analysis_options.yaml rename to packages/flutter_timetable_view/analysis_options.yaml diff --git a/example/.gitignore b/packages/flutter_timetable_view/example/.gitignore similarity index 100% rename from example/.gitignore rename to packages/flutter_timetable_view/example/.gitignore diff --git a/example/README.md b/packages/flutter_timetable_view/example/README.md similarity index 100% rename from example/README.md rename to packages/flutter_timetable_view/example/README.md diff --git a/example/analysis_options.yaml b/packages/flutter_timetable_view/example/analysis_options.yaml similarity index 100% rename from example/analysis_options.yaml rename to packages/flutter_timetable_view/example/analysis_options.yaml diff --git a/example/lib/main.dart b/packages/flutter_timetable_view/example/lib/main.dart similarity index 96% rename from example/lib/main.dart rename to packages/flutter_timetable_view/example/lib/main.dart index 78c80ef..5075274 100644 --- a/example/lib/main.dart +++ b/packages/flutter_timetable_view/example/lib/main.dart @@ -3,7 +3,8 @@ // SPDX-License-Identifier: BSD-3-Clause import 'package:flutter/material.dart'; -import 'package:flutter_timetable/timetable.dart'; +import 'package:flutter_timetable_interface/flutter_timetable_interface.dart'; +import 'package:flutter_timetable_view/flutter_timetable_view.dart'; void main() { runApp(const MaterialApp(home: TimetableDemo())); diff --git a/example/pubspec.yaml b/packages/flutter_timetable_view/example/pubspec.yaml similarity index 76% rename from example/pubspec.yaml rename to packages/flutter_timetable_view/example/pubspec.yaml index 1d5e058..e335921 100644 --- a/example/pubspec.yaml +++ b/packages/flutter_timetable_view/example/pubspec.yaml @@ -13,8 +13,10 @@ dependencies: sdk: flutter cupertino_icons: ^1.0.2 - flutter_timetable: + flutter_timetable_view: path: ../ + flutter_timetable_interface: + path: ../../flutter_timetable_interface dev_dependencies: flutter_test: diff --git a/example/test/widget_test.dart b/packages/flutter_timetable_view/example/test/widget_test.dart similarity index 100% rename from example/test/widget_test.dart rename to packages/flutter_timetable_view/example/test/widget_test.dart diff --git a/lib/timetable.dart b/packages/flutter_timetable_view/lib/flutter_timetable_view.dart similarity index 86% rename from lib/timetable.dart rename to packages/flutter_timetable_view/lib/flutter_timetable_view.dart index 459fce1..ce2f586 100644 --- a/lib/timetable.dart +++ b/packages/flutter_timetable_view/lib/flutter_timetable_view.dart @@ -5,7 +5,6 @@ library timetable; export 'src/models/table_theme.dart'; -export 'src/models/time_block.dart'; export 'src/timetable.dart'; export 'src/widgets/block.dart'; export 'src/widgets/table.dart'; diff --git a/lib/src/block_service.dart b/packages/flutter_timetable_view/lib/src/block_service.dart similarity index 97% rename from lib/src/block_service.dart rename to packages/flutter_timetable_view/lib/src/block_service.dart index 543c45e..eb0b8ca 100644 --- a/lib/src/block_service.dart +++ b/packages/flutter_timetable_view/lib/src/block_service.dart @@ -3,7 +3,7 @@ // SPDX-License-Identifier: BSD-3-Clause import 'package:flutter/material.dart'; -import 'package:flutter_timetable/src/models/time_block.dart'; +import 'package:flutter_timetable_interface/flutter_timetable_interface.dart'; /// Combine blocks that have the same id and the same time. List combineBlocksWithId(List blocks) { diff --git a/lib/src/models/table_theme.dart b/packages/flutter_timetable_view/lib/src/models/table_theme.dart similarity index 100% rename from lib/src/models/table_theme.dart rename to packages/flutter_timetable_view/lib/src/models/table_theme.dart diff --git a/lib/src/timetable.dart b/packages/flutter_timetable_view/lib/src/timetable.dart similarity index 97% rename from lib/src/timetable.dart rename to packages/flutter_timetable_view/lib/src/timetable.dart index 0940fc3..3467dc9 100644 --- a/lib/src/timetable.dart +++ b/packages/flutter_timetable_view/lib/src/timetable.dart @@ -6,11 +6,12 @@ import 'dart:math'; import 'package:flutter/material.dart'; import 'package:flutter/scheduler.dart'; -import 'package:flutter_timetable/src/block_service.dart'; -import 'package:flutter_timetable/src/models/table_theme.dart'; -import 'package:flutter_timetable/src/models/time_block.dart'; -import 'package:flutter_timetable/src/widgets/block.dart'; -import 'package:flutter_timetable/src/widgets/table.dart' as table; +import 'package:flutter_timetable_interface/flutter_timetable_interface.dart'; +import 'package:flutter_timetable_view/src/block_service.dart'; +import 'package:flutter_timetable_view/src/models/table_theme.dart'; +import 'package:flutter_timetable_view/src/widgets/block.dart'; + +import 'package:flutter_timetable_view/src/widgets/table.dart' as table; class Timetable extends StatefulWidget { /// [Timetable] widget that displays a timetable with [TimeBlock]s. @@ -360,7 +361,7 @@ class _TimetableState extends State { widget.theme.timeStyle ?? Theme.of(context).textTheme.bodyLarge, ), maxLines: 1, - textScaleFactor: MediaQuery.of(context).textScaleFactor, + textScaler: MediaQuery.textScalerOf(context), textDirection: TextDirection.ltr, )..layout()) .size; diff --git a/lib/src/widgets/block.dart b/packages/flutter_timetable_view/lib/src/widgets/block.dart similarity index 100% rename from lib/src/widgets/block.dart rename to packages/flutter_timetable_view/lib/src/widgets/block.dart diff --git a/lib/src/widgets/table.dart b/packages/flutter_timetable_view/lib/src/widgets/table.dart similarity index 99% rename from lib/src/widgets/table.dart rename to packages/flutter_timetable_view/lib/src/widgets/table.dart index 7c1a326..1177875 100644 --- a/lib/src/widgets/table.dart +++ b/packages/flutter_timetable_view/lib/src/widgets/table.dart @@ -3,7 +3,7 @@ // SPDX-License-Identifier: BSD-3-Clause import 'package:flutter/material.dart'; -import 'package:flutter_timetable/src/models/table_theme.dart'; +import 'package:flutter_timetable_view/src/models/table_theme.dart'; class Table extends StatelessWidget { /// The [Table] to draw an overview of timerange with corresponding hour lines diff --git a/packages/flutter_timetable_view/pubspec.yaml b/packages/flutter_timetable_view/pubspec.yaml new file mode 100644 index 0000000..5b023a2 --- /dev/null +++ b/packages/flutter_timetable_view/pubspec.yaml @@ -0,0 +1,26 @@ +name: flutter_timetable_view +description: Flutter package to create a Timetable Widget that display blocks of widgets inside a timetable. +version: 2.0.0 +repository: https://github.com/Iconica-Development/flutter_timetable + +publish_to: none + +environment: + sdk: ">=3.2.0 <4.0.0" + flutter: ">=1.17.0" + +dependencies: + flutter: + sdk: flutter + flutter_timetable_interface: + git: + url: https://github.com/Iconica-Development/flutter_timetable + ref: 2.0.0 + path: packages/flutter_timetable_interface + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^2.0.0 + +flutter: diff --git a/test/block_service_test.dart b/packages/flutter_timetable_view/test/block_service_test.dart similarity index 96% rename from test/block_service_test.dart rename to packages/flutter_timetable_view/test/block_service_test.dart index 190bc11..a74c83e 100644 --- a/test/block_service_test.dart +++ b/packages/flutter_timetable_view/test/block_service_test.dart @@ -4,8 +4,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:flutter_timetable/src/block_service.dart'; -import 'package:flutter_timetable/timetable.dart'; +import 'package:flutter_timetable_interface/flutter_timetable_interface.dart'; +import 'package:flutter_timetable_view/src/block_service.dart'; void main() { group('test combineBlocksWithId', () { diff --git a/pubspec.yaml b/pubspec.yaml index 5be2b02..fd10268 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,19 +1,6 @@ -name: flutter_timetable -description: Flutter package to create a Timetable Widget that display blocks of widgets inside a timetable. -version: 1.4.0 -repository: https://github.com/Iconica-Development/timetable +name: flutter_timetable_workspace environment: - sdk: ">=3.0.0 <4.0.0" - flutter: ">=1.17.0" - -dependencies: - flutter: - sdk: flutter - + sdk: '>=3.1.0 <4.0.0' dev_dependencies: - flutter_test: - sdk: flutter - flutter_lints: ^2.0.0 - -flutter: + melos: ^3.0.1