-
Notifications
You must be signed in to change notification settings - Fork 0
/
files_ruby.go
88 lines (79 loc) · 2.37 KB
/
files_ruby.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package main
func buildRubyProject() {
rubyGemfile(path + "/Gemfile")
rubyRakefile(path + "/Rakefile")
mkdir(path + "/lib")
rubyMain(path + "/lib/" + nameSnakeCase + ".rb")
mkdir(path + "/lib/" + nameSnakeCase)
rubyStuff(path + "/lib/" + nameSnakeCase + "/stuff.rb")
mkdir(path + "/test")
rubyTest(path + "/test/test_stuff.rb")
}
func rubyGemfile(path string) {
f := mkfile(path)
writeLine(f, "source 'https://rubygems.org'")
writeLine(f, "")
writeLine(f, "gem 'rake'")
}
func rubyRakefile(path string) {
f := mkfile(path)
writeLine(f, "#!/usr/bin/env rake")
writeLine(f, "")
writeLine(f, "$LOAD_PATH << File.expand_path('../lib', __FILE__)")
writeLine(f, "")
writeLine(f, "require 'rake/testtask'")
writeLine(f, "require '"+nameSnakeCase+"'")
writeLine(f, "")
writeLine(f, "task :run do")
writeLine(f, " "+nameCamelCase+".run")
writeLine(f, "end")
writeLine(f, "")
writeLine(f, "Rake::TestTask.new do |t|")
writeLine(f, " t.libs << 'lib/"+nameSnakeCase+"'")
writeLine(f, " t.test_files = FileList['test/test_*.rb']")
writeLine(f, " t.verbose = true")
writeLine(f, "end")
writeLine(f, "")
writeLine(f, "task :default => :test")
}
func rubyMain(path string) {
f := mkfile(path)
writeLine(f, "module "+nameCamelCase)
writeLine(f, " def self.run")
writeLine(f, " puts \"#{"+nameCamelCase+"::Stuff.hello}!\"")
writeLine(f, " end")
writeLine(f, "end")
writeLine(f, "")
writeLine(f, "require '"+nameSnakeCase+"/stuff'")
}
func rubyStuff(path string) {
f := mkfile(path)
writeLine(f, "module "+nameCamelCase)
writeLine(f, " module Stuff")
writeLine(f, " def self.hello")
writeLine(f, " 'Hello World'")
writeLine(f, " end")
writeLine(f, " end")
writeLine(f, "end")
}
func rubyTest(path string) {
f := mkfile(path)
writeLine(f, "require 'minitest/autorun'")
writeLine(f, "require 'minitest/pride'")
writeLine(f, "require File.expand_path('../../lib/"+nameSnakeCase+".rb', __FILE__)")
writeLine(f, "")
writeLine(f, "class TestStuff < MiniTest::Unit::TestCase")
writeLine(f, "")
writeLine(f, " def setup")
writeLine(f, " # before each test")
writeLine(f, " end")
writeLine(f, "")
writeLine(f, " def teardown")
writeLine(f, " # after each test")
writeLine(f, " end")
writeLine(f, "")
writeLine(f, " def test_hello")
writeLine(f, " assert 'Hello World' == "+nameCamelCase+"::Stuff.hello")
writeLine(f, " end")
writeLine(f, "end")
}