jellog 1.0.11
Sign up to get free protection for your applications and to get access to all the features.
- data/Bugs.rdoc +5 -0
- data/Gemfile +9 -0
- data/History.txt +59 -0
- data/Intro.txt +4 -0
- data/LICENCE.rdoc +159 -0
- data/README.md +146 -0
- data/bin/jellog +61 -0
- data/lib/jellog.rb +282 -0
- data/lib/jellog/config.md +78 -0
- data/lib/jellog/config.rb +138 -0
- data/lib/jellog/logger.rb +84 -0
- data/lib/jellog/version.rb +41 -0
- data/spec/jellog_logger_spec.rb +81 -0
- data/spec/jellog_spec.rb +181 -0
- data/spec/slogger_spec.rb +38 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +10 -0
- data/test/conf.d/jellogga.rb +42 -0
- data/test/jellogtest.log +6 -0
- data/test/jellogtest1.log +6 -0
- data/test/jellogtest2.log +6 -0
- data/test/jellytest.log +6 -0
- data/test/jellytest1.log +6 -0
- data/test/jellytest2.log +6 -0
- data/test/log_file.log +7 -0
- metadata +140 -0
data/Bugs.rdoc
ADDED
data/Gemfile
ADDED
data/History.txt
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
== History
|
2
|
+
|
3
|
+
[jellog-1.0.11 21-Sep-2012]
|
4
|
+
|
5
|
+
Renamed because jelly was already in use in Gem-space.
|
6
|
+
|
7
|
+
[jelly-1.0.10 21-Sep-2012]
|
8
|
+
|
9
|
+
Tidy up documentation and tests ready for pushing to RubyGems.
|
10
|
+
|
11
|
+
[jelly-1.0.9 25-Jul-2012]
|
12
|
+
|
13
|
+
Set a default format string when none is provided
|
14
|
+
|
15
|
+
[jelly-1.0.8 25-Jul-2012]
|
16
|
+
|
17
|
+
Fix a couple of small errors in config
|
18
|
+
|
19
|
+
[jelly-1.0.7 23-Jul-2012]
|
20
|
+
|
21
|
+
Include config class for services etc that use Jelly
|
22
|
+
|
23
|
+
[jelly-1.0.6 12-Jun-2012]
|
24
|
+
|
25
|
+
Added mark method to highlight a new section in the log
|
26
|
+
|
27
|
+
[jelly-1.0.5 21-Jan-2012]
|
28
|
+
|
29
|
+
Tidy up README and correct rspec tests
|
30
|
+
|
31
|
+
jelly-1.0.4 10-Jan-2012
|
32
|
+
|
33
|
+
Change get_options to make deletion an option and not delete keys by default
|
34
|
+
|
35
|
+
jelly-1.0.3 09-Sep-2011
|
36
|
+
|
37
|
+
Change option names to comply with existing configure files.
|
38
|
+
|
39
|
+
jelly-1.0.2 09-Sep-2011
|
40
|
+
|
41
|
+
Fix close, which had not been updated to the new structure.
|
42
|
+
|
43
|
+
jelly-1.0.1 07-Sep-2011
|
44
|
+
|
45
|
+
Add get_opts class method to help pick out log-related options
|
46
|
+
|
47
|
+
jelly-1.0.0 06-Sep-2011
|
48
|
+
|
49
|
+
Introduce independent formatting and colour by option.
|
50
|
+
Tidy up logging options (making this incompatible with previous versions).
|
51
|
+
Make jelly into a local gem.
|
52
|
+
|
53
|
+
jelly-0.0.10 28-Aug-2011
|
54
|
+
|
55
|
+
Return message from error level calls to assist in keeping callers DRY
|
56
|
+
|
57
|
+
jelly-0.0.0 29-May-2011
|
58
|
+
|
59
|
+
Application generated.
|
data/Intro.txt
ADDED
@@ -0,0 +1,4 @@
|
|
1
|
+
A wrapper class around the standard Ruby logger that adds a simply logging level control
|
2
|
+
and the ability to log certain messages to syslog. It also adds a puts method so that the
|
3
|
+
logger can be used instead of stdout etc. Output can be coloured depending on the logging
|
4
|
+
level.
|
data/LICENCE.rdoc
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
Copyright (c) 2011 Robert Sharp
|
2
|
+
|
3
|
+
This software is licensed for use under the Open Software Licence v. 3.0
|
4
|
+
The terms of this licence can be found at http://www.opensource.org/licenses/osl-3.0.php
|
5
|
+
and below. Under the terms of this licence, all derivative works
|
6
|
+
must themselves be licensed under the Open Software Licence v. 3.0
|
7
|
+
|
8
|
+
Open Source Initiative OSI - The Open Software Licence 3.0:Licensing
|
9
|
+
[OSI Approved Licence]
|
10
|
+
Open Software Licence ("OSL") v. 3.0
|
11
|
+
|
12
|
+
This Open Software Licence (the "Licence") applies to any original work of authorship
|
13
|
+
(the "Original Work") whose owner (the "Licensor") has placed the following licensing
|
14
|
+
notice adjacent to the copyright notice for the Original Work:
|
15
|
+
|
16
|
+
Licensed under the Open Software Licence version 3.0
|
17
|
+
|
18
|
+
1) Grant of Copyright Licence. Licensor grants You a worldwide, royalty-free, non-exclusive,
|
19
|
+
sublicensable license, for the duration of the copyright, to do the following:
|
20
|
+
|
21
|
+
a) to reproduce the Original Work in copies, either alone or as part of a collective work;
|
22
|
+
|
23
|
+
b) to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby
|
24
|
+
creating derivative works ("Derivative Works") based upon the Original Work;
|
25
|
+
|
26
|
+
c) to distribute or communicate copies of the Original Work and Derivative Works to
|
27
|
+
the public, with the proviso that copies of Original Work or Derivative Works that
|
28
|
+
You distribute or communicate shall be licensed under this Open Software Licence;
|
29
|
+
|
30
|
+
d) to perform the Original Work publicly; and
|
31
|
+
|
32
|
+
e) to display the Original Work publicly.
|
33
|
+
|
34
|
+
2) Grant of Patent Licence. Licensor grants You a worldwide, royalty-free, non-exclusive,
|
35
|
+
sublicensable license, under patent claims owned or controlled by the Licensor that are
|
36
|
+
embodied in the Original Work as furnished by the Licensor, for the duration of the
|
37
|
+
patents, to make, use, sell, offer for sale, have made, and import the Original Work
|
38
|
+
and Derivative Works.
|
39
|
+
|
40
|
+
3) Grant of Source Code Licence. The term "Source Code" means the preferred form of
|
41
|
+
the Original Work for making modifications to it and all available documentation
|
42
|
+
describing how to modify the Original Work. Licensor agrees to provide a machine-readable
|
43
|
+
copy of the Source Code of the Original Work along with each copy of the Original Work
|
44
|
+
that Licensor distributes. Licensor reserves the right to satisfy this obligation by
|
45
|
+
placing a machine-readable copy of the Source Code in an information repository reasonably
|
46
|
+
calculated to permit inexpensive and convenient access by You for as long as Licensor
|
47
|
+
continues to distribute the Original Work.
|
48
|
+
|
49
|
+
4) Exclusions From Licence Grant. Neither the names of Licensor, nor the names of
|
50
|
+
any contributors to the Original Work, nor any of their trademarks or service marks,
|
51
|
+
may be used to endorse or promote products derived from this Original Work without
|
52
|
+
express prior permission of the Licensor. Except as expressly stated herein, nothing
|
53
|
+
in this Licence grants any license to Licensor's trademarks, copyrights, patents,
|
54
|
+
trade secrets or any other intellectual property. No patent license is granted to
|
55
|
+
make, use, sell, offer for sale, have made, or import embodiments of any patent claims
|
56
|
+
other than the licensed claims defined in Section 2. No license is granted to the
|
57
|
+
trademarks of Licensor even if such marks are included in the Original Work. Nothing
|
58
|
+
in this Licence shall be interpreted to prohibit Licensor from licensing under terms
|
59
|
+
different from this Licence any Original Work that Licensor otherwise would have a
|
60
|
+
right to license.
|
61
|
+
|
62
|
+
5) External Deployment. The term "External Deployment" means the use, distribution,
|
63
|
+
or communication of the Original Work or Derivative Works in any way such that the
|
64
|
+
Original Work or Derivative Works may be used by anyone other than You, whether those
|
65
|
+
works are distributed or communicated to those persons or made available as an application
|
66
|
+
intended for use over a network. As an express condition for the grants of license hereunder,
|
67
|
+
You must treat any External Deployment by You of the Original Work or a Derivative Work
|
68
|
+
as a distribution under section 1(c).
|
69
|
+
|
70
|
+
6) Attribution Rights. You must retain, in the Source Code of any Derivative Works
|
71
|
+
that You create, all copyright, patent, or trademark notices from the Source Code of
|
72
|
+
the Original Work, as well as any notices of licensing and any descriptive text identified
|
73
|
+
therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works
|
74
|
+
that You create to carry a prominent Attribution Notice reasonably calculated to inform
|
75
|
+
recipients that You have modified the Original Work.
|
76
|
+
|
77
|
+
7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright
|
78
|
+
in and to the Original Work and the patent rights granted herein by Licensor are owned by
|
79
|
+
the Licensor or are sublicensed to You under the terms of this Licence with the permission
|
80
|
+
of the contributor(s) of those copyrights and patent rights. Except as expressly stated in
|
81
|
+
the immediately preceding sentence, the Original Work is provided under this Licence on an
|
82
|
+
"AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation,
|
83
|
+
the warranties of non-infringement, merchantability or fitness for a particular purpose.
|
84
|
+
THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY
|
85
|
+
constitutes an essential part of this Licence. No license to the Original Work is granted
|
86
|
+
by this Licence except under this disclaimer.
|
87
|
+
|
88
|
+
8) Limitation of Liability. Under no circumstances and under no legal theory, whether
|
89
|
+
in tort (including negligence), contract, or otherwise, shall the Licensor be liable
|
90
|
+
to anyone for any indirect, special, incidental, or consequential damages of any character
|
91
|
+
arising as a result of this Licence or the use of the Original Work including, without
|
92
|
+
limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction,
|
93
|
+
or any and all other commercial damages or losses. This limitation of liability shall not
|
94
|
+
apply to the extent applicable law prohibits such limitation.
|
95
|
+
|
96
|
+
9) Acceptance and Termination. If, at any time, You expressly assented to this Licence,
|
97
|
+
that assent indicates your clear and irrevocable acceptance of this Licence and all of its
|
98
|
+
terms and conditions. If You distribute or communicate copies of the Original Work or a
|
99
|
+
Derivative Work, You must make a reasonable effort under the circumstances to obtain the
|
100
|
+
express assent of recipients to the terms of this Licence. This Licence conditions your
|
101
|
+
rights to undertake the activities listed in Section 1, including your right to create
|
102
|
+
Derivative Works based upon the Original Work, and doing so without honoring these
|
103
|
+
terms and conditions is prohibited by copyright law and international treaty. Nothing
|
104
|
+
in this Licence is intended to affect copyright exceptions and limitations (including
|
105
|
+
"fair use" or "fair dealing"). This Licence shall terminate immediately and You may no
|
106
|
+
longer exercise any of the rights granted to You by this Licence upon your failure to
|
107
|
+
honor the conditions in Section 1(c).
|
108
|
+
|
109
|
+
10) Termination for Patent Action. This Licence shall terminate automatically and
|
110
|
+
You may no longer exercise any of the rights granted to You by this Licence as of
|
111
|
+
the date You commence an action, including a cross-claim or counterclaim, against
|
112
|
+
Licensor or any licensee alleging that the Original Work infringes a patent. This
|
113
|
+
termination provision shall not apply for an action alleging patent infringement
|
114
|
+
by combinations of the Original Work with other software or hardware.
|
115
|
+
|
116
|
+
11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this Licence
|
117
|
+
may be brought only in the courts of a jurisdiction wherein the Licensor resides or
|
118
|
+
in which Licensor conducts its primary business, and under the laws of that jurisdiction
|
119
|
+
excluding its conflict-of-law provisions. The application of the United Nations Convention
|
120
|
+
on Contracts for the International Sale of Goods is expressly excluded. Any use of
|
121
|
+
the Original Work outside the scope of this Licence or after its termination shall be
|
122
|
+
subject to the requirements and penalties of copyright or patent law in the appropriate
|
123
|
+
jurisdiction. This section shall survive the termination of this Licence.
|
124
|
+
|
125
|
+
12) Attorneys' Fees. In any action to enforce the terms of this Licence or seeking
|
126
|
+
damages relating thereto, the prevailing party shall be entitled to recover its costs
|
127
|
+
and expenses, including, without limitation, reasonable attorneys' fees and costs
|
128
|
+
incurred in connection with such action, including any appeal of such action. This
|
129
|
+
section shall survive the termination of this Licence.
|
130
|
+
|
131
|
+
13) Miscellaneous. If any provision of this Licence is held to be unenforceable,
|
132
|
+
such provision shall be reformed only to the extent necessary to make it enforceable.
|
133
|
+
|
134
|
+
14) Definition of "You" in This Licence. "You" throughout this Licence, whether in
|
135
|
+
upper or lower case, means an individual or a legal entity exercising rights under,
|
136
|
+
and complying with all of the terms of, this Licence. For legal entities, "You" includes
|
137
|
+
any entity that controls, is controlled by, or is under common control with you. For
|
138
|
+
purposes of this definition, "control" means (i) the power, direct or indirect, to cause
|
139
|
+
the direction or management of such entity, whether by contract or otherwise, or (ii)
|
140
|
+
ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial
|
141
|
+
ownership of such entity.
|
142
|
+
|
143
|
+
15) Right to Use. You may use the Original Work in all ways not otherwise restricted or
|
144
|
+
conditioned by this Licence or by law, and Licensor promises not to interfere with or be
|
145
|
+
responsible for such uses by You.
|
146
|
+
|
147
|
+
16) Modification of This Licence. This Licence is Copyright © 2005 Lawrence Rosen.
|
148
|
+
Permission is granted to copy, distribute, or communicate this Licence without modification.
|
149
|
+
Nothing in this Licence permits You to modify this Licence as applied to the Original Work
|
150
|
+
or to Derivative Works. However, You may modify the text of this Licence and copy, distribute
|
151
|
+
or communicate your modified version (the "Modified Licence") and apply it to other original
|
152
|
+
works of authorship subject to the following conditions: (i) You may not indicate in any way
|
153
|
+
that your Modified Licence is the "Open Software Licence" or "OSL" and you may not use those
|
154
|
+
names in the name of your Modified Licence; (ii) You must replace the notice specified in the
|
155
|
+
first paragraph above with the notice "Licensed under <insert your license name here>" or
|
156
|
+
with a notice of your own that is not confusingly similar to the notice in this Licence;
|
157
|
+
and (iii) You may not claim that your original works are open source software unless your
|
158
|
+
Modified Licence has been approved by Open Source Initiative (OSI) and You comply with
|
159
|
+
its license review and certification process.
|
data/README.md
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
# JELLY
|
2
|
+
|
3
|
+
### (a.k.a. Jumpin Ermin's Loquatious Logger)
|
4
|
+
|
5
|
+
Based on the standard ruby logger, Jellog provides a slightly simplified interface and
|
6
|
+
adds a few features that may be useful:
|
7
|
+
|
8
|
+
* the ability to log to syslog for certain messages, which can be disabled during
|
9
|
+
setup;
|
10
|
+
* formats its own timestamp to avoid other software from interferring under the bonnet;
|
11
|
+
* colourises logs;
|
12
|
+
* provides a 'puts' method to enable apps to output to either console or log (e.g foreground
|
13
|
+
vs background);
|
14
|
+
* returns logged messages, e.g. to cascade into exceptions
|
15
|
+
* simple log level control.
|
16
|
+
|
17
|
+
## Installation
|
18
|
+
|
19
|
+
Distributed as a gem:
|
20
|
+
|
21
|
+
gem install jellog
|
22
|
+
|
23
|
+
Jellog comes with a single command: jellog, that provides access to the README file in the gem.
|
24
|
+
|
25
|
+
Jellog can also be downloaded from [GitHub](https://github.com/osburn-sharp/jellog).
|
26
|
+
|
27
|
+
## Getting Started
|
28
|
+
|
29
|
+
A simple example:
|
30
|
+
|
31
|
+
require 'jellog'
|
32
|
+
@logger = Jellog::Logger.new(name, params)
|
33
|
+
begin
|
34
|
+
@logger.system("This is a system message and will be logged to syslog")
|
35
|
+
@logger.info("Just logged to local log")
|
36
|
+
@logger.warn("As above")
|
37
|
+
@logger.mark
|
38
|
+
@logger.error("As above")
|
39
|
+
@logger.fatal("Logged to syslog and prefixed with 'Jellog Alert:'")
|
40
|
+
@logger.verbose("Logged locally if log_level = :verbose or :debug")
|
41
|
+
@logger.debug("Logged locally if log_level = :debug")
|
42
|
+
# when things go wrong
|
43
|
+
rescue => err
|
44
|
+
@logger.exception(err) # logs the entire backtrace in colour
|
45
|
+
ensure
|
46
|
+
@logger.close
|
47
|
+
end
|
48
|
+
|
49
|
+
This creates a jellog logger and logs a variety of messages before closing it. The parameters required
|
50
|
+
are defined in {Jellog::Config}, which is a subclass of Jeckyl::Config, (see [Jeckyl on GitHub](https://github.com/osburn-sharp/jeckyl)
|
51
|
+
for more details):
|
52
|
+
|
53
|
+
require 'jellog/config'
|
54
|
+
options = Jellog::Config.new('path/to/config.rb')
|
55
|
+
@logger = Jellog::Logger.new('MyLogger', options)
|
56
|
+
|
57
|
+
Check out {Jellog::Config} for details about the logging parameters available for Jellog.
|
58
|
+
|
59
|
+
In addition to these conventional uses, Jellog provides the following to tailor the log:
|
60
|
+
|
61
|
+
logger = Jellog::Logger.new(name, options)
|
62
|
+
logger.colours = colour_hash
|
63
|
+
logger.log_level = :debug
|
64
|
+
|
65
|
+
The colour_hash is a hash of :method => :colour (e.g. :fatal=>:blue) where colours are as defined
|
66
|
+
in term_ansicolor. There are three log levels:
|
67
|
+
|
68
|
+
* :system - basic logging required for normal applications
|
69
|
+
* :verbose - additional logging that should help trouble-shooting during roll-out etc
|
70
|
+
* :debug - lots of logging for development and testing purposes
|
71
|
+
|
72
|
+
The {Jellog::Logger#warn warning}, {Jellog::Logger#error error} and {Jellog::Logger#fatal fatal} logging methods all return the message as
|
73
|
+
a string to make it convenient to cascade logging with exception raising:
|
74
|
+
|
75
|
+
raise MyError, @logger.error("You did something stupid")
|
76
|
+
|
77
|
+
The {Jellog::Logger#mark mark} method simply puts a mark in the log, which can be set by one of the options.
|
78
|
+
|
79
|
+
There is also a {Jellog::Logger#puts puts} method that allows you to arrange output either to a standard out/error/file or a log
|
80
|
+
if required. This allows parts of your code to be agnostic about where messages go, e.g. in cases where you may or may not
|
81
|
+
daemonize a task.
|
82
|
+
|
83
|
+
When using the logger as part of a service (or any other application), it may be useful to extract the parameters that are specific
|
84
|
+
to the logger only. Check out the Jeckyl class method #intersection to get these options:
|
85
|
+
|
86
|
+
log_opts = Jellog::Config.intersection(full_opts)
|
87
|
+
nonlog_opts = full_opts.complement(log_opts)
|
88
|
+
|
89
|
+
More details of Jeckyl can be found on [GitHub](https://github.com/osburn-sharp/jeckyl).
|
90
|
+
|
91
|
+
## Code Walkthrough
|
92
|
+
|
93
|
+
The {Jellog::Logger} presents a public interface with a range of logging methods and fairly simple customising options. It does
|
94
|
+
not do any logging itself, but creates an instance of {Jellog::Slogger} that is a simple wrapper around the standard ruby logger
|
95
|
+
but uses its own timestamps to defeat any other part of an application from fiddling with these settings: the standard logger
|
96
|
+
time stamp format is defined in a global variable and other users can change it with impunity.
|
97
|
+
|
98
|
+
This all seems a little complicated and I suspect it may be historical, the ruby logger being wrapped in Slogger to avoid
|
99
|
+
naming conflicts with Jellog::logger. The little bit of meta-magic used in Slogger, however, makes controlling attributes such
|
100
|
+
as colour and timestamps relatively compact while preserving an easy-to-read, non-magical user interface.
|
101
|
+
|
102
|
+
## Dependencies
|
103
|
+
|
104
|
+
See {file:Gemfile} for gem dependencies.
|
105
|
+
|
106
|
+
## Documentation
|
107
|
+
|
108
|
+
You can read this README file with 'jellog readme', but then as you are reading it you may already know this.
|
109
|
+
|
110
|
+
Use YARD to read the full documentation, which is available online at [RubyDoc.info](http://rdoc.info/github/osburn-sharp/jellog/frames)
|
111
|
+
|
112
|
+
## Testing/Modifying
|
113
|
+
|
114
|
+
Download Jellog from [GitHub](https://github.com/osburn-sharp/jellog) for testing. There is an rspec test that covers most of the functionality:
|
115
|
+
|
116
|
+
rspec spec/jellog_spec.rb # tests the main functions
|
117
|
+
rspec spec/jellog_logger_spec.rb # tests colours (manually) and support
|
118
|
+
rspec spec/slogger_spec.rb # manual check of underlying logger
|
119
|
+
|
120
|
+
The last two tests don't really use rspec but generate logs in ./test and ./log which can be checked manually.
|
121
|
+
|
122
|
+
## Bugs and Issues
|
123
|
+
|
124
|
+
Details of any unresolved bugs are in {file:Bugs.rdoc}.
|
125
|
+
Issues and change requests can be posted through [GitHub](https://github.com/osburn-sharp/jellog/issues).
|
126
|
+
|
127
|
+
## Changelog
|
128
|
+
|
129
|
+
This can be found in the {file:History.txt} file. This file is used by Jevoom to manage the
|
130
|
+
version info and create git commits.
|
131
|
+
|
132
|
+
## Author and Contact
|
133
|
+
|
134
|
+
I am Robert Sharp and you can contact me on [GitHub](http://github.com/osburn-sharp)
|
135
|
+
|
136
|
+
## Copyright and Licence
|
137
|
+
|
138
|
+
Copyright (c) 2011-2012 Robert Sharp.
|
139
|
+
|
140
|
+
See {file:LICENCE.rdoc LICENCE} for details of the licence under which Jeckyl is released.
|
141
|
+
|
142
|
+
## Warranty
|
143
|
+
|
144
|
+
This software is provided "as is" and without any express or implied
|
145
|
+
warranties, including, without limitation, the implied warranties of
|
146
|
+
merchantibility and fitness for a particular purpose.
|
data/bin/jellog
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
#!/usr/bin/env ruby18
|
2
|
+
#
|
3
|
+
# Description
|
4
|
+
#
|
5
|
+
# Author:: Robert Sharp
|
6
|
+
# Copyright:: Copyright (c) 2010 Robert Sharp
|
7
|
+
# License:: Open Software Licence v3.0
|
8
|
+
#
|
9
|
+
# This software is licensed for use under the Open Software Licence v. 3.0
|
10
|
+
# The terms of this licence can be found at http://www.opensource.org/licenses/osl-3.0.php
|
11
|
+
# and in the file copyright.txt. Under the terms of this licence, all derivative works
|
12
|
+
# must themselves be licensed under the Open Software Licence v. 3.0
|
13
|
+
#
|
14
|
+
#
|
15
|
+
# replace this to point to your config class
|
16
|
+
# require 'my_jeckyl_configurator'
|
17
|
+
require 'rubygems' # delves into gem spec to find readme
|
18
|
+
require 'thor'
|
19
|
+
require 'colored'
|
20
|
+
|
21
|
+
class JellogCLI < Thor
|
22
|
+
|
23
|
+
default_task :usage
|
24
|
+
|
25
|
+
desc "usage", "You are looking at it"
|
26
|
+
def usage
|
27
|
+
puts "Assistance with Jellog."
|
28
|
+
puts ""
|
29
|
+
help
|
30
|
+
puts ""
|
31
|
+
puts "See Also:"
|
32
|
+
puts " README.md: (see jelloga readme above)"
|
33
|
+
puts " GitHub: https://github.com/osburn-sharp/jellog"
|
34
|
+
puts " RubyDoc: http://rdoc.info/github/osburn-sharp/jellog/frames"
|
35
|
+
end
|
36
|
+
|
37
|
+
desc "readme", "display the readme file for the gem"
|
38
|
+
def readme
|
39
|
+
gem_spec = Gem::Specification.find_by_name('jellog')
|
40
|
+
readme_path = File.join(gem_spec.gem_dir, 'README.md')
|
41
|
+
unless FileTest.exists?(readme_path)
|
42
|
+
puts "Cannot find a readme file to show you. Try GitHub?".red
|
43
|
+
invoke :usage
|
44
|
+
return 0
|
45
|
+
end
|
46
|
+
File.open(readme_path) do |rfile|
|
47
|
+
rfile.each_line do |rline|
|
48
|
+
puts rline
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
rescue Gem::LoadError
|
53
|
+
|
54
|
+
puts "Cannot find the gem for jellog, try GitHub for the README file.".red
|
55
|
+
invoke :usage
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
JellogCLI.start
|