public void TestDefaultTimeout()
        {
            var process        = new BucketProcessExecutor();
            var processDefault = new BucketProcessExecutor
            {
                Timeout = 1,
            };

            Assert.AreEqual(Timeout.Infinite, process.Timeout);
            Assert.AreEqual(1, processDefault.Timeout);

            BucketProcessExecutor.SetDefaultTimeout(999);

            Assert.AreEqual(999, process.Timeout);
            Assert.AreEqual(1, processDefault.Timeout);

            Assert.AreEqual(999, BucketProcessExecutor.GetDefaultTimeout());
        }
Пример #2
0
        /// <inheritdoc />
        protected override int Execute(IInput input, IOutput output)
        {
            if (input.GetOption("list"))
            {
                return(ListScripts(output));
            }

            string script = input.GetArgument("script");

            if (string.IsNullOrEmpty(script))
            {
                throw new RuntimeException("Missing required argument \"script\"");
            }

            var defiendEvents  = new HashSet <string>(ScriptEvents.GetEvents());
            var disabledScript = script.ToUpper().Replace("-", "_");

            if (!defiendEvents.Contains(script) && defiendEvents.Contains(disabledScript))
            {
                throw new RuntimeException($"Script \"{script}\" cannot be run with this command");
            }

            var bucket          = GetBucket();
            var devMode         = input.GetOption("dev") || !input.GetOption("no-dev");
            var eventDispatcher = bucket.GetEventDispatcher();

            if (!eventDispatcher.HasListener(script))
            {
                throw new RuntimeException($"Script \"{script}\" is not defined in this package");
            }

            string[] args    = input.GetArgument("args");
            string   timeout = input.GetOption("timeout");

            if (timeout != null)
            {
                BucketProcessExecutor.SetDefaultTimeout(int.Parse(timeout));
            }

            var eventArgs = new ScriptEventArgs(script, bucket, GetIO(), devMode, args);

            eventDispatcher.Dispatch(this, eventArgs);
            return(eventArgs.ExitCode);
        }