gtl 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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