Sha256: 6539134c12644abc2b88118d02bad816b3b41d00c469e463f458b42084c26151
Contents?: true
Size: 1.09 KB
Versions: 1
Compression:
Stored size: 1.09 KB
Contents
require 'instrumentality/constants' require 'claide' require 'colorize' require 'timeout' module Instrumentality class Executor class ExecutorError < StandardError; include CLAide::InformativeError; end def self.execute(cmd, verbose = false) puts "#{Constants::OUTPUT_PREFIX} Executing command: #{cmd}" if verbose system(cmd) else `#{cmd}` end status = $?.exitstatus raise ExecutorError, "Previous command execution failed with status: #{status}".red if status != 0 end def self.execute_async(cmd) spawn("#{cmd}").tap do |pid| puts "#{Constants::OUTPUT_PREFIX} Spawned process (PID: #{pid}) from command: #{cmd}" end end def self.timeout(process, seconds = Constants::TIMEOUT) pid = "" Timeout.timeout(seconds) do loop do pid = `ps aux | grep #{process}.app | grep -v grep | awk '{print $2}'`.strip break if pid != "" end end pid.tap do |pid| puts "#{Constants::OUTPUT_PREFIX} Found process #{process} with PID: #{pid}" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
instrumentality-0.1.0 | lib/instrumentality/executor.rb |