scriptster 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 717f92265d71abf28271c0da1d1c743d642d7c0d
4
- data.tar.gz: b7c73d085a0686d41f40a18649264f9396515bc8
3
+ metadata.gz: 29ca137ce4703b707c5f4f423e16a52ad0f20fc0
4
+ data.tar.gz: 1188b577e385809ff3408006ec80cacf3ef4f97a
5
5
  SHA512:
6
- metadata.gz: be02f5207e7ea2e71c87e1543628f9ffe40514ee72960e696af84e3277d4d7f780d544af1ec063195a39f4401bec540c1d0b98ed4a251436a92a368f37da2c17
7
- data.tar.gz: f623e30ac8bf6ab3c371fb720c741770f96902787f5b02ad73c8b6790a10aad47ff537bbf9edf5e46089887d3a9d85c23645f45c3cd796d2fde787ad2be207ba
6
+ metadata.gz: 61d9c1c7b7713cee0d0f15b9734daa9b9bf171e613d4fcd4dd522104ddda9eb03efb3298aaea1d7e2e42782a2514ff48bfaa730e61e4d111a02937a8ae67a8c7
7
+ data.tar.gz: 2725686e52306e57082efe967a2ec5576c6cc2e72eb75cc189d985a303d26c8b4878f258abfb9ddb48f73ffeee10776b692f66affe6f40e2af9fa30ef6c826ab
data/.travis.yml ADDED
@@ -0,0 +1,15 @@
1
+ language: ruby
2
+ cache: bundler
3
+
4
+ env:
5
+ global:
6
+ - RUBY_GC_MALLOC_LIMIT=90000000
7
+ - RUBY_GC_HEAP_FREE_SLOTS=200000
8
+
9
+ matrix:
10
+ fast_finish: true
11
+
12
+ before_install:
13
+ - cp gemrc ~/.gemrc
14
+
15
+ script: "bundle exec rspec"
data/CHANGELOG.md ADDED
@@ -0,0 +1,6 @@
1
+ ## 0.1.0 (2014-10-26)
2
+
3
+ Features:
4
+
5
+ - the first relatively stable release
6
+
data/README.md CHANGED
@@ -1,39 +1,67 @@
1
1
  # Scriptster
2
2
 
3
- A small library to make your scripts hip ;-).
3
+ [![Gem Version](https://badge.fury.io/rb/scriptster.png)](http://badge.fury.io/rb/scriptster)
4
+ [![Inline docs](http://inch-ci.org/github/pazdera/scriptster.png)](http://inch-ci.org/github/pazdera/scriptster)
5
+ [![Build Status](https://travis-ci.org/pazdera/scriptster.svg)](https://travis-ci.org/pazdera/scriptster)
4
6
 
5
- ## Installation
7
+ Scriptster is a small library to help you writing scripts in Ruby. It
8
+ is only consists of two functions and it's especially useful for apps
9
+ that uses many external tools through the shell.
6
10
 
7
- Add this line to your application's Gemfile:
11
+ The two basic things this library focuses on are
12
+ * Running shell commands
13
+ * Providing nice logs/status messages about what happened
8
14
 
9
- gem 'scriptster'
10
-
11
- And then execute:
12
-
13
- $ bundle
14
-
15
- Or install it yourself as:
16
-
17
- $ gem install scriptster
15
+ See the examples bellow.
18
16
 
19
17
  ## Usage
20
18
 
21
- TODO: Write usage instructions here
22
-
23
19
  ```ruby
24
20
  require 'scriptster'
21
+ ```
25
22
 
23
+ It is not necessary to configure scriptster before using it, in case you're
24
+ fine with the default settings. But if not, the configure method offers
25
+ many options to change. For the full list of options, please refer to
26
+ the [docs](http://www.rubydoc.info/github/pazdera/scriptster/master/frames).
27
+
28
+ ```ruby
26
29
  Scriptster::configure do |conf|
27
- conf[:name] = "my-script"
30
+ conf.name = "my-script"
31
+ conf.theme = :dark
28
32
  end
33
+ ```
34
+
35
+ The following snippet demonstrates exactly how would you use **scriptster**
36
+ in practice:
29
37
 
38
+ ```ruby
30
39
  Scriptster::log :info, "Starting ..."
31
40
 
32
- Scriptster::ShellCmd.new "git branch",
41
+ Scriptster::cmd.new "git branch",
33
42
  :show_out = true,
34
43
  :show_err = true,
35
44
  ```
36
45
 
46
+ The `log` method has one more argument available and the `cmd` method
47
+ has other options that you can use. Again, you will find more in the
48
+ [docs](http://www.rubydoc.info/github/pazdera/scriptster/master/frames).
49
+
50
+ ## Installation
51
+
52
+ Add this line to your application's Gemfile:
53
+
54
+ gem 'scriptster'
55
+
56
+ And then execute:
57
+
58
+ $ bundle
59
+
60
+ Or install it yourself as:
61
+
62
+ $ gem install scriptster
63
+
64
+
37
65
  ## Contributing
38
66
 
39
67
  1. Fork it ( https://github.com/[my-github-username]/scriptster/fork )
data/gemrc ADDED
@@ -0,0 +1,2 @@
1
+ install: --no-rdoc --no-ri
2
+ update: --no-rdoc --no-ri
data/lib/scriptster.rb CHANGED
@@ -25,23 +25,49 @@ require "scriptster/logger"
25
25
  require "scriptster/shellcmd"
26
26
  require "scriptster/configuration"
27
27
 
28
+ # The public interface of scriptster is simple. It consists of two
29
+ # functions, cmd and log. The module can be used directly or included
30
+ # in your class.
28
31
  module Scriptster
32
+ # Pass a message to the logger.
33
+ #
34
+ # @see Logger.log
29
35
  def self.log(*args)
30
36
  Logger::log *args
31
37
  end
32
38
 
39
+ # The same as {Scriptster.log}.
40
+ #
41
+ # @see .log
33
42
  def log(*args)
34
- Logger::log *args
43
+ self.log *args
35
44
  end
36
45
 
46
+ # Execute a shell command
47
+ #
48
+ # @see ShellCmd
37
49
  def self.cmd(*args)
38
50
  ShellCmd.new *args
39
51
  end
40
52
 
53
+ # The same as {Scriptster.cmd}.
54
+ #
55
+ # @see .cmd
41
56
  def cmd(*args)
42
- ShellCmd.new *args
57
+ self.cmd *args
43
58
  end
44
59
 
60
+ # Use this method to reconfigure the library.
61
+ #
62
+ # @example
63
+ # Scriptster::configure do |conf|
64
+ # conf.name = "my-script"
65
+ # conf.colours = :light
66
+ # conf.timestamps = false
67
+ # end
68
+ #
69
+ # @yield [c] An instance of the {Configuration} class.
70
+ # @see Configuration
45
71
  def self.configure
46
72
  c = Configuration.new
47
73
  yield c
@@ -23,30 +23,52 @@
23
23
  require "scriptster/logger"
24
24
  require "scriptster/shellcmd"
25
25
 
26
+
26
27
  module Scriptster
28
+ # The configuration obejct used in the {Scriptster.configure} method.
29
+ #
30
+ # @attr [String] name The name of the script to be displayed in the logs.
31
+ # @attr [Symbol] verbosity The minimum verbosity to of messages to be displayed.
32
+ # @attr [String, File, StringIO] file A log file that all messages will be written to.
33
+ # @attr [Boolean] timestamps Include timestamps in log messages.
34
+ # @attr [Symbol, Proc] colours Desired colour theme (either predefined or custom Proc).
35
+ # @see ColourThemes
36
+ # @attr [String] log_format Template for each line in the logs
27
37
  class Configuration
28
- attr_writer :name, :verbosity, :file, :timestamps, :scheme
38
+ attr_writer :name, :verbosity, :file, :colours, :log_format, :theme
29
39
 
30
40
  def initialize
31
41
  @name = File.basename($0)
32
42
  @verbosity = :verbose
33
43
  @file = nil
34
44
  @timestamps = true
35
- @scheme = :dark
45
+ @colours = :dark
46
+ @log_format = "%{timestamp} %{name} %{type} %{message}"
36
47
  end
37
48
 
38
- # Put the settings from this object in effect
49
+ # Put the settings from this object in effect.
50
+ #
51
+ # This function will distribute the configuration to the
52
+ # appropriate objects and modules.
39
53
  def apply
40
54
  Logger.set_name @name if @name
41
55
  Logger.set_verbosity @verbosity if @verbosity
42
56
  Logger.set_file @file if @file
43
- Logger.show_timestamps if @timestamps
57
+ Logger.set_format @log_format if @log_format
44
58
 
45
- ColourSchemes.send @scheme
59
+ if @colours.is_a? Proc
60
+ @colours.call
61
+ else
62
+ ColourThemes.send @colours.to_sym
63
+ end
46
64
  end
47
65
  end
48
66
 
49
- module ColourSchemes
67
+ # A collection of predefined colour settings.
68
+ #
69
+ # It's basically a just configuring the tco library.
70
+ module ColourThemes
71
+ # The colour theme for dark terminals.
50
72
  def self.dark
51
73
  Tco::configure do |conf|
52
74
  conf.names["green"] = "#99ad6a"
@@ -114,6 +136,7 @@ module Scriptster
114
136
  end
115
137
  end
116
138
 
139
+ # The colour scheme for dark terminals.
117
140
  def self.light
118
141
  Tco::configure do |conf|
119
142
  conf.names["green"] = "#99ad6a"
@@ -24,11 +24,18 @@
24
24
  require "tco"
25
25
 
26
26
  module Scriptster
27
+ # This module contains the logging function and related configuration.
27
28
  module Logger
29
+ # The name of the script.
28
30
  @@name = nil
31
+
32
+ # The IO object to log to.
29
33
  @@file = nil
34
+
35
+ # Show timestamps flag.
30
36
  @@timestamps = false
31
37
 
38
+ # Supported message types.
32
39
  @@message_types = {
33
40
  :info => "info",
34
41
  :warn => "WARN",
@@ -36,7 +43,10 @@ module Scriptster
36
43
  :debug => "dbg?"
37
44
  }
38
45
 
46
+ # The default verobosity level.
39
47
  @@verbosity = :verbose
48
+
49
+ # Supported verbosity levels.
40
50
  @@verbosity_levels = {
41
51
  :quiet => 0,
42
52
  :essential => 1,
@@ -45,10 +55,18 @@ module Scriptster
45
55
  :verbose => 4
46
56
  }
47
57
 
58
+ @@format = "%{timestamp} %{name} %{type} %{message}"
59
+
60
+ # A setter for the script name.
61
+ #
62
+ # @param [String] name Desired script name.
48
63
  def self.set_name(name)
49
64
  @@name = name
50
65
  end
51
66
 
67
+ # A setter for for logger verbosity.
68
+ #
69
+ # @param [Symbol] level Desired verbosity level.
52
70
  def self.set_verbosity(level)
53
71
  msg = "Message verbosity level not recognised (#{})."
54
72
  raise msg unless @@verbosity_levels.has_key? level.to_sym
@@ -56,26 +74,60 @@ module Scriptster
56
74
  @@verbosity = level.to_sym
57
75
  end
58
76
 
77
+ # A setter for the log file.
78
+ #
79
+ # @param [String, StringIO, File] file A path or an IO object.
59
80
  def self.set_file(file)
60
81
  @@file.close if @@file
61
82
  @@file = nil
62
- @@file = File.open file, "w" if file
83
+
84
+ case
85
+ when file.is_a?(String) then @@file = File.open file, "w"
86
+ when file.is_a?(File) then @@file = file
87
+ when file.is_a?(StringIO) then @@file = file
88
+ else
89
+ raise "Not a vailid file"
90
+ end
63
91
  end
64
92
 
65
- def self.show_timestamps
66
- @@timestamps = true
93
+ # Specify the format of each line in the logs.
94
+ #
95
+ # The template can reference the following keys:
96
+ # * timestamp
97
+ # * name
98
+ # * type
99
+ # * message
100
+ #
101
+ # @example
102
+ # Logger::set_format "%{timestamp} %{name} %{type} %{message}"
103
+ #
104
+ # @param [String] format The format template.
105
+ def self.set_format(format)
106
+ @@format = format
67
107
  end
68
108
 
109
+ # Log a string.
110
+ #
111
+ # The message will be written to both stdout and the log file if configured.
112
+ #
113
+ # @param [Symbol] msg_type Type of the message.
114
+ # @param [String] msg The contents of the log message.
115
+ # @param [Symbol] verbosity Desired verbosity level of this message.
69
116
  def self.log(msg_type, msg, verbosity=:informative)
117
+ # arguments sanity checks
118
+ unless @@message_types.include? msg_type
119
+ raise ArgumentError, "Unknown message type :#{msg_type}"
120
+ end
121
+
122
+ unless @@verbosity_levels.include?(verbosity) and verbosity != :quiet
123
+ raise ArgumentError, "You can't use the :#{verbosity.to_s} verbosity level"
124
+ end
125
+
70
126
  if @@verbosity_levels[verbosity] <= @@verbosity_levels[@@verbosity]
71
- ts = if @@timestamps
72
- Time.now.strftime("%Y-%m-%d %H:%M").style("timestamp") + " "
73
- else
74
- ""
75
- end
127
+ ts = Time.now.strftime("%Y-%m-%d %H:%M:%S").style("timestamp")
76
128
 
77
129
  name = if @@name != nil && @@name.length > 0
78
- @@name.style("name") + " "
130
+ @@name.style("name")
79
131
  else
80
132
  ""
81
133
  end
@@ -83,9 +135,13 @@ module Scriptster
83
135
  msg.chomp!
84
136
  msg = Tco::parse msg, Tco::get_style("#{msg_type.to_s}-message")
85
137
 
86
- line = ts << name.style("name") <<
87
- @@message_types[msg_type].style(msg_type.to_s) <<
88
- " " << msg
138
+ line = @@format % {
139
+ timestamp: ts,
140
+ name: name,
141
+ type: @@message_types[msg_type].style(msg_type.to_s),
142
+ message: msg
143
+ }
144
+
89
145
  puts line
90
146
  STDOUT.flush
91
147
 
@@ -96,6 +152,9 @@ module Scriptster
96
152
  end
97
153
  end
98
154
 
155
+ # Instance method wrapper for when the module is included.
156
+ #
157
+ # @see Logger.log
99
158
  def log(msg_type, msg, verbosity=:informative)
100
159
  Logger::log msg_type, msg, verbosity
101
160
  end
@@ -26,11 +26,31 @@ require "tco"
26
26
  require "scriptster/logger"
27
27
 
28
28
  module Scriptster
29
+ # Represent an executed shell command.
30
+ #
31
+ # The command will be executed in the constructor. It runs in the
32
+ # foreground, so your application will block until it's finished
33
+ # executing. The logs, however, will be printed real-time as the
34
+ # command prints its output.
35
+ #
36
+ # @attr [Process::status] status The exit status of the command.
37
+ # @attr [String] out The content of the STDOUT of the command.
38
+ # @attr [String] err The content of the STDERR of the command.
29
39
  class ShellCmd
30
40
  attr_reader :status, :out, :err
31
41
 
32
42
  include Logger
33
43
 
44
+ # Initialise the object and run the command
45
+ #
46
+ # @param [String] cmd The command line to be run.
47
+ # @param [Hash] opts Various options of the command.
48
+ # @option opts [Boolean] :show_out Care about STDOUT flag.
49
+ # @option opts [Boolean] :show_err Care about STDERR flag.
50
+ # @option opts [Boolean] :raise Raise on error flag.
51
+ # @option opts [String] :tag Logger tag (defaults to the first
52
+ # word of the command line).
53
+ # @option opts [Integer, Array<Integer>] :expect Expected return values.
34
54
  def initialize(cmd, opts={})
35
55
  @out = ""
36
56
  @err = ""
@@ -52,6 +72,9 @@ module Scriptster
52
72
  end
53
73
 
54
74
  private
75
+ # Execute the command and collect all the data from it.
76
+ #
77
+ # The function will blog until the command has finished.
55
78
  def run
56
79
  Open3.popen3(@cmd) do |stdin, stdout, stderr, wait_thr|
57
80
  stdout_buffer=""
@@ -1,3 +1,4 @@
1
1
  module Scriptster
2
- VERSION = "0.1.0"
2
+ # The version of this library
3
+ VERSION = "0.2.0"
3
4
  end
data/scriptster.gemspec CHANGED
@@ -22,4 +22,5 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1.6"
24
24
  spec.add_development_dependency "rake", "~> 10.1"
25
+ spec.add_development_dependency "rspec", "~> 3.1"
25
26
  end
@@ -0,0 +1,221 @@
1
+ # scriptster - A small library to make your scipts a bit nicer
2
+ # Copyright (c) 2014 Radek Pazdera
3
+
4
+ # MIT License
5
+
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+
23
+ require 'stringio'
24
+ require 'scriptster'
25
+ require 'utils'
26
+ require 'tmpdir'
27
+
28
+ describe Scriptster do
29
+ describe "#log" do
30
+ before :all do
31
+ @out = StringIO.new
32
+ Scriptster::configure do |conf|
33
+ conf.file = @out
34
+ end
35
+
36
+ @stdout = StringIO.new
37
+ end
38
+
39
+ before :each do
40
+ @out.truncate 0
41
+
42
+ @stdout.truncate 0
43
+ @orig_stdout = $stdout
44
+ $stdout = @stdout
45
+ end
46
+
47
+ after :each do
48
+ $stdout = @orig_stdout
49
+ end
50
+
51
+ it "logs to info" do
52
+ Scriptster::log :info, "Hello there"
53
+ expect(@out.string.strip).to match /info Hello there/
54
+ end
55
+
56
+ it "logs to warning" do
57
+ Scriptster::log :warn, "Hello there"
58
+ expect(@out.string.strip).to match /WARN Hello there/
59
+ end
60
+
61
+ it "logs to error" do
62
+ Scriptster::log :err, "Hello there"
63
+ expect(@out.string.strip).to match /ERR\! Hello there/
64
+ end
65
+
66
+ it "logs to debug" do
67
+ Scriptster::log :debug, "Hello there"
68
+ expect(@out.string.strip).to match /dbg\? Hello there/
69
+ end
70
+
71
+ it "raises on bad message type" do
72
+ expect {
73
+ Scriptster::log(:abcd, "Hello there")
74
+ }.to raise_exception ArgumentError
75
+ end
76
+
77
+ it "raises on bad verbosity type" do
78
+ expect {
79
+ Scriptster::log(:info, "Hello there", :quiet)
80
+ }.to raise_exception ArgumentError
81
+ end
82
+
83
+ it "is quiet" do
84
+ Scriptster::configure do |conf|
85
+ conf.verbosity = :quiet
86
+ end
87
+
88
+ Scriptster::log :info, "Hello there"
89
+ expect(@out.string.strip).not_to match /info Hello there/
90
+ end
91
+
92
+ it "default verbosity is less than :essential" do
93
+ Scriptster::configure do |conf|
94
+ conf.verbosity = :essential
95
+ end
96
+
97
+ Scriptster::log :info, "Hello there"
98
+ expect(@out.string.strip).not_to match /info Hello there/
99
+ end
100
+
101
+ it "default verbosity is :informative" do
102
+ Scriptster::configure do |conf|
103
+ conf.verbosity = :informative
104
+ end
105
+
106
+ Scriptster::log :info, "Hello there"
107
+ expect(@out.string.strip).to match /info Hello there/
108
+ end
109
+ end
110
+
111
+ describe "#cmd" do
112
+ before :all do
113
+ # Set up a temporary test directory
114
+ @dir = Dir.mktmpdir
115
+
116
+ File.open("#{@dir}/file.txt", "w") do |f|
117
+ f.puts "Multi-line"
118
+ f.puts "File contents"
119
+ end
120
+
121
+ # Set up the dummy stdout/stderr
122
+ @out = StringIO.new
123
+ @err = StringIO.new
124
+ end
125
+
126
+ after :all do
127
+ FileUtils.remove_entry_secure @dir
128
+ end
129
+
130
+ before :each do
131
+ @out.truncate 0
132
+ @orig_stdout = $stdout
133
+ $stdout = @out
134
+
135
+ @err.truncate 0
136
+ @orig_stderr = $stderr
137
+ $stderr = @err
138
+ end
139
+
140
+ after :each do
141
+ $stdout = @orig_stdout
142
+
143
+ $stderr = @orig_stderr
144
+ end
145
+
146
+ it "shows output" do
147
+ Scriptster::cmd "cat #{@dir}/file.txt", :show_out => true
148
+
149
+ line1, line2 = remove_colours(@out.string.strip).split "\n"
150
+ expect(line1).to match "Multi-line"
151
+ expect(line2).to match "File contents"
152
+ end
153
+
154
+ it "hides output" do
155
+ Scriptster::cmd "cat #{@dir}/file.txt", :show_out => false
156
+ expect(@out.string).to eq ""
157
+ end
158
+
159
+ it "captures output" do
160
+ cat = Scriptster::cmd "cat #{@dir}/file.txt", :show_out => false
161
+ expect(cat.out).to eq "Multi-line\nFile contents\n"
162
+ end
163
+
164
+ it "shows error" do
165
+ Scriptster::cmd "cat #{@dir}/nonexistent.txt",
166
+ :show_err => true,
167
+ :raise => false
168
+
169
+ expect(@out.string.strip).to match "No such file or directory"
170
+ end
171
+
172
+ it "hides error" do
173
+ Scriptster::cmd "cat #{@dir}/nonexistent.txt",
174
+ :show_err => false,
175
+ :raise => false
176
+
177
+ expect(@out.string.strip).to match ""
178
+ end
179
+
180
+ it "captures error" do
181
+ cat = Scriptster::cmd "cat #{@dir}/nonexistent.txt",
182
+ :show_err => true,
183
+ :raise => false
184
+
185
+ expect(cat.err.strip).to match "No such file or directory"
186
+ end
187
+
188
+ it "collects status (no error)" do
189
+ cat = Scriptster::cmd "cat #{@dir}/file.txt",
190
+ :show_err => true,
191
+ :raise => false
192
+
193
+ expect(cat.status.exitstatus).to eq 0
194
+ end
195
+
196
+ it "collects status (fail)" do
197
+ cat = Scriptster::cmd "cat #{@dir}/nonexistent.txt",
198
+ :show_err => true,
199
+ :raise => false
200
+
201
+ expect(cat.status.exitstatus).to eq 1
202
+ end
203
+
204
+ it "does raise" do
205
+ expect {
206
+ Scriptster::cmd "cat #{@dir}/nonexistent.txt"
207
+ }.to raise_exception RuntimeError
208
+ end
209
+
210
+ it "expects correct return value" do
211
+ cat = Scriptster::cmd "cat #{@dir}/nonexistent.txt", :expect => 1
212
+ expect(cat.status.exitstatus).to eq 1
213
+ end
214
+
215
+ it "expects incorrect return value" do
216
+ expect {
217
+ Scriptster::cmd "cat #{@dir}/nonexistent.txt", :expect => 10
218
+ }.to raise_exception RuntimeError
219
+ end
220
+ end
221
+ end
data/spec/utils.rb ADDED
@@ -0,0 +1,26 @@
1
+ # scriptster - A small library to make your scipts a bit nicer
2
+ # Copyright (c) 2014 Radek Pazdera
3
+
4
+ # MIT License
5
+
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+
13
+ # The above copyright notice and this permission notice shall be included in
14
+ # all copies or substantial portions of the Software.
15
+
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+
23
+
24
+ def remove_colours(string)
25
+ string.gsub(/\033\[[0-9]+(;[0-9]+){0,2}m/, "")
26
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scriptster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Radek Pazdera
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-26 00:00:00.000000000 Z
11
+ date: 2014-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tco
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '10.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.1'
55
69
  description: A simple library for making your scipts a bit nicer.
56
70
  email:
57
71
  - radek@pazdera.co.uk
@@ -60,16 +74,21 @@ extensions: []
60
74
  extra_rdoc_files: []
61
75
  files:
62
76
  - ".gitignore"
77
+ - ".travis.yml"
78
+ - CHANGELOG.md
63
79
  - Gemfile
64
80
  - LICENSE.txt
65
81
  - README.md
66
82
  - Rakefile
83
+ - gemrc
67
84
  - lib/scriptster.rb
68
85
  - lib/scriptster/configuration.rb
69
86
  - lib/scriptster/logger.rb
70
87
  - lib/scriptster/shellcmd.rb
71
88
  - lib/scriptster/version.rb
72
89
  - scriptster.gemspec
90
+ - spec/scriptster_spec.rb
91
+ - spec/utils.rb
73
92
  homepage: https://github.com/pazdera/scriptster
74
93
  licenses:
75
94
  - MIT
@@ -94,4 +113,7 @@ rubygems_version: 2.2.2
94
113
  signing_key:
95
114
  specification_version: 4
96
115
  summary: Making your Ruby scipts hip.
97
- test_files: []
116
+ test_files:
117
+ - spec/scriptster_spec.rb
118
+ - spec/utils.rb
119
+ has_rdoc: