예제 #1
0
        internal async Task <int> OnExecuteAsync(CommandLineApplication app, CancellationToken token)
        {
            S3Cli?mainParent = null;

            if (app is CommandLineApplication <S3Cli> cliApp)
            {
                mainParent = cliApp.Model;
            }
            else if (app.Parent is CommandLineApplication <S3Cli> cliApp2)
            {
                mainParent = cliApp2.Model;
            }
            else if (app.Parent != null && app.Parent.Parent is CommandLineApplication <S3Cli> cliApp3)
            {
                mainParent = cliApp3.Model;
            }

            if (mainParent == null)
            {
                throw new S3Exception("Unable to find parent.");
            }

            Manager = CliManager.GetCliManager(mainParent.ProfileName, mainParent.Region);

            try
            {
                await ExecuteAsync(app, token).ConfigureAwait(false);

                return(0);
            }
            catch
            {
                return(1);
            }
        }
예제 #2
0
 private void Awake()
 {
     cliManager   = new CliManager();
     scourManager = new ScourManager(this.gameObject);
     Insite       = this;
 }
예제 #3
0
        internal static IEnumerable <IInterfaceType> GetImplementations(ICliMetadataTypeDefinitionTableRow parentDef, ICliMetadataMethodDefinitionTableRow methodMetadata, CliManager identityManager, IType activeType, IMethodSignatureMember activeMethod, IAssembly activeAssembly)
        {
            var targets = (from t in parentDef.ImplementationMap
                           where t.MethodBody == methodMetadata
                           select t.MethodDeclaration);

            foreach (var target in targets)
            {
                IType currentType = null;
                switch (target.MethodDefOrRefEncoding)
                {
                case CliMetadataMethodDefOrRefTag.MethodDefinition:
                    ICliMetadataMethodDefinitionTableRow methodDef = (ICliMetadataMethodDefinitionTableRow)target;
                    currentType = identityManager.ObtainTypeReference(methodMetadata.MetadataRoot.TableStream.TypeDefinitionTable[(int)methodMetadata.MetadataRoot.TableStream.TypeDefinitionTable.GetTypeFromMethodIndex(methodDef.Index)], activeType, activeMethod, activeAssembly);
                    break;

                case CliMetadataMethodDefOrRefTag.MemberRef:
                    ICliMetadataMemberReferenceTableRow memberRef = (ICliMetadataMemberReferenceTableRow)target;
                    switch (memberRef.ClassSource)
                    {
                    case CliMetadataMemberRefParentTag.TypeDefinition:
                        currentType = identityManager.ObtainTypeReference((ICliMetadataTypeDefinitionTableRow)memberRef.Class, activeType, activeMethod, activeAssembly);
                        break;

                    case CliMetadataMemberRefParentTag.TypeReference:
                        currentType = identityManager.ObtainTypeReference((ICliMetadataTypeRefTableRow)memberRef.Class, activeType, activeMethod, activeAssembly);
                        break;

                    case CliMetadataMemberRefParentTag.TypeSpecification:
                        currentType = identityManager.ObtainTypeReference((ICliMetadataTypeSpecificationTableRow)memberRef.Class, activeType, activeMethod, activeAssembly);
                        break;
                    }
                    break;
                }
                if (currentType != null && currentType is IInterfaceType)
                {
                    yield return((IInterfaceType)currentType);
                }
            }
        }