linebreak-cli 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Binary file
@@ -0,0 +1,12 @@
1
+ # Project metadata
2
+ nbproject
3
+ .idea
4
+
5
+ Gemfile.lock
6
+
7
+ doc
8
+ coverage
9
+ pkg
10
+ .yardoc
11
+ .rbx
12
+ *.rbc
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
@@ -0,0 +1,9 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - rbx-18mode
6
+ - rbx-19mode
7
+ - jruby-18mode
8
+ - jruby-19mode
9
+
@@ -0,0 +1,5 @@
1
+ --protected
2
+ --no-private
3
+ -
4
+ HISTORY.md
5
+ LICENSE.md
data/Gemfile ADDED
@@ -0,0 +1,23 @@
1
+ # encoding: UTF-8
2
+ =begin
3
+ Copyright Alexander E. Fischer <aef@raxys.net>, 2009-2012
4
+
5
+ This file is part of Linebreak::CLI.
6
+
7
+ Permission to use, copy, modify, and/or distribute this software for any
8
+ purpose with or without fee is hereby granted, provided that the above
9
+ copyright notice and this permission notice appear in all copies.
10
+
11
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
13
+ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
+ PERFORMANCE OF THIS SOFTWARE.
18
+ =end
19
+
20
+ source 'http://rubygems.org'
21
+
22
+ # Specify your gem's dependencies in weekling.gemspec
23
+ gemspec
@@ -0,0 +1,98 @@
1
+ 2.0.0 / 2012-03-10
2
+ ==================
3
+
4
+ * 1 major enhancement
5
+
6
+ * Changed to ISC based license
7
+
8
+ * 3 minor enhancements
9
+
10
+ * Slightly restructured project
11
+ * Extracted the command-line tool into linebreak-cli gem
12
+ * Documentation converted to YARD syntax
13
+
14
+ 1.3.1 / 2009-09-14
15
+ ==================
16
+
17
+ * 1 major bugfix
18
+
19
+ * Fixed issues with loading the gem in some situations
20
+
21
+ * 1 minor enhancement
22
+
23
+ * Implemented autoloading
24
+
25
+ 1.3.0 / 2009-08-11
26
+ ==================
27
+
28
+ * 3 major enhancements
29
+
30
+ * Included methods for linebreak system detection and ensuring
31
+ * Overhauled commandline tool to support detection and ensuring
32
+ * BreakVerter renamed to Linebreak for better recognition
33
+
34
+ * 4 minor enhancements
35
+
36
+ * String extension now loadable via require
37
+ * Most of the specifications now run on JRuby
38
+ * Used the Pathname class where possible
39
+ * Upgraded to use the latest hoe gem
40
+
41
+ 1.2.0 / 2009-04-05
42
+ ==================
43
+
44
+ * 2 major enhancements
45
+
46
+ * Namespaced into module Aef
47
+ * Instance method added for on demand inclusion into the String class
48
+
49
+ * 5 minor enhancements
50
+
51
+ * Better metadata for gem
52
+ * Test refactoring
53
+ * Minor refactorings
54
+ * Improved documentation
55
+ * Added test for --version command
56
+
57
+ * 1 minor bugfix
58
+
59
+ * Fixed some bugs related to Ruby 1.8.6
60
+
61
+ 1.1.1 / 2009-03-08
62
+ ==================
63
+
64
+ * minor enhancement
65
+
66
+ * Added a --version command to output version and licensing information
67
+ * Some test refactoring
68
+ * Some more comments
69
+
70
+ 1.1.0 / 2009-03-01
71
+ ==================
72
+
73
+ * 2 major enhancements
74
+
75
+ * Added automated tests for the commandline tool
76
+ * Tested compatibility with ruby 1.9.1
77
+
78
+ * 1 minor enhancement
79
+
80
+ * Added support for custom string linebreak encodings in library
81
+
82
+ 1.0.1 / 2009-02-24
83
+ ==================
84
+
85
+ * 1 minor enhancement
86
+
87
+ * Now tested on Windows XP
88
+
89
+ * 1 minor bugfix
90
+
91
+ * Bugfixes for commandline use
92
+
93
+ 1.0.0 / 2009-02-24
94
+ ==================
95
+
96
+ * 1 major enhancement
97
+
98
+ * Birthday!
@@ -0,0 +1,15 @@
1
+ Copyright Alexander E. Fischer <aef@raxys.net>, 2009-2012
2
+
3
+ Linebreak::CLI is licensed under the following ISC-style license:
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
11
+ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
+ PERFORMANCE OF THIS SOFTWARE.
@@ -0,0 +1,196 @@
1
+ Linebreak::CLI
2
+ ==============
3
+
4
+ [![Build Status](https://secure.travis-ci.org/aef/linebreak-cli.png)](
5
+ https://secure.travis-ci.org/aef/linebreak-cli)
6
+
7
+ * [Documentation][docs]
8
+ * [Project][project]
9
+
10
+ [docs]: http://rdoc.info/github/aef/linebreak-cli/
11
+ [project]: https://github.com/aef/linebreak-cli/
12
+
13
+ Description
14
+ -----------
15
+
16
+ Linebreak::CLI is a Ruby command-line tool for conversion of text
17
+ between linebreak encoding formats of unix, windows or mac.
18
+
19
+ Before Linebreak 2.0.0 this tool was part of the linebreak gem.
20
+ Earlier versions of Linebreak were called BreakVerter.
21
+
22
+ Features / Problems
23
+ -------------------
24
+
25
+ This project tries to conform to:
26
+
27
+ * [Semantic Versioning (2.0.0-rc.1)][semver]
28
+ * [Ruby Packaging Standard (0.5-draft)][rps]
29
+ * [Ruby Style Guide][style]
30
+ * [Gem Packaging: Best Practices][gem]
31
+
32
+ [semver]: http://semver.org/
33
+ [rps]: http://chneukirchen.github.com/rps/
34
+ [style]: https://github.com/bbatsov/ruby-style-guide
35
+ [gem]: http://weblog.rubyonrails.org/2009/9/1/gem-packaging-best-practices
36
+
37
+ Additional facts:
38
+
39
+ * Written purely in Ruby.
40
+ * Intended to be used with Ruby 1.8.7 or higher.
41
+ * Cryptographically signed gem and git tags.
42
+
43
+ Synopsis
44
+ --------
45
+
46
+ This documentation defines the public interface of the software. Don't rely
47
+ on elements marked as private. Those should be hidden in the documentation
48
+ by default.
49
+
50
+ ### Command-line tool
51
+
52
+ The default output encoding is unix. You can also choose mac and windows.
53
+
54
+ linebreak encode --system windows unix.txt windows.txt
55
+
56
+ If no target file is specified the output will be sent to STDOUT.
57
+
58
+ linebreak encode --system windows mac.txt > windows.txt
59
+
60
+ You can set the default with the environment variable LINEBREAK_SYSTEM.
61
+
62
+ export LINEBREAK_SYSTEM=mac
63
+
64
+ linebreak encode windows.txt mac.txt
65
+
66
+ If you do not specify an output file, output will be put to STDOUT. If you also
67
+ do not specify an input file, input will be expected from STDIN.
68
+
69
+ You can also detect the linebreak systems contained in a file in the following
70
+ way:
71
+
72
+ linebreak encodings windows_mac.txt
73
+
74
+ If you want to ensure that a file contains the exact encodings systems you
75
+ specified, you can use the following command:
76
+
77
+ linebreak encodings --ensure unix,windows,mac unix.txt
78
+
79
+ The results will be outputted. In case of a file containing other linebreak
80
+ encoding systems there will be an exit code of 1.
81
+
82
+ It is also possible to specify multiple input files or none to expect input from
83
+ STDIN.
84
+
85
+ Requirements
86
+ ------------
87
+
88
+ * Ruby 1.8.7 or higher
89
+ * user-choices
90
+
91
+ Installation
92
+ ------------
93
+
94
+ On *nix systems you may need to prefix the command with sudo to get root
95
+ privileges.
96
+
97
+ ### High security (recommended)
98
+
99
+ There is a high security installation option available through rubygems. It is
100
+ highly recommended over the normal installation, although it may be a bit less
101
+ comfortable. To use the installation method, you will need my [gem signing
102
+ public key][gemkey], which I use for cryptographic signatures on all my gems.
103
+
104
+ Add the key to your rubygems' trusted certificates by the following command:
105
+
106
+ gem cert --add aef-gem.pem
107
+
108
+ Now you can install the gem while automatically verifying it's signature by the
109
+ following command:
110
+
111
+ gem install linebreak-cli -P HighSecurity
112
+
113
+ Please notice that you may need other keys for dependent libraries, so you may
114
+ have to install dependencies manually.
115
+
116
+ [gemkey]: http://aef.name/crypto/aef-gem.pem
117
+
118
+ ### Normal
119
+
120
+ gem install linebreak-cli
121
+
122
+ ### Automated testing
123
+
124
+ Go into the root directory of the installed gem and run the following command
125
+ to fetch all development dependencies:
126
+
127
+ bundle
128
+
129
+ Afterwards start the test runner:
130
+
131
+ rake spec
132
+
133
+ If something goes wrong you should be noticed through failing examples.
134
+
135
+ Development
136
+ -----------
137
+
138
+ ### Bugs Reports and Feature Requests
139
+
140
+ Please use the [issue tracker][issues] on github.com to let me know about errors
141
+ or ideas for improvement of this software.
142
+
143
+ [issues]: https://github.com/aef/linebreak-cli/issues/
144
+
145
+ ### Source code
146
+
147
+ This software is developed in the source code management system git hosted
148
+ at github.com. You can download the most recent sourcecode through the
149
+ following command:
150
+
151
+ git clone https://github.com/aef/linebreak-cli.git
152
+
153
+ The final commit before each released gem version will be marked by a tag
154
+ named like the version with a prefixed lower-case "v", as required by Semantic
155
+ Versioning. Every tag will be signed by my [OpenPGP public key][openpgp] which
156
+ enables you to verify your copy of the code cryptographically.
157
+
158
+ [openpgp]: http://aef.name/crypto/aef-openpgp.asc
159
+
160
+ Add the key to your GnuPG keyring by the following command:
161
+
162
+ gpg --import aef-openpgp.asc
163
+
164
+ This command will tell you if your code is of integrity and authentic:
165
+
166
+ git tag -v [TAG NAME]
167
+
168
+ ### Contribution
169
+
170
+ Help on making this software better is always very appreciated. If you want
171
+ your changes to be included in the official release, please clone my project
172
+ on github.com, create a named branch to commit and push your changes into and
173
+ send me a pull request afterwards.
174
+
175
+ Please make sure to write tests for your changes so that I won't break them
176
+ when changing other things on the library. Also notice that I can't promise
177
+ to include your changes before reviewing them.
178
+
179
+ License
180
+ -------
181
+
182
+ Copyright Alexander E. Fischer <aef@raxys.net>, 2009-2012
183
+
184
+ This file is part of Linebreak::CLI.
185
+
186
+ Permission to use, copy, modify, and/or distribute this software for any
187
+ purpose with or without fee is hereby granted, provided that the above
188
+ copyright notice and this permission notice appear in all copies.
189
+
190
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
191
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
192
+ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
193
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
194
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
195
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
196
+ PERFORMANCE OF THIS SOFTWARE.
@@ -0,0 +1,48 @@
1
+ # encoding: UTF-8
2
+ =begin
3
+ Copyright Alexander E. Fischer <aef@raxys.net>, 2009-2012
4
+
5
+ This file is part of Linebreak::CLI.
6
+
7
+ Permission to use, copy, modify, and/or distribute this software for any
8
+ purpose with or without fee is hereby granted, provided that the above
9
+ copyright notice and this permission notice appear in all copies.
10
+
11
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
12
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
13
+ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
14
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
15
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
+ PERFORMANCE OF THIS SOFTWARE.
18
+ =end
19
+
20
+ require 'bundler/gem_tasks'
21
+ require 'rake'
22
+ require 'pathname'
23
+ require 'yard'
24
+ require 'rspec/core/rake_task'
25
+
26
+ RSpec::Core::RakeTask.new
27
+
28
+ YARD::Rake::YardocTask.new('doc')
29
+
30
+ desc "Removes temporary project files"
31
+ task :clean do
32
+ %w{doc coverage pkg .yardoc .rbx Gemfile.lock}.map{|name| Pathname.new(name) }.each do |path|
33
+ path.rmtree if path.exist?
34
+ end
35
+
36
+ Pathname.glob('*.gem').each &:delete
37
+ Pathname.glob('**/*.rbc').each &:delete
38
+ end
39
+
40
+ desc "Opens an interactive console with the library loaded"
41
+ task :console do
42
+ Bundler.setup
43
+ require 'pry'
44
+ require 'aef/linebreak/cli'
45
+ Pry.start
46
+ end
47
+
48
+ task :default => :spec
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+ =begin
4
+ Copyright Alexander E. Fischer <aef@raxys.net>, 2009-2012
5
+
6
+ This file is part of Linebreak::CLI.
7
+
8
+ Permission to use, copy, modify, and/or distribute this software for any
9
+ purpose with or without fee is hereby granted, provided that the above
10
+ copyright notice and this permission notice appear in all copies.
11
+
12
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
13
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
14
+ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
15
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
16
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
17
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
18
+ PERFORMANCE OF THIS SOFTWARE.
19
+ =end
20
+
21
+ require 'aef/linebreak/cli'
22
+ require 'user-choices'
23
+
24
+ commands_available = {
25
+ :encode => 'Convert all linebreak encodings of a file',
26
+ :encodings => 'Detect linebreak encoding systems of a file',
27
+ :version => 'More information about this program',
28
+ :'--version' => :version,
29
+ :'-v' => :version,
30
+ :'-V' => :version
31
+ }
32
+
33
+ command_name = ARGV.shift
34
+ command_name = command_name.to_sym if command_name
35
+
36
+ if commands_available[command_name].nil?
37
+ puts "Usage: linebreak COMMAND"
38
+ puts
39
+ puts 'Available commands:'
40
+ puts
41
+ padding = commands_available.keys.map{|symbol| symbol.to_s}.max{|a,b| a.size <=> b.size}.size
42
+ commands_available.each do |command_name, description|
43
+ unless description.is_a?(Symbol)
44
+ printf "%-#{padding}s\t%s\n", command_name, description
45
+ end
46
+ end
47
+ exit false
48
+ else
49
+ if commands_available[command_name].is_a?(Symbol)
50
+ command_name = commands_available[command_name]
51
+ end
52
+
53
+ command = Aef::Linebreak::CLI.const_get("#{command_name.to_s.capitalize}Command").new
54
+ S4tUtils.with_pleasant_exceptions {command.execute}
55
+ end