public static ProjectsJson GetProjectsConfig(this BaseLoadTask baseTask)
        {
            baseTask.LogDebug($"Loading {Consts.ProjectsFile} file");

            try
            {
                var          projectsConfigPath = Path.Combine(baseTask.TapAssetDir, Consts.ProjectsFile);
                ProjectsJson projectConfigs     = null;
                if (!File.Exists(projectsConfigPath))
                {
                    baseTask.LogInformation($"{Consts.ProjectsFile} file file not found, created at {projectsConfigPath}");
                    projectConfigs = new ProjectsJson();
                    var json = JsonConvert.SerializeObject(projectConfigs, Formatting.Indented);
                    File.WriteAllText(projectsConfigPath, json);
                    return(projectConfigs);
                }
                else
                {
                    var json = File.ReadAllText(projectsConfigPath);
                    projectConfigs = JsonConvert.DeserializeObject <ProjectsJson>(json);
                    return(projectConfigs);
                }
            }
            catch (Exception ex)
            {
                baseTask.Log.LogErrorFromException(ex);
            }
            return(null);
        }
Exemple #2
0
        public static ITaskItem[] GetStringFieldOutput <TFieldClientDto>(this BaseLoadTask baseTask
                                                                         , IList <TFieldClientDto> fieldsDto
                                                                         , ITaskItem holder)
            where TFieldClientDto : BaseFieldClientDto <string>
        {
            baseTask.LogDebug("Generating String Field Output TaskItems");

            var output = new List <ITaskItem>();

            foreach (var field in fieldsDto)
            {
                var itemMetadata = new Dictionary <string, string>();
                itemMetadata.Add(MetadataType.Value, field.Value);

                //TODO deal with this in setmanifest
                itemMetadata.Add(MetadataType.FieldHolderDisabled, holder.GetMetadata(MetadataType.Disabled));

                var taskItem = new TaskItem(field.FieldId, itemMetadata);

                var fieldType = FieldType.GetAll().FirstOrDefault(x => x.Value == field.FieldId);
                taskItem.SetDisabledMetadata(baseTask, field.Disabled, fieldType.DisplayName);
                output.Add(taskItem);
            }

            baseTask.LogInformation($"Generated {output.Count} Field Output TaskItems");
            return(output.ToArray());
        }
Exemple #3
0
        public static ITaskItem[] GetFileExchangeFieldOutput(this BaseLoadTask baseTask
                                                             , IList <FileExchangeFieldClientDto> fieldsDto
                                                             , ITaskItem holder)
        {
            baseTask.LogDebug("Generating FileExchange Field Output TaskItems");

            var output = new List <ITaskItem>();

            foreach (var field in fieldsDto)
            {
                var itemMetadata = new Dictionary <string, string>();
                itemMetadata.Add(MetadataType.SourceFilePathValue, field.Value.SourceFilePath);
                itemMetadata.Add(MetadataType.DestinationFilePathValue, field.Value.DestinationFilePath);
                itemMetadata.Add(MetadataType.BuildActionValue, field.Value.BuildAction);

                itemMetadata.Add(MetadataType.FieldHolderDisabled, holder.GetMetadata(MetadataType.Disabled));

                var taskItem = new TaskItem(field.FieldId, itemMetadata);

                //we don't supply description to client
                taskItem.SetDisabledMetadata(baseTask, field.Disabled, field.Value.SourceFilePath);
                output.Add(taskItem);
            }

            baseTask.LogInformation($"Generated {output.Count} FileExchange Field Output TaskItems");
            return(output.ToArray());
        }
Exemple #4
0
        public static ITaskItem GetHolderOutput(this BaseLoadTask baseTask, IBaseHolderClientDto holder, string description)
        {
            baseTask.LogDebug($"Generating Holder Output for {description}");

            var taskItem = new TaskItem(MetadataType.FieldHolder);

            taskItem.SetDisabledMetadata(baseTask, holder.Disabled, description);
            return(taskItem);
        }
Exemple #5
0
        public static ClientConfigDto GetClientConfig(this BaseLoadTask baseTask, string json)
        {
            baseTask.LogDebug("Deserializing ClientConfigDto, length '{0}'", json.Length);
            var clientConfigDto = JsonConvert.DeserializeObject <ClientConfigDto>(json);

            baseTask.LogDebug("Deserialized ClientConfigDto, packagingFields: '{0}', appIconFields: '{1}', splashFields: '{2}', fileExchangeFields: '{3}'"
                              , clientConfigDto.Packaging.Fields.Count, clientConfigDto.AppIcon.Fields.Count, clientConfigDto.Splash.Fields.Count, clientConfigDto.FileExchange.Fields.Count);
            return(clientConfigDto);
        }
Exemple #6
0
        public static ITaskItem[] GetPackagingOutput(this BaseLoadTask baseTask, ClientConfigDto clientConfigDto)
        {
            baseTask.LogDebug("Generating Packaging TaskItems");

            var output = new List <ITaskItem>();

            foreach (var field in clientConfigDto.Packaging.Fields)
            {
                var itemMetadata = new Dictionary <string, string>();
                itemMetadata.Add("Value", field.Value);
                output.Add(new TaskItem(field.FieldId.ToString(), itemMetadata));
            }

            baseTask.LogInformation("Generated {0} Packaging TaskItems", output.Count);
            return(output.ToArray());
        }
Exemple #7
0
        public static void SaveTapAssetConfig(this BaseLoadTask baseTask, TapSettingJson tapSetting)
        {
            baseTask.LogInformation($"Saving {Consts.TapSettingFile} file");

            try
            {
                var tapSettingsPath = baseTask.FindTopFileInProjectDir(Consts.TapSettingFile);
                var json            = JsonConvert.SerializeObject(tapSetting, Formatting.Indented);
                File.WriteAllText(tapSettingsPath, json);
                baseTask.LogDebug($"{Consts.TapSettingFile} file saved");
            }
            catch (Exception ex)
            {
                baseTask.Log.LogErrorFromException(ex);
            }
        }
    public void EquipAll(FashionPositionInfo[] fashionList)
    {
        if (fashionList == null)
        {
            XDebug.LogError("null fashion list");
            return;
        }
        HashSet <string> loadPath = new HashSet <string>();

        for (int i = 0, imax = fashionList.Length; i < imax; ++i)
        {
            FashionPositionInfo fpi  = fashionList[i];
            BaseLoadTask        task = parts[i];
            task.Load(ref fpi, loadPath);
        }
        Combine();
    }
        public static bool SaveProjects(this BaseLoadTask baseTask, ProjectsJson projectsConfig)
        {
            baseTask.LogDebug($"Saving {Consts.ProjectsFile} file");

            try
            {
                var projectsConfigPath = Path.Combine(baseTask.TapAssetDir, Consts.ProjectsFile);

                baseTask.LogInformation($"Saving {Consts.ProjectsFile} at {projectsConfigPath}");
                var json = JsonConvert.SerializeObject(projectsConfig, Formatting.Indented);
                File.WriteAllText(projectsConfigPath, json);
            }
            catch (Exception ex)
            {
                baseTask.Log.LogErrorFromException(ex);
            }
            return(true);
        }
        public static ITaskItem GetAssetCatalogueName(this BaseLoadTask baseTask, ClientConfigDto clientConfigDto, string TargetFrameworkIdentifier)
        {
            if (TargetFrameworkIdentifier == "Xamarin.iOS")
            {
                var field = clientConfigDto.Packaging.Fields.FirstOrDefault(x => x.FieldId == FieldType.PackagingIosAssetCatalogueName.Value);
                if (field == null || String.IsNullOrEmpty(field.Value))
                {
                    baseTask.Log.LogError("Asset catalogue undefined");
                }

                baseTask.LogInformation("AssetCatalogue name {0}", field.Value.ApplyXcAssetsExt());
                var taskItem = new TaskItem(field.Value.ApplyXcAssetsExt());

                var fieldType = FieldType.GetAll().FirstOrDefault(x => x.Value == field.FieldId);
                taskItem.SetDisabledMetadata(baseTask, field.Disabled, fieldType.DisplayName);
                return(taskItem);
            }
            else
            {
                return(null);
            }
        }
Exemple #11
0
        public static TapSettingJson GetTapSetting(this BaseLoadTask baseTask)
        {
            baseTask.Log.LogMessage($"Loading {Consts.TapSettingFile} file");

            try
            {
                var            tapSettingsPath = baseTask.FindTopFileInProjectDir(Consts.TapSettingFile);
                TapSettingJson tapSetting      = null;
                if (String.IsNullOrEmpty(tapSettingsPath))
                {
                    baseTask.Log.LogError($"{Consts.TapSettingFile} file not found");
                    return(null);
                }
                else
                {
                    //test security file as well
                    baseTask.GetSecurity();
                    var json = File.ReadAllText(tapSettingsPath);
                    tapSetting = JsonConvert.DeserializeObject <TapSettingJson>(json);

                    if (String.IsNullOrEmpty(tapSetting.TapAppId))
                    {
                        baseTask.Log.LogError($"{Consts.TapSettingFile} TapAppId is 0, please complete TapAppId and restart build process");
                        return(null);
                    }
                    else
                    {
                        baseTask.LogDebug($"{Consts.TapSettingFile} file read, TapAppId '{ tapSetting.TapAppId}");
                        return(tapSetting);
                    }
                }
            }
            catch (Exception ex)
            {
                baseTask.Log.LogErrorFromException(ex);
            }
            return(null);
        }
Exemple #12
0
        public static ITaskItem[] GetMediaFieldOutput <TFieldClientDto>(this BaseLoadTask baseTask
                                                                        , IList <TFieldClientDto> fieldsDto
                                                                        , ITaskItem assetCatalogueName
                                                                        , ClientConfigDto clientConfigDto
                                                                        , ITaskItem holder)
            where TFieldClientDto : BaseFieldClientDto <string>
        {
            baseTask.LogDebug("Generating Media Field TaskItems");

            var output = new List <ITaskItem>();

            foreach (var field in fieldsDto)
            {
                var itemMetadata = new Dictionary <string, string>();
                var fieldType    = FieldType.GetAll().FirstOrDefault(x => x.Value == field.FieldId);

                if (fieldType == null)
                {
                    throw new Exception($"Missing field type {field.FieldId}");
                }

                itemMetadata.Add(MetadataType.FieldHolderDisabled, holder.GetMetadata(MetadataType.Disabled));

                if (fieldType.ProjectType == ProjectType.Droid)
                {
                    StringFieldClientDto droidNameField = null;
                    if (fieldType is AppIconFieldType)
                    {
                        droidNameField = clientConfigDto.Packaging.Fields.FirstOrDefault(x => x.FieldId == FieldType.PackagingDroidAppIconName.Value);
                    }
                    else if (fieldType is SplashFieldType)
                    {
                        droidNameField = clientConfigDto.Packaging.Fields.FirstOrDefault(x => x.FieldId == FieldType.PackagingDroidSplashName.Value);
                    }
                    if (droidNameField == null || String.IsNullOrEmpty(droidNameField.Value))
                    {
                        baseTask.Log.LogError("Droid field name undefined");
                    }
                    //these ones are required for both
                    itemMetadata.Add(MetadataType.LogicalName, droidNameField.Value.ApplyPngExt());
                    itemMetadata.Add(MetadataType.TapAssetPath, Path.Combine(Consts.DroidTapAssets, fieldType.GetMetadata(MetadataType.Folder)));
                    itemMetadata.Add(MetadataType.ProjectAssetPath, Path.Combine(Consts.DroidResources, fieldType.GetMetadata(MetadataType.Folder)));
                    itemMetadata.Add(MetadataType.MediaName, droidNameField.Value.ApplyFieldId(field));

                    itemMetadata.Add(MetadataType.MSBuildItemType, MSBuildItemName.TapAsset);
                }
                else if (fieldType.ProjectType == ProjectType.Ios)
                {
                    //do iTunesArtWork
                    if (String.IsNullOrEmpty(fieldType.GetMetadata(MetadataType.Idiom)))
                    {
                        itemMetadata.Add(MetadataType.TapAssetPath, Consts.iTunesArtworkDir);
                        itemMetadata.Add(MetadataType.ProjectAssetPath, Consts.iTunesArtworkDir);
                        itemMetadata.Add(MetadataType.MediaName, fieldType.GetMetadata(MetadataType.FileName).RemovePngExt().ApplyFieldId(field));
                        itemMetadata.Add(MetadataType.LogicalName, fieldType.GetMetadata(MetadataType.FileName).RemovePngExt());

                        itemMetadata.Add(MetadataType.MSBuildItemType, MSBuildItemName.ITunesArtwork);
                    }
                    else //do asset catalogue
                    {
                        //need to seperate out image catalogues here, for launchsets and
                        string catalogueSetName = null;
                        if (fieldType is AppIconFieldType)
                        {
                            var catalogueSetField = clientConfigDto.Packaging.Fields.FirstOrDefault(x => x.FieldId == FieldType.PackagingIosAppIconXcAssetsName.Value);
                            catalogueSetName = catalogueSetField.Value.ApplyAppiconsetExt();
                        }
                        else if (fieldType is SplashFieldType)
                        {
                            var catalogueSetField = clientConfigDto.Packaging.Fields.FirstOrDefault(x => x.FieldId == FieldType.PackagingIosLaunchImageXcAssetsName.Value);
                            catalogueSetName = catalogueSetField.Value.ApplyLaunchimageExt();
                        }

                        if (!String.IsNullOrEmpty(fieldType.GetMetadata(MetadataType.CataloguePackagingFieldId)))
                        {
                            var catalogueSetField = clientConfigDto.Packaging.Fields.FirstOrDefault(x => x.FieldId == fieldType.GetMetadata(MetadataType.CataloguePackagingFieldId));
                            catalogueSetName = catalogueSetField.Value.ApplyImageSetExt();
                        }

                        if (String.IsNullOrEmpty(catalogueSetName))
                        {
                            baseTask.Log.LogError("Catalogue set name undefined");
                        }



                        itemMetadata.Add(MetadataType.TapAssetPath, Path.Combine(assetCatalogueName.ItemSpec, catalogueSetName));
                        itemMetadata.Add(MetadataType.ProjectAssetPath, Path.Combine(assetCatalogueName.ItemSpec, catalogueSetName));
                        itemMetadata.Add(MetadataType.LogicalName, fieldType.GetMetadata(MetadataType.FileName));
                        itemMetadata.Add(MetadataType.MediaName, fieldType.GetMetadata(MetadataType.FileName).RemovePngExt().ApplyFieldId(field));

                        itemMetadata.Add(MetadataType.MSBuildItemType, MSBuildItemName.ImageAsset);
                        itemMetadata.Add(MetadataType.Size, fieldType.GetMetadata(MetadataType.Size));
                        itemMetadata.Add(MetadataType.Idiom, fieldType.GetMetadata(MetadataType.Idiom));
                        itemMetadata.Add(MetadataType.Idiom2, fieldType.GetMetadata(MetadataType.Idiom2));
                        itemMetadata.Add(MetadataType.Scale, fieldType.GetMetadata(MetadataType.Scale));

                        itemMetadata.Add(MetadataType.Subtype, fieldType.GetMetadata(MetadataType.Subtype));
                        itemMetadata.Add(MetadataType.Extent, fieldType.GetMetadata(MetadataType.Extent));
                        itemMetadata.Add(MetadataType.MinimumSystemVersion, fieldType.GetMetadata(MetadataType.MinimumSystemVersion));
                        itemMetadata.Add(MetadataType.Orientation, fieldType.GetMetadata(MetadataType.Orientation));
                        itemMetadata.Add(MetadataType.ContentsFileName, fieldType.GetMetadata(MetadataType.FileName));

                        //we can use this to build a list to operate on as such
                        itemMetadata.Add(MetadataType.CatalogueSetName, catalogueSetName);
                    }
                }
                itemMetadata.Add(MetadataType.MediaFileId, field.Value);
                itemMetadata.Add(MetadataType.FieldDescription, fieldType.DisplayName);

                var taskItem = new TaskItem(field.FieldId.ToString(), itemMetadata);
                taskItem.SetDisabledMetadata(baseTask, field.Disabled, fieldType.DisplayName);

                baseTask.LogDebug(GetDebugStringFromTaskItem(taskItem, itemMetadata));
                output.Add(taskItem);
            }

            baseTask.LogInformation("Generated {0} Media Field TaskItems", output.Count);
            return(output.ToArray());
        }