Example #1
0
        /// <summary>
        /// Runs the "flutter create -t package" command to create a Flutter package.
        /// </summary>
        /// <returns>A <see cref="Flutnet.Cli.Core.Dart.DartProject"/> that represents the newly created Flutter package.</returns>
        public static DartProject CreatePackage(string workingDir, string name, string description = null, bool verbose = false)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("flutter create -t package ");
            if (!string.IsNullOrEmpty(description))
            {
                sb.Append($"--description {description.Quoted()} ");
            }
            sb.Append(name);

            FlutnetShell.RunCommand(sb.ToString(), workingDir, verbose);

            DartProject prj = new DartProject(new DirectoryInfo(Path.Combine(workingDir, name)));

            prj.Load();
            return(prj);
        }
        private static DartProject InitializePackage(string outputDir, string packageName, string packageDescription = null, bool verbose = false)
        {
            // Load or create Flutter package if it doesn't already exist

            string      packageFolder = Path.Combine(outputDir, packageName);
            DartProject dartProject   = new DartProject(new DirectoryInfo(packageFolder));

            try
            {
                dartProject.Load();
                if (verbose)
                {
                    Console.WriteLine($"Flutter package \"{packageFolder}\" loaded successfully.");
                    Console.WriteLine();
                }
            }
            catch (DartProjectException ex)
            {
                switch (ex.Error)
                {
                case DartProjectError.PrjFolderNotExists:
                    Console.Write($"Generating Flutter package \"{packageName}\" within directory {outputDir}... ");
                    dartProject = FlutterTools.CreatePackage(outputDir, packageName, !string.IsNullOrEmpty(packageDescription) ? packageDescription : DefaultPackageDescription, verbose);
                    Console.Write("Done.");
                    Console.WriteLine();
                    break;

                case DartProjectError.LibFolderNotExists:
                case DartProjectError.PubspecNotExists:
                case DartProjectError.PubspecInvalidFormat:
                    throw;
                }
            }

            return(dartProject);
        }