Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add update command to stacked_cli #818

Merged
merged 1 commit into from
Jan 11, 2023
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
4 changes: 4 additions & 0 deletions packages/stacked_cli/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 1.1.2

- Adds the new Update command

## 1.1.1+1

- Updates cli link in readme
Expand Down
2 changes: 2 additions & 0 deletions packages/stacked_cli/bin/stacked.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:stacked_cli/src/commands/compile/compile_command.dart';
import 'package:stacked_cli/src/commands/create/create_command.dart';
import 'package:stacked_cli/src/commands/delete/delete_command.dart';
import 'package:stacked_cli/src/commands/generate/generate_command.dart';
import 'package:stacked_cli/src/commands/update/update_command.dart';
import 'package:stacked_cli/src/exceptions/invalid_stacked_structure_exception.dart';
import 'package:stacked_cli/src/locator.dart';

Expand All @@ -20,6 +21,7 @@ Future<void> main(List<String> arguments) async {
..addCommand(DeleteCommand())
..addCommand(CompileCommand())
..addCommand(GenerateCommand())
..addCommand(UpdateCommand())
..run(arguments);
} on InvalidStackedStructureException catch (e) {
stdout.writeln(e.message);
Expand Down
23 changes: 23 additions & 0 deletions packages/stacked_cli/lib/src/commands/update/update_command.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import 'dart:async';

import 'package:args/command_runner.dart';
import 'package:stacked_cli/src/locator.dart';
import 'package:stacked_cli/src/services/analytics_service.dart';
import 'package:stacked_cli/src/services/process_service.dart';

class UpdateCommand extends Command {
final _analyticsService = locator<AnalyticsService>();
final _processService = locator<ProcessService>();

@override
String get description => '''Updates stacked_cli to latest version''';

@override
String get name => 'update';

@override
Future<void> run() async {
await _processService.runPubGlobal();
unawaited(_analyticsService.cliUpdated());
}
}
12 changes: 12 additions & 0 deletions packages/stacked_cli/lib/src/constants/command_constants.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/// Stores all the commands used throughout the app that

const String ksDart = 'dart';
const String ksFlutter = 'flutter';
const String ksCreate = 'create';
const String ksRun = 'run';
Expand All @@ -15,6 +16,9 @@ const String ksUseBuilder = 'use-builder';
const String ksLineLength = 'line-length';
const String ksExcludeDependency = 'exclude-dependency';
const String ksCurrentDirectory = '.';
const String ksGlobal = 'global';
const String ksActivate = 'activate';
const String ksStackedCli = 'stacked_cli';

/// A list of strings that are used to run the pub run build runner build --delete-conflicting-outputs command.
const List<String> buildRunnerArguments = [
Expand All @@ -27,3 +31,11 @@ const List<String> buildRunnerArguments = [

/// A list of strings that are used to run the pub get command.
const List<String> pubGetArguments = [ksPub, ksGet];

/// A list of strings that are used to run the pub global command.
const List<String> pubGlobalArguments = [
ksPub,
ksGlobal,
ksActivate,
ksStackedCli
];
4 changes: 4 additions & 0 deletions packages/stacked_cli/lib/src/services/analytics_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ class AnalyticsService {
await _analytics.sendEvent('command', 'generate');
}

Future<void> cliUpdated() async {
await _analytics.sendEvent('command', 'update');
}

Future<void> templatesCompiled() async {
await _analytics.sendEvent('command', 'compile');
}
Expand Down
8 changes: 8 additions & 0 deletions packages/stacked_cli/lib/src/services/process_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,14 @@ class ProcessService {
);
}

/// It runs the `dart pub global` command in the app's directory
Future<void> runPubGlobal() async {
await _runProcessAndLogOutput(
programName: ksFlutter,
arguments: pubGlobalArguments,
);
}

/// It runs a process and logs the output to the console
///
/// Args:
Expand Down
2 changes: 1 addition & 1 deletion packages/stacked_cli/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: stacked_cli
description: The official dev tools for the Stacked Framework
version: 1.1.1+1
version: 1.1.2
homepage: https://stacked.filledstacks.com/docs/stacked-cli
repository: https://github.com/FilledStacks/stacked/tree/master/packages/stacked_cli

Expand Down
9 changes: 9 additions & 0 deletions packages/stacked_cli/test/helpers/test_helpers.mocks.dart
Original file line number Diff line number Diff line change
Expand Up @@ -961,6 +961,15 @@ class MockProcessService extends _i1.Mock implements _i15.ProcessService {
returnValueForMissingStub: _i6.Future<void>.value(),
) as _i6.Future<void>);
@override
_i6.Future<void> runPubGlobal() => (super.noSuchMethod(
Invocation.method(
#runPubGlobal,
[],
),
returnValue: _i6.Future<void>.value(),
returnValueForMissingStub: _i6.Future<void>.value(),
) as _i6.Future<void>);
@override
void logSuccessStatus(int? exitCode) => super.noSuchMethod(
Invocation.method(
#logSuccessStatus,
Expand Down