gli 2.19.1 → 2.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +28 -0
- data/.gitignore +1 -3
- data/CONTRIBUTING.md +1 -3
- data/Gemfile +0 -6
- data/README.rdoc +7 -17
- data/Rakefile +22 -38
- data/bin/ci +29 -0
- data/bin/gli +25 -64
- data/bin/rake +29 -0
- data/bin/setup +5 -0
- data/exe/gli +68 -0
- data/gli.gemspec +19 -21
- data/gli.rdoc +2 -2
- data/lib/gli/app_support.rb +3 -1
- data/lib/gli/command_support.rb +2 -6
- data/lib/gli/commands/help_modules/command_help_format.rb +1 -1
- data/lib/gli/commands/help_modules/global_help_format.rb +1 -1
- data/lib/gli/commands/scaffold.rb +9 -93
- data/lib/gli/dsl.rb +5 -0
- data/lib/gli/gli_option_parser.rb +19 -4
- data/lib/gli/options.rb +2 -2
- data/lib/gli/version.rb +1 -1
- data/object-model.dot +29 -0
- data/object-model.png +0 -0
- data/test/apps/todo/Gemfile +1 -1
- data/test/apps/todo/bin/todo +1 -1
- data/test/integration/gli_cli_test.rb +69 -0
- data/test/integration/gli_powered_app_test.rb +52 -0
- data/test/integration/scaffold_test.rb +30 -0
- data/test/integration/test_helper.rb +52 -0
- data/test/{tc_command_finder.rb → unit/command_finder_test.rb} +6 -6
- data/test/{tc_command.rb → unit/command_test.rb} +4 -4
- data/test/unit/compound_command_test.rb +17 -0
- data/test/{tc_doc.rb → unit/doc_test.rb} +38 -51
- data/test/{tc_flag.rb → unit/flag_test.rb} +19 -25
- data/test/{tc_gli.rb → unit/gli_test.rb} +58 -47
- data/test/{tc_help.rb → unit/help_test.rb} +48 -107
- data/test/{init_simplecov.rb → unit/init_simplecov.rb} +0 -0
- data/test/{tc_options.rb → unit/options_test.rb} +4 -4
- data/test/unit/subcommand_parsing_test.rb +263 -0
- data/test/unit/subcommands_test.rb +245 -0
- data/test/{fake_std_out.rb → unit/support/fake_std_out.rb} +0 -0
- data/test/{config.yaml → unit/support/gli_test_config.yml} +0 -0
- data/test/unit/switch_test.rb +49 -0
- data/test/{tc_terminal.rb → unit/terminal_test.rb} +4 -3
- data/test/unit/test_helper.rb +13 -0
- data/test/unit/verbatim_wrapper_test.rb +24 -0
- metadata +73 -140
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/.travis.yml +0 -11
- data/ObjectModel.graffle +0 -1191
- data/bin/report_on_rake_results +0 -10
- data/bin/test_all_rubies.sh +0 -6
- data/features/gli_executable.feature +0 -90
- data/features/gli_init.feature +0 -236
- data/features/step_definitions/gli_executable_steps.rb +0 -18
- data/features/step_definitions/gli_init_steps.rb +0 -11
- data/features/step_definitions/todo_steps.rb +0 -100
- data/features/support/env.rb +0 -54
- data/features/support/hooks.rb +0 -5
- data/features/todo.feature +0 -579
- data/features/todo_legacy.feature +0 -130
- data/test/option_test_helper.rb +0 -13
- data/test/tc_compound_command.rb +0 -22
- data/test/tc_subcommand_parsing.rb +0 -280
- data/test/tc_subcommands.rb +0 -259
- data/test/tc_switch.rb +0 -55
- data/test/tc_verbatim_wrapper.rb +0 -36
- data/test/test_helper.rb +0 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0017e490227889383633bf3d4fc2f85783aa50cd86587fd35b704f4fa036d1c3
|
4
|
+
data.tar.gz: 96667382f9092e22abc794e6967d969cecea12339675e46d8a2990df0067810c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b76b5845f5beb5907d7c11355c5e02ba22521f124c0486f5d1d08ae75969338bc23434ac680da72306cd761cdaac986fb01c966e8eb14a664eb84db95164e82
|
7
|
+
data.tar.gz: 55f76b94f22cf271a93bc0e0916c1a500175fbaa5a45a01c74372042baba384da6660f5860946bf803c7db14c23712f51249ee03c6a1a2d9d52c3da05638eaeb
|
@@ -0,0 +1,28 @@
|
|
1
|
+
version: 2.1
|
2
|
+
orbs:
|
3
|
+
# See https://circleci.com/developer/orbs/orb/circleci/ruby
|
4
|
+
ruby: circleci/ruby@1.4.0
|
5
|
+
jobs: # keyword
|
6
|
+
test: # my name for the job
|
7
|
+
parameters: # keyword
|
8
|
+
ruby-version: # my parameter name
|
9
|
+
type: string # type is a keyword
|
10
|
+
docker: # keyword
|
11
|
+
- image: cimg/base:stable
|
12
|
+
steps: # keyword
|
13
|
+
- checkout # magic name
|
14
|
+
- ruby/install: # ruby/ is from the orb name, install is a command in that orb
|
15
|
+
version: << parameters.ruby-version >> # magic nonsense for param subst (version param to the command)
|
16
|
+
- run:
|
17
|
+
command: "bin/setup"
|
18
|
+
- run:
|
19
|
+
command: "bin/ci none"
|
20
|
+
workflows: # keyword
|
21
|
+
all-rubies: # my name for the workflow
|
22
|
+
jobs: # keyword
|
23
|
+
- test: # my name for the job
|
24
|
+
matrix: # keyword
|
25
|
+
parameters: # keyword
|
26
|
+
# All rubies being maintained per this page:
|
27
|
+
# https://www.ruby-lang.org/en/downloads/branches/
|
28
|
+
ruby-version: [ "2.5", "2.6", "2.7", "3.0" ]
|
data/.gitignore
CHANGED
data/CONTRIBUTING.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Contributions are welcome as long as they are part of my vision for GLI (or can be treated as optional to the user). I am obsessive about backwards-compatibility, so you may need to default things to disable your features. Sorry, not ready to bump a major version any time soon.
|
2
2
|
|
3
3
|
1. Fork my Repository
|
4
|
-
2. Create a branch off of
|
4
|
+
2. Create a branch off of main
|
5
5
|
3. Make your changes:
|
6
6
|
* Please include tests and watch out for reek and roodi; i.e. keep your code clean
|
7
7
|
* If you make changes to the gli executable or the scaffolding, please update the cucumber features
|
@@ -19,5 +19,3 @@ Contributions are welcome as long as they are part of my vision for GLI (or can
|
|
19
19
|
* Use <code># :nodoc:</code> for methods that a _user_ of GLI should not call (but still please do document all methods)
|
20
20
|
4. Make sure your branch will merge with my gli-2 branch (or just rebase your branch from my gli-2 branch)
|
21
21
|
5. Create a pull request explaining your change
|
22
|
-
|
23
|
-
|
data/Gemfile
CHANGED
@@ -2,11 +2,5 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
-
gem "rcov", ">= 0.9.8", :platforms => :mri_18
|
6
5
|
gem "simplecov", "~> 0.6.4", :platforms => :mri_19
|
7
6
|
gem "psych", :platforms => :mri_19
|
8
|
-
|
9
|
-
major,minor = RUBY_VERSION.split(/\./)
|
10
|
-
if major.to_i >=2 && minor.to_i >= 2
|
11
|
-
gem "test-unit"
|
12
|
-
end
|
data/README.rdoc
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
GLI allows you to create command-line app in Ruby that behaves like <tt>git</tt> in that it takes subcommands to perform a series of complex action, e.g. <tt>git remote add</tt>.
|
4
4
|
|
5
|
-
* {Overview}[http://davetron5000.github.
|
5
|
+
* {Overview}[http://davetron5000.github.io/gli]
|
6
6
|
* {Source on Github}[http://github.com/davetron5000/gli]
|
7
|
-
* RDoc[http://davetron5000.github.
|
7
|
+
* RDoc[http://davetron5000.github.io/gli/rdoc/index.html]
|
8
8
|
|
9
9
|
{<img src="https://secure.travis-ci.org/davetron5000/gli.svg?branch=gli-2" alt="Build Status" />}[https://travis-ci.org/davetron5000/gli]
|
10
10
|
|
@@ -46,7 +46,6 @@ This will create a basic scaffold project in <tt>./todo</tt> with:
|
|
46
46
|
|
47
47
|
* executable in <tt>./todo/bin/todo</tt>. This file demonstrates most of what you need to describe your command line interface.
|
48
48
|
* an empty test in <tt>./todo/test/default_test.rb</tt> that can bootstrap your tests
|
49
|
-
* an empty feature in <tt>./todo/features/todo.feature</tt> that can bootstrap testing your CLI via Aruba.
|
50
49
|
* a gemspec shell
|
51
50
|
* a README shell
|
52
51
|
* Rakefile that can generate RDoc, package your Gem and run tests
|
@@ -89,28 +88,19 @@ Now, you are ready to go:
|
|
89
88
|
|
90
89
|
All you need to do is fill in the documentation and your code; the help system, command-line parsing and many other awesome features are all handled for you.
|
91
90
|
|
92
|
-
Get a more detailed walkthrough on the {main site}[http://davetron5000.github.
|
91
|
+
Get a more detailed walkthrough on the {main site}[http://davetron5000.github.io/gli]
|
93
92
|
|
94
93
|
== Supported Platforms
|
95
94
|
|
96
|
-
|
97
|
-
|
98
|
-
Due to the vagaries of Travis, I can't keep the test suite running on unsupported Rubies, but we currently support:
|
99
|
-
|
100
|
-
* 2.1
|
101
|
-
* 2.2
|
102
|
-
* 2.3
|
103
|
-
* 2.4
|
104
|
-
* JRuby
|
105
|
-
|
106
|
-
GLI likely works on older rubies, but the cost of keeping tests passing on those versions (which are now totally unsupported by Ruby core) is too high.
|
95
|
+
See `.circleci/config.yml` for the supported rubies, but general we're running tests on the all MRI rubies receiving support, which tends to be the most recent four versions.
|
107
96
|
|
97
|
+
GLI should work on older Rubies and JRuby, but it's too much work to keep tests passing for those.
|
108
98
|
|
109
99
|
== Documentation
|
110
100
|
|
111
101
|
Extensive documentation is {available at the wiki}[https://github.com/davetron5000/gli/wiki].
|
112
102
|
|
113
|
-
API Documentation is available {here}[http://davetron5000.github.
|
103
|
+
API Documentation is available {here}[http://davetron5000.github.io/gli/rdoc/index.html]. Recommend starting with GLI::DSL or GLI::App.
|
114
104
|
|
115
105
|
== Credits
|
116
106
|
|
@@ -120,7 +110,7 @@ License:: Distributes under the Apache License, see LICENSE.txt in the source di
|
|
120
110
|
|
121
111
|
== Links
|
122
112
|
|
123
|
-
* [http://davetron5000.github.
|
113
|
+
* [http://davetron5000.github.io/gli] - RubyDoc
|
124
114
|
* [http://www.github.com/davetron5000/gli] - Source on GitHub
|
125
115
|
* [http://www.github.com/davetron5000/gli/wiki] - Documentation Wiki
|
126
116
|
* [http://www.github.com/davetron5000/gli/wiki/Changelog] - Changelog
|
data/Rakefile
CHANGED
@@ -3,8 +3,6 @@ require 'bundler'
|
|
3
3
|
require 'rake/clean'
|
4
4
|
require 'rake/testtask'
|
5
5
|
require 'rdoc/task'
|
6
|
-
require 'cucumber'
|
7
|
-
require 'cucumber/rake/task'
|
8
6
|
|
9
7
|
include Rake::DSL
|
10
8
|
|
@@ -75,52 +73,38 @@ end
|
|
75
73
|
|
76
74
|
Bundler::GemHelper.install_tasks
|
77
75
|
|
78
|
-
desc
|
79
|
-
Rake::TestTask.new do |t|
|
76
|
+
desc "run unit tests"
|
77
|
+
Rake::TestTask.new("test:unit") do |t|
|
80
78
|
t.libs << "test"
|
81
|
-
t.
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
Cucumber::Rake::Task.new(:features) do |t|
|
87
|
-
opts = "features --format html -o #{CUKE_RESULTS} --format progress -x"
|
88
|
-
opts += " --tags #{ENV['TAGS']}" if ENV['TAGS']
|
89
|
-
t.cucumber_opts = opts
|
90
|
-
t.fork = false
|
91
|
-
end
|
92
|
-
Cucumber::Rake::Task.new('features:wip') do |t|
|
93
|
-
tag_opts = ' --tags ~@pending'
|
94
|
-
tag_opts = ' --tags @wip'
|
95
|
-
t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty -x -s#{tag_opts}"
|
96
|
-
t.fork = false
|
79
|
+
t.libs << "lib"
|
80
|
+
ENV["RUBYOPT"].split(/\s/).each do |opt|
|
81
|
+
t.ruby_opts << opt
|
82
|
+
end
|
83
|
+
t.test_files = FileList["test/unit/**/*_test.rb"]
|
97
84
|
end
|
98
85
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
86
|
+
desc "run integration tests"
|
87
|
+
Rake::TestTask.new("test:integration") do |t|
|
88
|
+
t.libs << "test"
|
89
|
+
ENV["RUBYOPT"].split(/\s/).each do |opt|
|
90
|
+
t.ruby_opts << opt
|
103
91
|
end
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
92
|
+
explicitly_named_files = ARGV[1..-1]
|
93
|
+
if Array(explicitly_named_files).size == 0
|
94
|
+
t.test_files = FileList["test/integration/**/*_test.rb"]
|
95
|
+
else
|
96
|
+
t.test_files = explicitly_named_files
|
108
97
|
end
|
98
|
+
end
|
109
99
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
end
|
100
|
+
|
101
|
+
begin
|
102
|
+
require 'simplecov'
|
114
103
|
rescue LoadError
|
115
|
-
begin
|
116
|
-
require 'simplecov'
|
117
|
-
rescue LoadError
|
118
|
-
$stderr.puts "neither rcov nor simplecov are installed; you won't be able to check code coverage"
|
119
|
-
end
|
120
104
|
end
|
121
105
|
|
122
106
|
desc 'Publish rdoc on github pages and push to github'
|
123
107
|
task :publish_rdoc => [:rdoc,:publish]
|
124
108
|
|
125
|
-
task :default => [:test
|
109
|
+
task :default => ["test:unit", "test:integraton"]
|
126
110
|
|
data/bin/ci
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -e
|
4
|
+
if [ -z $1 ]; then
|
5
|
+
echo "[bin/ci] Running with default warnings"
|
6
|
+
export RUBYOPT=
|
7
|
+
else
|
8
|
+
if [ $1 == 'warnings' ]; then
|
9
|
+
echo "[bin/ci] Running with all warnings on"
|
10
|
+
export RUBYOPT=-w
|
11
|
+
else
|
12
|
+
if [ $1 == 'none' ]; then
|
13
|
+
echo "[bin/ci] Running with all warnings off"
|
14
|
+
export RUBYOPT='-W0'
|
15
|
+
else
|
16
|
+
echo "[bin/ci] '$1' is not a supported option"
|
17
|
+
echo "[bin/ci] usage: $0 # run with default warnings"
|
18
|
+
echo "[bin/ci] usage: $0 warnings # run with all warnings"
|
19
|
+
echo "[bin/ci] usage: $0 none # run with warnings disabled"
|
20
|
+
exit 1
|
21
|
+
fi
|
22
|
+
fi
|
23
|
+
fi
|
24
|
+
|
25
|
+
echo "[bin/ci] Running unit tests"
|
26
|
+
bin/rake test:unit
|
27
|
+
|
28
|
+
echo "[bin/ci] Running integration tests"
|
29
|
+
bin/rake test:integration
|
data/bin/gli
CHANGED
@@ -1,68 +1,29 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
This is the directory where the project''s directory will be made, so if you
|
24
|
-
specify a project name ''foo'' and the root dir of ''.'', the directory
|
25
|
-
''./foo'' will be created'
|
26
|
-
EOS
|
27
|
-
|
28
|
-
flag :r,:root, :default_value => '.'
|
29
|
-
|
30
|
-
desc 'Create a new GLI-based project'
|
31
|
-
long_desc <<EOS
|
32
|
-
This will create a scaffold command line project that uses GLI
|
33
|
-
for command line processing. Specifically, this will create
|
34
|
-
an executable ready to go, as well as a lib and test directory, all
|
35
|
-
inside the directory named for your project
|
36
|
-
EOS
|
37
|
-
arg :project_name
|
38
|
-
arg :command_name, [:optional, :multiple]
|
39
|
-
arg_name "project_name [command_name]..."
|
40
|
-
command [:init,:scaffold] do |c|
|
41
|
-
|
42
|
-
c.switch :e,:ext, :desc => 'Create an ext dir'
|
43
|
-
|
44
|
-
c.switch :notest, :desc => 'Do not create a test or features dir', :negatable => false
|
45
|
-
|
46
|
-
c.switch :force, :desc => 'Overwrite/ignore existing files and directories'
|
47
|
-
|
48
|
-
c.switch :rvmrc, :desc => 'Create an .rvmrc based on your current RVM setup'
|
49
|
-
|
50
|
-
c.action do |g,o,args|
|
51
|
-
if args.length < 1
|
52
|
-
raise 'You must specify the name of your project'
|
53
|
-
end
|
54
|
-
GLI::Commands::Scaffold.create_scaffold(g[:r],!o[:notest],o[:e],args[0],args[1..-1],o[:force],g[:n],o[:rvmrc])
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
pre do |global,command,options,args|
|
59
|
-
puts "Executing #{command.name}" if global[:v]
|
60
|
-
true
|
61
|
-
end
|
62
|
-
|
63
|
-
post do |global,command,options,args|
|
64
|
-
puts "Executed #{command.name}" if global[:v]
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'gli' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
65
23
|
end
|
66
24
|
end
|
67
25
|
|
68
|
-
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("gli", "gli")
|
data/bin/rake
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'rake' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require "pathname"
|
12
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path("../bundle", __FILE__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require "rubygems"
|
27
|
+
require "bundler/setup"
|
28
|
+
|
29
|
+
load Gem.bin_path("rake", "rake")
|
data/bin/setup
ADDED
data/exe/gli
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'gli'
|
4
|
+
require 'gli/commands/scaffold'
|
5
|
+
|
6
|
+
class App
|
7
|
+
extend GLI::App
|
8
|
+
|
9
|
+
program_desc 'create scaffolding for a GLI-powered application'
|
10
|
+
|
11
|
+
version GLI::VERSION
|
12
|
+
|
13
|
+
# Can't use these without changing the current behavior of gli
|
14
|
+
# arguments :strict
|
15
|
+
# subcommand_option_handling :normal
|
16
|
+
|
17
|
+
switch :v, :desc => 'Be verbose'
|
18
|
+
|
19
|
+
switch :n, :desc => 'Dry run; don''t change the disk'
|
20
|
+
|
21
|
+
desc 'Root dir of project'
|
22
|
+
long_desc <<EOS
|
23
|
+
This is the directory where the project''s directory will be made, so if you
|
24
|
+
specify a project name ''foo'' and the root dir of ''.'', the directory
|
25
|
+
''./foo'' will be created'
|
26
|
+
EOS
|
27
|
+
|
28
|
+
flag :r,:root, :default_value => '.'
|
29
|
+
|
30
|
+
desc 'Create a new GLI-based project'
|
31
|
+
long_desc <<EOS
|
32
|
+
This will create a scaffold command line project that uses GLI
|
33
|
+
for command line processing. Specifically, this will create
|
34
|
+
an executable ready to go, as well as a lib and test directory, all
|
35
|
+
inside the directory named for your project
|
36
|
+
EOS
|
37
|
+
arg :project_name
|
38
|
+
arg :command_name, [:optional, :multiple]
|
39
|
+
arg_name "project_name [command_name]..."
|
40
|
+
command [:init,:scaffold] do |c|
|
41
|
+
|
42
|
+
c.switch :e,:ext, :desc => 'Create an ext dir'
|
43
|
+
|
44
|
+
c.switch :notest, :desc => 'Do not create a test or features dir', :negatable => false
|
45
|
+
|
46
|
+
c.switch :force, :desc => 'Overwrite/ignore existing files and directories'
|
47
|
+
|
48
|
+
c.switch :rvmrc, :desc => 'Create an .rvmrc based on your current RVM setup'
|
49
|
+
|
50
|
+
c.action do |g,o,args|
|
51
|
+
if args.length < 1
|
52
|
+
raise 'You must specify the name of your project'
|
53
|
+
end
|
54
|
+
GLI::Commands::Scaffold.create_scaffold(g[:r],!o[:notest],o[:e],args[0],args[1..-1],o[:force],g[:n],o[:rvmrc])
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
pre do |global,command,options,args|
|
59
|
+
puts "Executing #{command.name}" if global[:v]
|
60
|
+
true
|
61
|
+
end
|
62
|
+
|
63
|
+
post do |global,command,options,args|
|
64
|
+
puts "Executed #{command.name}" if global[:v]
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
exit App.run(ARGV)
|
data/gli.gemspec
CHANGED
@@ -1,32 +1,30 @@
|
|
1
1
|
# Make sure we get the gli that's local
|
2
|
-
require File.join([File.dirname(__FILE__),
|
2
|
+
require File.join([File.dirname(__FILE__),"lib","gli","version.rb"])
|
3
3
|
|
4
4
|
spec = Gem::Specification.new do |s|
|
5
|
-
s.name =
|
5
|
+
s.name = "gli"
|
6
6
|
s.version = GLI::VERSION
|
7
|
-
s.licenses = [
|
8
|
-
s.author =
|
9
|
-
s.email =
|
10
|
-
s.homepage =
|
7
|
+
s.licenses = ["Apache-2.0"]
|
8
|
+
s.author = "David Copeland"
|
9
|
+
s.email = "davidcopeland@naildrivin5.com"
|
10
|
+
s.homepage = "http://davetron5000.github.io/gli"
|
11
11
|
s.platform = Gem::Platform::RUBY
|
12
|
-
s.summary =
|
13
|
-
s.description =
|
12
|
+
s.summary = "Build command-suite CLI apps that are awesome."
|
13
|
+
s.description = "Build command-suite CLI apps that are awesome. Bootstrap your app, add commands, options and documentation while maintaining a well-tested idiomatic command-line app"
|
14
14
|
|
15
15
|
s.files = `git ls-files`.split("\n")
|
16
16
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
-
s.executables = 'gli'
|
18
17
|
s.require_paths = ["lib"]
|
19
18
|
|
20
|
-
s.extra_rdoc_files = [
|
21
|
-
s.rdoc_options <<
|
22
|
-
|
23
|
-
s.
|
24
|
-
s.
|
25
|
-
|
26
|
-
s.add_development_dependency(
|
27
|
-
s.add_development_dependency(
|
28
|
-
s.add_development_dependency(
|
29
|
-
s.add_development_dependency(
|
30
|
-
s.add_development_dependency(
|
31
|
-
s.add_development_dependency('faker','~> 1.9.1')
|
19
|
+
s.extra_rdoc_files = ["README.rdoc", "gli.rdoc"]
|
20
|
+
s.rdoc_options << "--title" << "Git Like Interface" << "--main" << "README.rdoc"
|
21
|
+
|
22
|
+
s.bindir = "exe"
|
23
|
+
s.executables = "gli"
|
24
|
+
|
25
|
+
s.add_development_dependency("rake")
|
26
|
+
s.add_development_dependency("rdoc")
|
27
|
+
s.add_development_dependency("rainbow", "~> 1.1", "~> 1.1.1")
|
28
|
+
s.add_development_dependency("sdoc")
|
29
|
+
s.add_development_dependency("minitest")
|
32
30
|
end
|
data/gli.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
== gli - create scaffolding for a GLI-powered application
|
2
2
|
|
3
|
-
v2.
|
3
|
+
v2.19.2
|
4
4
|
|
5
5
|
=== Global Options
|
6
6
|
=== -r|--root arg
|
@@ -43,7 +43,7 @@ List commands one per line, to assist with shell completion
|
|
43
43
|
|
44
44
|
|
45
45
|
|
46
|
-
==== Command: <tt>init|scaffold project_name [command_name]
|
46
|
+
==== Command: <tt>init|scaffold project_name [command_name]...</tt>
|
47
47
|
Create a new GLI-based project
|
48
48
|
|
49
49
|
This will create a scaffold command line project that uses GLI
|
data/lib/gli/app_support.rb
CHANGED
@@ -15,6 +15,7 @@ module GLI
|
|
15
15
|
switches.clear
|
16
16
|
flags.clear
|
17
17
|
@commands = nil
|
18
|
+
@command_missing_block = nil
|
18
19
|
@commands_declaration_order = []
|
19
20
|
@flags_declaration_order = []
|
20
21
|
@switches_declaration_order = []
|
@@ -72,7 +73,8 @@ module GLI
|
|
72
73
|
:default_command => @default_command,
|
73
74
|
:autocomplete => autocomplete,
|
74
75
|
:subcommand_option_handling_strategy => subcommand_option_handling_strategy,
|
75
|
-
:argument_handling_strategy => argument_handling_strategy
|
76
|
+
:argument_handling_strategy => argument_handling_strategy,
|
77
|
+
:command_missing_block => @command_missing_block)
|
76
78
|
|
77
79
|
parsing_result = gli_option_parser.parse_options(args)
|
78
80
|
parsing_result.convert_to_openstruct! if @use_openstruct
|
data/lib/gli/command_support.rb
CHANGED
@@ -166,12 +166,8 @@ module GLI
|
|
166
166
|
|
167
167
|
def generate_error_action(arguments)
|
168
168
|
lambda { |global_options,options,arguments|
|
169
|
-
if am_subcommand?
|
170
|
-
|
171
|
-
raise UnknownCommand,"Unknown command '#{arguments[0]}'"
|
172
|
-
else
|
173
|
-
raise BadCommandLine,"Command '#{name}' requires a subcommand"
|
174
|
-
end
|
169
|
+
if am_subcommand? && arguments.size > 0
|
170
|
+
raise UnknownCommand,"Unknown command '#{arguments[0]}'"
|
175
171
|
elsif have_subcommands?
|
176
172
|
raise BadCommandLine,"Command '#{name}' requires a subcommand #{self.commands.keys.join(',')}"
|
177
173
|
else
|