rbapp 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in rbapp.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,38 @@
1
+ ## Overview
2
+
3
+ rbapp is a ([thor](http://github.com/wycats/thor) & bundler based) ruby console application generator. You get a dependency with thor, but I think the pros wins the cons:
4
+
5
+ - Your ruby app gets a neat console API: arguments, options,and help for free.
6
+ - Your app is modular and easy to extend: only add new thor tasks!
7
+ - Your app get gets a simple but powerfull template based generator.
8
+ - Your app is generated as a bundle based gem, so you get easy deployment
9
+
10
+
11
+
12
+ Of course, rbapp was generated by rbapp!
13
+
14
+ ## Install & Use
15
+
16
+ To install:
17
+
18
+ gem install rbapp
19
+
20
+ For use:
21
+
22
+ rbapp myapp
23
+ => generate an application named myapp in ./myapp dir
24
+
25
+ rbapp myapp --sample
26
+
27
+ => generate also a sample task
28
+
29
+ rbapp --help
30
+
31
+ => show options
32
+
33
+ # Help
34
+
35
+
36
+ Your generated app is a [thor](http://github.com/wycats/thor) "clone", so read [thor](http://github.com/wycats/thor) docs to get help about how create new tasks for your app.
37
+ rbapp is a very simple application: Read the source for better understanding: rbapp is it self rbapp generated, so it can show how your app works.
38
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/rbapp ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ $LOAD_PATH.unshift File.join(File.dirname($0), '..', 'lib')
5
+ require 'rbapp'
6
+ Rbapp::Runner.start(ARGV)
7
+
8
+ rescue Interrupt => e
9
+ puts "\nQuitting..."
10
+ puts e.backtrace.join("\n")
11
+ exit 1
12
+ rescue Exception => e
13
+ puts e.message
14
+ puts e.backtrace.join("\n")
15
+ exit 1
16
+ end
data/lib/rbapp.rb ADDED
@@ -0,0 +1,40 @@
1
+ require "rbapp/version"
2
+ require 'thor'
3
+ require 'thor/group'
4
+
5
+ module Rbapp
6
+ class Runner < Thor::Group
7
+ namespace ""
8
+ include Thor::Actions
9
+
10
+ # Define arguments and options
11
+ argument :name
12
+ class_option :sample, type: :boolean, default: false
13
+ class_option :ocra, type: :boolean, default: false
14
+
15
+ def self.source_root
16
+ File.dirname(__FILE__)
17
+ end
18
+
19
+ def create_bin_file
20
+ template('templates/app/bin/app.tt', "#{name}/bin/#{name}.rb")
21
+ end
22
+
23
+ def create_gem_file
24
+ template('templates/app/Gemfile.tt', "#{name}/Gemfile")
25
+ end
26
+
27
+ def create_app_file
28
+ template('templates/app/lib/app.tt', "#{name}/lib/#{name}.rb")
29
+ end
30
+
31
+ def create_version_file
32
+ template('templates/app/lib/app/version.tt', "#{name}/lib/#{name}/version.rb")
33
+ end
34
+
35
+ def copy_sample_task
36
+ return unless options.sample?
37
+ copy_file "templates/app/lib/tasks/sample.thor", "#{name}/lib/tasks/sample.thor"
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,3 @@
1
+ module Rbapp
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,6 @@
1
+ # Gemfile
2
+ source "http://rubygems.org"
3
+
4
+ # gem "version_info"
5
+ # gem "ocra"
6
+ gem "thor"
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ $LOAD_PATH.unshift File.join(File.dirname($0), '..', 'lib')
5
+ require 'bundler/setup'
6
+ require '<%= name %>'
7
+ <%= "ARGV << :list if defined?(Ocra) #force detect all tasks" if options.ocra? %>
8
+ <%= name.capitalize %>::Runner.start(ARGV)
9
+
10
+ rescue Interrupt => e
11
+ puts "\nQuitting..."
12
+ puts e.backtrace.join("\n")
13
+ exit 1
14
+ rescue Exception => e
15
+ puts e.message
16
+ puts e.backtrace.join("\n")
17
+ exit 1
18
+ end
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ require 'thor/runner'
5
+
6
+ require '<%= name %>/version'
7
+
8
+ module Thor::Util #:nodoc:
9
+ SEARCH_ROOT = File.dirname(__FILE__)
10
+ # redefine to search tasks only for this app
11
+ def self.globs_for(path)
12
+ ["#{SEARCH_ROOT}/*.thor", "#{SEARCH_ROOT}/tasks/*.thor"]
13
+ end
14
+ end
15
+
16
+ module <%= name.capitalize %>
17
+ EXE_NAME = File.basename($0, '.rb')
18
+ class Runner < Thor::Runner
19
+ # remove some tasks not needed
20
+ superclass.remove_task :install, :installed, :uninstall, :update
21
+
22
+ # default version and banner outputs THOR, so redefine it
23
+
24
+ def self.banner(task, all = false, subcommand = false)
25
+ "#{<%= name.capitalize %>::EXE_NAME} " + task.formatted_usage(self, all, subcommand)
26
+ end
27
+
28
+ desc "version", "Show #{<%= name.capitalize %>::EXE_NAME} version"
29
+ def version
30
+ say "#{<%= name.capitalize %>::VERSION}"
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,4 @@
1
+ module <%= name.capitalize %>
2
+ VERSION = "0.0.1"
3
+ end
4
+
@@ -0,0 +1,10 @@
1
+ class Sample < Thor
2
+ desc "echo TEXT", "a sample task"
3
+ method_options :upcase => :boolean, :sufix => :string
4
+ def echo(text)
5
+ out_text = text.dup
6
+ out_text.upcase! if options.upcase?
7
+ out_text += options.sufix if options.sufix?
8
+ say out_text
9
+ end
10
+ end
data/rbapp.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "rbapp/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "rbapp"
7
+ s.version = Rbapp::VERSION
8
+ s.authors = ["Jorge L. Cangas"]
9
+ s.email = ["jorge.cangas@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{ruby console app generator}
12
+ s.description = %q{ruby console app generator}
13
+
14
+ s.rubyforge_project = "rbapp"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ # s.add_development_dependency "rspec"
23
+ s.add_runtime_dependency "thor"
24
+ end
25
+
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rbapp
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jorge L. Cangas
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-11-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: thor
16
+ requirement: &13071100 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *13071100
25
+ description: ruby console app generator
26
+ email:
27
+ - jorge.cangas@gmail.com
28
+ executables:
29
+ - rbapp
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - .gitignore
34
+ - Gemfile
35
+ - README.md
36
+ - Rakefile
37
+ - bin/rbapp
38
+ - lib/rbapp.rb
39
+ - lib/rbapp/version.rb
40
+ - lib/templates/app/Gemfile.tt
41
+ - lib/templates/app/bin/app.tt
42
+ - lib/templates/app/lib/app.tt
43
+ - lib/templates/app/lib/app/version.tt
44
+ - lib/templates/app/lib/tasks/sample.thor
45
+ - rbapp.gemspec
46
+ homepage: ''
47
+ licenses: []
48
+ post_install_message:
49
+ rdoc_options: []
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ requirements: []
65
+ rubyforge_project: rbapp
66
+ rubygems_version: 1.8.10
67
+ signing_key:
68
+ specification_version: 3
69
+ summary: ruby console app generator
70
+ test_files: []