gtl 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c5bd0ea0fbc3a4fa619a3031fc245f7b4dc98e5e
4
+ data.tar.gz: 10436bdcaf9dab7f12d4edf550ed9d95b6035f46
5
+ SHA512:
6
+ metadata.gz: 3d5abb6ab85ef7f8783c6907c3637295859ca6ccd090a9d870759e9dab765137d56d686f2bb59dc602783e47ef07bd6723dbcb10116d6dff92af39bf77dbd0f6
7
+ data.tar.gz: 407b875e2a26125027a7a0c0d7bf5cfe46acf62f29efe08406e71dc7fea4bd0082dcfa507f68d22238b5045aafe58f481e3e423c4b64ed9894cf655405f2215a
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ pkg/
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,18 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gtl (0.9.0)
5
+ thor
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ rake (10.3.2)
11
+ thor (0.19.1)
12
+
13
+ PLATFORMS
14
+ ruby
15
+
16
+ DEPENDENCIES
17
+ gtl!
18
+ rake (~> 10.1)
data/README.md ADDED
@@ -0,0 +1,28 @@
1
+ # Ruby gem template
2
+
3
+ ## Installation
4
+
5
+ `gem install gem-template`
6
+
7
+ ## Usage
8
+
9
+ ```zsh
10
+ > bin/gt
11
+ Commands:
12
+ gt help [COMMAND] # Describe available commands or one specific command
13
+ gt new NAME # Create a new Gem by passing options
14
+ ```
15
+
16
+ ### Create a new gem at a given location
17
+
18
+
19
+ `-b` specifies a base, to install to `default: .`
20
+
21
+ ```zsh
22
+ > bin/gt new GemName -b ~/Documents/new-gem
23
+
24
+
25
+
26
+ ```
27
+
28
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
data/TODO ADDED
@@ -0,0 +1 @@
1
+ Add test
data/bin/gtl ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+
5
+ $:.unshift File.expand_path('../../lib', __FILE__)
6
+
7
+ require 'gem-template'
8
+
9
+ GemTemplate::CLI.start
@@ -0,0 +1,6 @@
1
+ module GemTemplate
2
+ require 'gem-template/version'
3
+ require 'gem-template/render'
4
+ require 'gem-template/engine'
5
+ require 'gem-template/cli'
6
+ end
@@ -0,0 +1,12 @@
1
+ require 'thor'
2
+ module GemTemplate
3
+ class CLI < Thor
4
+
5
+
6
+ desc "new NAME", "Create a new Gem by passing options"
7
+ method_option :base, type: :string, required: false, default: '.', aliases: '-b'
8
+ def new(name)
9
+ Engine.new(name: name, base: options[:base]).create
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,218 @@
1
+ require 'active_support/inflector'
2
+ require 'fileutils'
3
+ require 'gem-template/render'
4
+ module GemTemplate
5
+ class Engine
6
+
7
+ STRUCT = [
8
+ {
9
+ name: 'spec',
10
+ type: 'folder',
11
+ sub: [
12
+ {name: 'spec_helper.rb', type: 'file',content: 'spec_helper'},
13
+ {name: '%s', type: 'folder',sub: [
14
+ {name: '%s_spec.rb', type: 'file', content: 'spec_file'}
15
+ ]}
16
+ ]
17
+ },
18
+ {
19
+ name: 'lib',
20
+ type: 'folder',
21
+ sub: [
22
+ {name: '%s.rb', type: 'file', content: 'gem_lib', unless: "ext?"},
23
+ {name: '%s', type: 'folder', sub: [
24
+ {name: 'version.rb', type: 'file',content: 'gem_version'}
25
+ ]}
26
+ ]
27
+ },
28
+ {
29
+ name: 'ext',
30
+ if: "ext?",
31
+ type: 'folder',
32
+ sub: [
33
+ {
34
+ name: '%s',
35
+ type: 'folder',
36
+ sub: [
37
+ {name: 'extconf.rb', type: 'file', content: 'extconf_tmpl'},
38
+ {name: '%s.c', type: 'file', content: 'c_ext_c'},
39
+ {name: '%s.h', type: 'file', content: 'c_ext_h'}
40
+ ]}
41
+ ]
42
+ },
43
+ {
44
+ name: 'bin',
45
+ if: "bin?",
46
+ type: 'folder',
47
+ sub: [
48
+ {name: '%s', type: 'file', content: 'bin_exe', mode: 0755}
49
+ ]
50
+ },
51
+ {
52
+ name: '%s.gemspec',
53
+ type: 'file',
54
+ content: 'gemspec'
55
+ },
56
+ {
57
+ name: 'Gemfile',
58
+ type: 'file',
59
+ content: 'gemfile'
60
+ },
61
+ {
62
+ name: 'Rakefile',
63
+ type: 'file',
64
+ content: 'rakefile'
65
+ },
66
+ {
67
+ name: 'LICENSE',
68
+ type: 'file',
69
+ content: 'gpl_license'
70
+ },
71
+ {
72
+ name: 'README.md',
73
+ type: 'file',
74
+ content: 'readme_markdown'
75
+ }
76
+ ]
77
+
78
+
79
+ def initialize(params = {})
80
+
81
+ # Required params
82
+ # :rbgem_name => 'mruby-hogehoge',
83
+ # :license => 'MIT',
84
+ # :github_user => 'matsumoto-r',
85
+
86
+ # Optional params (auto complete from Required data)
87
+ # :rbgem_prefix => '.',
88
+ # :rbgem_type => 'class', # not yet
89
+ # :class_name => 'Hogehoge',
90
+ # :author => 'mruby-hogehoge developers',
91
+
92
+ raise "Base is empty" unless params[:base]
93
+ @base = params[:base]
94
+ @modname = params[:name].camelize
95
+ @gemname = params[:name].underscore.to_sym
96
+ @params = params
97
+ @params.merge!(mod_name: @modname, gem_name: @gemname)
98
+ @params.merge!(git_parameters)
99
+ @render = Render.new(@params)
100
+
101
+ #raise "gem_name is nil" if params[:rbgem_name].nil?
102
+ end
103
+
104
+ def cra(lop=STRUCT,path=[])
105
+ lop.each do |index|
106
+ if index[:type] == 'folder' && index.has_key?(:sub)
107
+ path << index[:name] % @gemname
108
+ pat = File.join(@base,path)
109
+ if File.exists?(pat)
110
+ puts "\033[33mexisting folder: #{pat}\033[0m"
111
+ else
112
+ FileUtils.mkdir_p(pat)
113
+ puts "\033[32mcreating folder: #{pat}\033[0m"
114
+ end
115
+ pt = path.dup
116
+ path = []
117
+ cra(index[:sub],pt) unless @deep_skip
118
+ else
119
+ if index[:type] == 'folder'
120
+ path << index[:name]
121
+ pat = File.join(path)
122
+ FileUtils.mkdir_p(pat)
123
+ end
124
+ if index[:type] == 'file'
125
+ pch = path.dup
126
+ pch << index[:name] % @gemname
127
+ pat = File.join(@base,pch)
128
+ if File.exist?(pat)
129
+ puts "\033[33mexisting file: #{pat}\033[0m"
130
+ else
131
+ FileUtils.touch(pat)
132
+ puts "\033[32mcreating file: #{pat}\033[0m"
133
+ end
134
+ if File.zero?(pat)
135
+ puts "\033[32m > filling file\033[0m"
136
+ File.write(pat, self.send(index[:content]))
137
+ end
138
+ if index[:mode]
139
+ puts "\033[32m > chmod file to #{index[:mode]}\033[0m"
140
+ File.chmod(index[:mode], pat)
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
146
+
147
+ def create(&block)
148
+ cra
149
+ puts
150
+ print_next
151
+ end
152
+ def print_next
153
+ if bundle?
154
+ inprintl "Running bundler"
155
+ `cd #{@base} && bundle install`
156
+ inprintl "\033[32mBundler complete\033[0m"
157
+ end
158
+ puts
159
+ if File.exists?(File.join(@base, '.git'))
160
+ inprintl "\033[33mNot executing git init\033[0m"
161
+ else
162
+ inprintl "\033[32mExecuting git init\033[0m"
163
+ git_exec("init .")
164
+ git_exec("add .")
165
+ git_exec("commit -am 'initial import'")
166
+ end
167
+ inprint "Next create a repository on GitHub"
168
+
169
+ end
170
+
171
+ def git_exec(cmd)
172
+ `cd #{@base};git #{cmd}`
173
+ end
174
+
175
+ def inprint(text)
176
+ puts "\n\t > #{text}"
177
+ end
178
+
179
+ def inprintl(text)
180
+ print "\r"
181
+ print "\t > #{text}"
182
+ end
183
+
184
+ def ext?
185
+ !!@params[:with_ext]
186
+ end
187
+ def bin?
188
+ !!@params[:with_bin]
189
+ end
190
+
191
+ def bundle?
192
+ !@params[:no_bundle]
193
+ end
194
+
195
+ def git_parameters
196
+ usr = `git config user.name`.chomp
197
+ mail = `git config user.email`.chomp
198
+ {git_user: usr, git_mail: mail}
199
+ end
200
+
201
+ private
202
+
203
+ # fill methods
204
+ def method_missing(name, *args)
205
+ file = File.expand_path("../templates/#{name}",__FILE__)
206
+ if File.exists?(file)
207
+ @render.render(File.read(file))
208
+ else
209
+ if self.respond_to?(name)
210
+ self.send(name, *args)
211
+ else
212
+ raise NoMethodError
213
+ end
214
+ end
215
+
216
+ end
217
+ end
218
+ end
@@ -0,0 +1,10 @@
1
+ require 'ostruct'
2
+ require 'erb'
3
+
4
+ module GemTemplate
5
+ class Render < OpenStruct
6
+ def render(template)
7
+ ERB.new(template).result(binding)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+
5
+ $:.unshift File.expand_path('../../lib', __FILE__)
6
+
7
+ #require 'gem'
8
+
9
+ #Gem::CLI.start
@@ -0,0 +1,9 @@
1
+ #include "<%=gem_name%>.h"
2
+
3
+ VALUE rb_m<%=mod_name%>;
4
+
5
+ void Init_<%=gem_name%>(void)
6
+ {
7
+ rb_m<%=mod_name%> = rb_define_module("<%=mod_name%>");
8
+
9
+ }
@@ -0,0 +1,10 @@
1
+ #ifndef _H_<%=mod_name%>
2
+ #define _H_<%=mod_name%>
3
+
4
+ #include "ruby.h"
5
+ #include "ruby/encoding.h"
6
+
7
+
8
+ void Init_<%=gem_name%>(void);
9
+
10
+ #endif
@@ -0,0 +1,38 @@
1
+ require 'mkmf'
2
+
3
+
4
+ $CFLAGS << " #{ENV["CFLAGS"]}"
5
+ $CFLAGS << " -g"
6
+ $CFLAGS << " -O3" unless $CFLAGS[/-O\d/]
7
+ $CFLAGS << " -Wall -Wno-comment"
8
+
9
+ def sys(cmd)
10
+ puts " -- #{cmd}"
11
+ unless ret = xsystem(cmd)
12
+ raise "ERROR: '#{cmd}' failed"
13
+ end
14
+ ret
15
+ end
16
+
17
+ if !(MAKE = find_executable('gmake') || find_executable('make'))
18
+ abort "ERROR: GNU make is required."
19
+ end
20
+
21
+ CWD = File.expand_path(File.dirname(__FILE__))
22
+
23
+
24
+ #Dir.chdir(LIBICAL_DIR) do
25
+ # Dir.mkdir("build") if !Dir.exists?("build")
26
+ # Dir.chdir("build") do
27
+ # sys("cmake ..")
28
+ # sys(MAKE)
29
+ # pcfile = File.join(LIBICAL_DIR,"build","libical.pc")
30
+ # $LDFLAGS << " " + `pkg-config --libs --static #{pcfile}`.strip
31
+ # end
32
+
33
+ #end
34
+ #$DEFLIBPATH.unshift("#{LIBICAL_DIR}/build/lib")
35
+ #dir_config("libical", "#{LIBICAL_DIR}/src/libical", "#{LIBICAL_DIR}/build/lib")
36
+ dir_config("<%=gem_name%>")
37
+
38
+ create_makefile('<%=gem_name%>/<%=gem_name%>')
@@ -0,0 +1,3 @@
1
+ module <%=mod_name%>
2
+ require "<%=gem_name%>/version.rb"
3
+ end
@@ -0,0 +1,3 @@
1
+ module <%=mod_name%>
2
+ VERSION="0.0.1"
3
+ end
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "<%=gem_name%>/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "<%=gem_name%>"
7
+ s.version = <%=mod_name%>::VERSION
8
+ s.authors = ["<%=git_user%>"]
9
+ s.email = ["<%=git_mail%>"]
10
+ s.homepage = "https://github.com/<%=git_user%>/<%=gem_name%>"
11
+ s.summary = %q{}
12
+ s.description = %q{}
13
+
14
+ s.rubyforge_project = s.name
15
+ s.license = "GPLv3"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.extensions = ['ext/<%=gem_name%>/extconf.rb']
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
22
+
23
+
24
+ s.add_development_dependency "rake-compiler", "~> 0.8"
25
+ s.add_development_dependency "rspec", "~> 3.0"
26
+ s.add_development_dependency "rake", "~> 10.1"
27
+ <%if additional_gems && additional_gems.is_a?(Array) %>
28
+ <% additional_gems.each do |gem| %>
29
+ s.add_dependency "<%=gem%>"
30
+ <% end%>
31
+ <%end%>
32
+ end