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
2 changes: 1 addition & 1 deletion lib/cli/disposable.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import "dart:async";

abstract mixin class Disposable {
abstract mixin class const Disposable() {
FutureOr<void> dispose();
}
5 changes: 4 additions & 1 deletion lib/cli/printer/iprinter.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import "package:discloud/cli/disposable.dart";
import "package:discloud/cli/printer/console_printer.dart";
import "package:discloud/cli/spin/ispin.dart";

abstract interface class IPrinter implements Disposable {
abstract interface class const IPrinter() implements Disposable {
factory console({bool isDebug = true}) => ConsolePrinter(isDebug: isDebug);

ISpin spin({String? text, bool start = true});

/// [info] alias
Expand Down
7 changes: 6 additions & 1 deletion lib/cli/spin/ispin.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
abstract interface class ISpin {
import "package:discloud/cli/spin/cli_spin.dart";

abstract interface class const ISpin() {
factory cli({String? text, bool showDuration = false}) =>
CLISpin(text: text, showDuration: showDuration);

abstract String text;

void fail([String? text]);
Expand Down
6 changes: 1 addition & 5 deletions lib/commands/init.dart
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,7 @@ final class InitCommand extends Command<void> {
}
}

class _InitArgs {
const new(this._argResults);

final ArgResults? _argResults;

class const _InitArgs(final ArgResults? _argResults) {
bool _flag(String name) => _argResults?.flag(name) ?? false;
List<String> _multiOption(String n) =>
_argResults?.multiOption(n) ?? const [];
Expand Down
8 changes: 2 additions & 6 deletions lib/services/discloud/user_agent.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,13 @@ import "dart:io";

import "package:discloud/version.dart";

class UserAgent {
final class const UserAgent() {
static const _product = "DiscloudCLI";

const new();

String get _version => packageVersion;

String get _osName => Platform.operatingSystem;

@override
String toString() {
return "$_product/$_version ($_osName)";
}
String toString() => "$_product/$_version ($_osName)";
}
36 changes: 14 additions & 22 deletions lib/utils/bytes.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,31 +6,25 @@ import "package:intl/intl.dart";

/// binary: KB = 1024 B
/// decimal: KB = 1000 B
enum Dimension {
enum Dimension(final int value) {
/// KB = 1024 B
binary(1024),

/// KB = 1000 B
decimal(1000);

new(this.value);

final int value;
decimal(1000),
}

class Bytes<N extends num> {
class const Bytes<N extends num>(
final N n, {
final Dimension dimension = .binary,
final NumberFormat? numberFormatter,
}) {
const factory bits(
N n, {
Dimension dimension,
NumberFormat? numberFormatter,
}) = _Bits;

const new(this.n, {this.dimension = .binary, this.numberFormatter});

final N n;
final Dimension dimension;
final NumberFormat? numberFormatter;

UnitType get type => .byte;

int get index {
Expand Down Expand Up @@ -158,9 +152,11 @@ class Bytes<N extends num> {
int get hashCode => super.hashCode;
}

class _Bits<N extends num> extends Bytes<N> {
const new(super.n, {super.dimension = .binary, super.numberFormatter});

class const _Bits<N extends num>(
super.n, {
super.dimension = .binary,
super.numberFormatter,
}) extends Bytes<N> {
@override
UnitType get type => .bit;

Expand Down Expand Up @@ -294,11 +290,7 @@ enum _ByteUnit { B, KB, MB, GB, TB, PB, EB, ZB, YB }
// ignore: constant_identifier_names
enum _BitUnit { b, Kb, Mb, Gb, Tb, Pb, Eb, Zb, Yb }

enum UnitType {
enum UnitType(final List<Enum> units) {
bit(_BitUnit.values),
byte(_ByteUnit.values);

new(this.units);

final List<Enum> units;
byte(_ByteUnit.values),
}
56 changes: 19 additions & 37 deletions lib/utils/signal_wrapper.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import "package:discloud/extensions/list.dart";
typedef OnDisposeCallback = FutureOr<void> Function();
typedef OnSignalCallback = FutureOr<void> Function(ProcessSignal signal);

final class _Cancelled implements Exception;
final class const _Cancelled() implements Exception;

abstract class SignalWrapper {
factory multi(
Expand Down Expand Up @@ -39,23 +39,12 @@ abstract class SignalWrapper {
Future<T?> call<T>(Future<T> Function() fn);
}

class _MultiSignalWrapper implements SignalWrapper {
const new(
this._signals, {
required this._completer,
this.onSignal,
this.onDispose,
});

final Iterable<ProcessSignal> _signals;
final Completer<Null> _completer;

@override
final OnDisposeCallback? onDispose;

@override
final OnSignalCallback? onSignal;

class const _MultiSignalWrapper(
final Iterable<ProcessSignal> _signals, {
required final Completer<Null> _completer,
@override final OnDisposeCallback? onDispose,
@override final OnSignalCallback? onSignal,
}) implements SignalWrapper {
@override
bool get signed => _completer.isCompleted;

Expand All @@ -65,7 +54,9 @@ class _MultiSignalWrapper implements SignalWrapper {
final subscriptions = [
for (final signal in _signals)
signal.watch().listen((signal) {
if (!_completer.isCompleted) _completer.completeError(_Cancelled());
if (!_completer.isCompleted) {
_completer.completeError(const _Cancelled());
}
if (onSignal?.call(signal) case final Future f) futures.add(f);
}),
];
Expand All @@ -84,31 +75,22 @@ class _MultiSignalWrapper implements SignalWrapper {
}
}

class _SingleSignalWrapper implements SignalWrapper {
const new(
this._signal, {
required this._completer,
this.onDispose,
this.onSignal,
});

final ProcessSignal _signal;
final Completer<Null> _completer;

@override
final OnDisposeCallback? onDispose;

@override
final OnSignalCallback? onSignal;

class const _SingleSignalWrapper(
final ProcessSignal _signal, {
required final Completer<Null> _completer,
@override final OnDisposeCallback? onDispose,
@override final OnSignalCallback? onSignal,
}) implements SignalWrapper {
@override
bool get signed => _completer.isCompleted;

@override
Future<T?> call<T>(Future<T> Function() fn) async {
final futures = <Future>[];
final subscription = _signal.watch().listen((signal) {
if (!_completer.isCompleted) _completer.completeError(_Cancelled());
if (!_completer.isCompleted) {
_completer.completeError(const _Cancelled());
}
if (onSignal?.call(signal) case final Future future) futures.add(future);
});

Expand Down
24 changes: 11 additions & 13 deletions lib/utils/zip.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,17 @@ Future<void> zip({
String? password,
ZipCallback? onData,
OnErrorCallback? onError,
}) {
return GlobZipper.isolated(
directory: directory,
zipfile: zipfile,
globPatterns: glob,
ignorePatterns: ignore,
ignoreFilename: _ignoreFilename,
level: level,
password: password,
onData: onData,
onError: onError,
);
}
}) => GlobZipper.isolated(
directory: directory,
zipfile: zipfile,
globPatterns: glob,
ignorePatterns: ignore,
ignoreFilename: _ignoreFilename,
level: level,
password: password,
onData: onData,
onError: onError,
);

String formatZipProgress(ZipProgress progress, Directory root) {
final buffer = StringBuffer("Zipping")
Expand Down
4 changes: 1 addition & 3 deletions modules/glob_zipper/lib/src/exception.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
part of "glob_zipper.dart";

class ZipException implements Exception {
const new();
}
final class const ZipException() implements Exception;
32 changes: 11 additions & 21 deletions modules/glob_zipper/lib/src/glob_zipper.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,17 @@ void _noop(_, _) {}
typedef ZipCallback = void Function(ZipProgress progress);
typedef OnErrorCallback = void Function(Object error, StackTrace trace);

class GlobZipper {
class const GlobZipper({
required final Directory directory,
required final File zipfile,
final Iterable<String> globPatterns = const ["**"],
final Iterable<String> ignorePatterns = const .empty(),
final String? ignoreFilename,

/// Compression level
final int? level,
final String? password,
}) {
static Future<void> isolated({
required Directory directory,
required File zipfile,
Expand All @@ -44,26 +54,6 @@ class GlobZipper {
onError: onError,
);

const new({
required this.directory,
required this.zipfile,
this.globPatterns = const ["**"],
this.ignorePatterns = const .empty(),
this.ignoreFilename,
this.level,
this.password,
});

final Directory directory;
final File zipfile;
final Iterable<String> globPatterns;
final Iterable<String> ignorePatterns;
final String? ignoreFilename;

/// Compression level
final int? level;
final String? password;

Future<void> zip({ZipCallback? onData, OnErrorCallback? onError}) async {
final fs = FS(
directory: directory,
Expand Down
22 changes: 7 additions & 15 deletions modules/glob_zipper/lib/src/zip_progress.dart
Original file line number Diff line number Diff line change
@@ -1,17 +1,9 @@
part of "glob_zipper.dart";

class ZipProgress {
const new({
required this.file,
required this.stat,
required this.current,
required this.processed,
required this.compressed,
});

final File file;
final FileStat stat;
final int current;
final int processed;
final int compressed;
}
class const ZipProgress({
required final File file,
required final FileStat stat,
required final int current,
required final int processed,
required final int compressed,
});
8 changes: 1 addition & 7 deletions modules/interact/lib/src/input.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,7 @@ import "package:interact/src/utils/prompt.dart";

/// The error message to be thrown from the [Input] component's
/// validator when there is an error.
class ValidationError {
/// Constructs a [ValidationError] with given message.
new(this.message);

/// The error message.
final String message;
}
class const ValidationError(final String message);

/// An input component.
class Input extends Component<String> {
Expand Down
Loading
Loading