Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
10 changes: 8 additions & 2 deletions .github/workflows/dart.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,16 @@ jobs:

steps:
- uses: actions/checkout@v4
- uses: dart-lang/setup-dart@v1
- uses: subosito/flutter-action@v2
with:
sdk: stable
channel: stable
- name: Install dependencies
run: dart pub get
- name: Install example dependencies
run: |
cd example/flutter_usage
flutter pub get
- name: Analyze project
run: dart analyze
- name: Run tests
run: dart test test/test_all.dart
14 changes: 14 additions & 0 deletions .github/workflows/publish_pub_dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Publish to pub.dev

on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+*'

jobs:
publish:
permissions:
id-token: write # Required for authentication using OIDC
uses: dart-lang/setup-dart/.github/workflows/publish.yml@v1
# with:
# working-directory: path/to/package/within/repository
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## 4.1.0
* Migrate from `flutter_lints` to `lints` package.
* Update SDK constraint to `>=3.0.0 <4.0.0`.
* Fix lint warnings and analysis issues.
* Add `dart analyze` to CI workflow.

## 4.0.0

* Rewrite by fork [[fontify]](https://github.com/westracer/fontify)
Expand Down
161 changes: 2 additions & 159 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1,161 +1,4 @@
include: package:lints/recommended.yaml

analyzer:
language:
strict-inference: true
strict-raw-types: true
strong-mode:
implicit-casts: false
implicit-dynamic: false
exclude:
# Build
- "**/build/**"
- "my_icons.dart"
# Test
- "**/*mock.dart"

linter:
rules:
- always_declare_return_types
- always_put_control_body_on_new_line
- always_put_required_named_parameters_first
- always_require_non_null_named_parameters
- annotate_overrides
- avoid_annotating_with_dynamic
- avoid_bool_literals_in_conditional_expressions
- avoid_catches_without_on_clauses
- avoid_catching_errors
- avoid_classes_with_only_static_members
- avoid_double_and_int_checks
- avoid_empty_else
- avoid_equals_and_hash_code_on_mutable_classes
- avoid_field_initializers_in_const_classes
# - avoid_function_literals_in_foreach_calls
- avoid_implementing_value_types
- avoid_init_to_null
- avoid_js_rounded_ints
- avoid_null_checks_in_equality_operators
- avoid_print
- avoid_private_typedef_functions
- avoid_relative_lib_imports
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null
- avoid_returning_null_for_future
- avoid_returning_null_for_void
- avoid_returning_this
- avoid_setters_without_getters
- avoid_shadowing_type_parameters
- avoid_single_cascade_in_expression_statements
- avoid_slow_async_io
- avoid_types_as_parameter_names
- avoid_types_on_closure_parameters
- avoid_unnecessary_containers
- avoid_unused_constructor_parameters
- avoid_void_async
- avoid_web_libraries_in_flutter
- await_only_futures
- camel_case_extensions
- camel_case_types
- cancel_subscriptions
- cascade_invocations
- close_sinks
- comment_references
- constant_identifier_names
- control_flow_in_finally
- curly_braces_in_flow_control_structures
- diagnostic_describe_all_properties
- directives_ordering
- empty_catches
- empty_constructor_bodies
- empty_statements
- file_names
- hash_and_equals
- implementation_imports
- iterable_contains_unrelated_type
- join_return_with_assignment
- library_names
- library_prefixes
- list_remove_unrelated_type
- literal_only_boolean_expressions
- no_adjacent_strings_in_list
- no_duplicate_case_values
- non_constant_identifier_names
- null_closures
# - one_member_abstracts
- only_throw_errors
- overridden_fields
- package_api_docs
- package_names
- package_prefixed_library_names
- parameter_assignments
- prefer_adjacent_string_concatenation
- prefer_asserts_in_initializer_lists
- prefer_asserts_with_message
- prefer_collection_literals
- prefer_conditional_assignment
- prefer_const_constructors
- prefer_const_constructors_in_immutables
- prefer_const_declarations
- prefer_const_literals_to_create_immutables
- prefer_constructors_over_static_methods
- prefer_contains
- prefer_equal_for_default_values
- prefer_final_fields
- prefer_final_in_for_each
- prefer_final_locals
- prefer_for_elements_to_map_fromIterable
- prefer_foreach
- prefer_function_declarations_over_variables
- prefer_generic_function_type_aliases
- prefer_if_elements_to_conditional_expressions
- prefer_if_null_operators
- prefer_initializing_formals
- prefer_inlined_adds
- prefer_int_literals
- prefer_interpolation_to_compose_strings
- prefer_is_empty
- prefer_is_not_empty
- prefer_is_not_operator
- prefer_iterable_whereType
- prefer_mixin
- prefer_null_aware_operators
- prefer_relative_imports
- prefer_single_quotes
- prefer_spread_collections
- prefer_typing_uninitialized_variables
- prefer_void_to_null
- provide_deprecation_message
- recursive_getters
- slash_for_doc_comments
- sort_child_properties_last
- sort_constructors_first
- sort_pub_dependencies
- sort_unnamed_constructors_first
- test_types_in_equals
- throw_in_finally
- type_annotate_public_apis
- type_init_formals
- unawaited_futures
- unnecessary_await_in_return
- unnecessary_brace_in_string_interps
- unnecessary_const
- unnecessary_getters_setters
- unnecessary_lambdas
- unnecessary_new
- unnecessary_null_aware_assignments
- unnecessary_null_in_if_null_operators
- unnecessary_overrides
- unnecessary_parenthesis
- unnecessary_statements
- unnecessary_this
- unrelated_type_equality_checks
- unsafe_html
- use_full_hex_values_for_flutter_colors
- use_function_type_syntax_for_parameters
- use_rethrow_when_possible
- use_setters_to_change_properties
- use_string_buffers
- use_to_and_as_if_applicable
- valid_regexps
- void_checks
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
10 changes: 5 additions & 5 deletions bin/generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -47,22 +47,22 @@ void _run(CliArguments parsedArgs) {
final isVerbose = parsedArgs.verbose ?? kDefaultVerbose;

if (isVerbose) {
logger.setFilterLevel(Level.verbose);
logger.setFilterLevel(Level.trace);
}

final hasClassFile = parsedArgs.classFile != null;
if (hasClassFile && !parsedArgs.classFile!.existsSync()) {
parsedArgs.classFile!.createSync(recursive: true);
} else if (hasClassFile) {
logger.v(
logger.t(
'Output file for a Flutter class already exists (${parsedArgs.classFile!.path}) - '
'overwriting it');
}

if (!parsedArgs.fontFile.existsSync()) {
parsedArgs.fontFile.createSync(recursive: true);
} else {
logger.v(
logger.t(
'Output file for a font file already exists (${parsedArgs.fontFile.path}) - '
'overwriting it');
}
Expand Down Expand Up @@ -92,7 +92,7 @@ void _run(CliArguments parsedArgs) {
writeToFile(parsedArgs.fontFile.path, otfResult.font);

if (parsedArgs.classFile == null) {
logger.v('No output path for Flutter class was specified - '
logger.t('No output path for Flutter class was specified - '
'skipping class generation.');
} else {
final fontFileName = p.basename(parsedArgs.fontFile.path);
Expand All @@ -107,7 +107,7 @@ void _run(CliArguments parsedArgs) {

if (parsedArgs.format ?? kDefaultFormat) {
try {
logger.v('Formatting Flutter class generation.');
logger.t('Formatting Flutter class generation.');
classString = formatter.format(classString);
} on Object catch (e) {
logger.e(e.toString());
Expand Down
14 changes: 9 additions & 5 deletions example/flutter_usage/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,30 @@ import 'package:flutter/material.dart';

import 'ui/icons.dart';

void main() => runApp(MyApp());
void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
const MyApp({super.key});

// This widget is the root of your application.
@override
Widget build(BuildContext context) => MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(primarySwatch: Colors.blue),
home: MyHomePage(),
home: const MyHomePage(),
);
}

class MyHomePage extends StatelessWidget {
const MyHomePage({super.key});

@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
title: Text('Icons view test'),
title: const Text('Icons view test'),
),
body: Padding(
padding: EdgeInsets.all(16),
padding: const EdgeInsets.all(16),
child: Column(
children: [
UiIcons.account,
Expand All @@ -30,7 +34,7 @@ class MyHomePage extends StatelessWidget {
UiIcons.arrowRight,
]
.map((iconData) => Padding(
padding: EdgeInsets.all(16),
padding: const EdgeInsets.all(16),
child: Icon(iconData),
))
.cast<Widget>()
Expand Down
10 changes: 5 additions & 5 deletions example/flutter_usage/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -114,10 +114,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c
sha256: "3f41d009ba7172d5ff9be5f6e6e6abb4300e263aab8866d2a0842ed2a70f8f0c"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
version: "4.0.0"
flutter_test:
dependency: "direct dev"
description: flutter
Expand All @@ -137,7 +137,7 @@ packages:
path: "../.."
relative: true
source: path
version: "4.0.0"
version: "4.1.0"
leak_tracker:
dependency: transitive
description:
Expand Down Expand Up @@ -166,10 +166,10 @@ packages:
dependency: transitive
description:
name: lints
sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593"
sha256: "976c774dd944a42e83e2467f4cc670daef7eed6295b10b36ae8c85bcbf828235"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
version: "4.0.0"
logger:
dependency: transitive
description:
Expand Down
4 changes: 2 additions & 2 deletions example/flutter_usage/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ version: 1.0.0+1
publish_to: 'none'

environment:
sdk: '>=2.19.2 <3.0.0'
sdk: ^3.0.0
flutter: '>=3.7.5 <4.0.0'

dependencies:
Expand All @@ -14,7 +14,7 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.1
flutter_lints: ^4.0.0
icon_font_generator:
path: ../../

Expand Down
3 changes: 1 addition & 2 deletions lib/icon_font_generator.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
library icon_font_generator;

export 'src/common.dart';
export 'src/otf.dart';
export 'src/svg.dart';
export 'src/utils.dart';
// TODO: Test todo
4 changes: 2 additions & 2 deletions lib/src/cli/arguments.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'dart:io';
import 'dart:math' as math;

import 'package:args/args.dart';
import 'package:collection/collection.dart';

import 'package:yaml/yaml.dart';

import '../utils/enum_class.dart';
Expand Down Expand Up @@ -222,7 +222,7 @@ Map<CliArgument, Object?>? parseConfig(String config) {
}

final entries =
iconFontGeneratoryamlmap.entries.map(_mapConfigKeyEntry).whereNotNull();
iconFontGeneratoryamlmap.entries.map(_mapConfigKeyEntry).nonNulls;

return Map<CliArgument, Object?>.fromEntries(entries);
}
Expand Down
2 changes: 0 additions & 2 deletions lib/src/common.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
library icon_font_generator.common;

export 'common/api.dart';
export 'common/generic_glyph.dart';
export 'common/outline.dart';
2 changes: 0 additions & 2 deletions lib/src/otf.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
library icon_font_generator.otf;

export 'otf/otf.dart';
export 'otf/reader.dart';
export 'otf/stub.dart' if (dart.library.io) 'otf/io.dart';
Expand Down
Loading