blob: 9d6af0b9905c995a5b7df85d76528acc70f85f6b [file] [log] [blame]
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:async';
import '../base/file_system.dart';
import '../base/logger.dart';
import '../convert.dart';
import '../project.dart';
/// The type of analysis to perform.
enum AndroidAnalyzeOption {
/// Prints out available build variants of the Android sub-project.
///
/// An example output:
/// ["debug", "profile", "release"]
listBuildVariant,
/// Outputs app link settings of the Android sub-project into a file.
///
/// The file path will be printed after the command is run successfully.
outputAppLinkSettings,
}
/// Analyze the Android sub-project of a Flutter project.
///
/// The [userPath] must be point to a flutter project.
class AndroidAnalyze {
AndroidAnalyze({
required this.fileSystem,
required this.option,
required this.userPath,
this.buildVariant,
required this.logger,
}) : assert(option == AndroidAnalyzeOption.listBuildVariant || buildVariant != null);
final FileSystem fileSystem;
final AndroidAnalyzeOption option;
final String? buildVariant;
final String userPath;
final Logger logger;
Future<void> analyze() async {
final FlutterProject project = FlutterProject.fromDirectory(fileSystem.directory(userPath));
switch (option) {
case AndroidAnalyzeOption.listBuildVariant:
logger.printStatus(jsonEncode(await project.android.getBuildVariants()));
case AndroidAnalyzeOption.outputAppLinkSettings:
assert(buildVariant != null);
final String filePath = await project.android.outputsAppLinkSettings(variant: buildVariant!);
logger.printStatus('result saved in $filePath');
}
}
}