gbud 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fd69d3ab55c882ba9f43ab7f7621cfb2e7af9fc3
4
- data.tar.gz: c3184519fe8ddddd934d0574e47593a1219b6929
3
+ metadata.gz: e175e224bba7fbd99773788d3d92488600c7291f
4
+ data.tar.gz: 5271c490f76ee9f8d487ba13208cd63122177c07
5
5
  SHA512:
6
- metadata.gz: 5520486bbd37c99e7ef7dfa59a2e33c862f3b9c9285d107d20b8218bdd140d7fdd5f4d442fc3c6e480f5330fd20d4b21dd4ed1135bb0e7893efea18d58fbb0ce
7
- data.tar.gz: 192e4daad8b7f0453e667e81b2254abc26e2f489c00357d1f685b9fb2fe4737595762fc4e2b93397a1777ec0c02700f9cd2847b766b0d4d51a26a8ab6e863695
6
+ metadata.gz: 3581b02760b91904e9d8515871fabd288f106512828a620eb8a10967d555123582fd87e12d0c911131936d192452078f3bda8f59a5185a3f7b608f121bc85e11
7
+ data.tar.gz: 6fb3d65f1c076fa1b29b9b2f563ddabd6dc4f712af35b04c6289bb7e6b67acf175951d3d984ee8f9c376d61d81fafce7de62dd0b8c13ac4acd734f511f7ba577
@@ -1,3 +1,3 @@
1
1
  # gbud
2
2
  # Copyright 2015 Richard Davis GPL v3
3
- require 'lib/base.rb'
3
+ require 'gbud/base'
@@ -0,0 +1,91 @@
1
+ # gbud base script
2
+ # Copyright 2015 Richard Davis GPL v3
3
+ require 'fileutils'
4
+ require 'gbud/getinfo'
5
+
6
+ p_name = GetInfo.new('Project name => ').user_prompt
7
+ version = GetInfo.new('Version number => ').user_prompt
8
+ authors = GetInfo.new('Project authors => ').user_prompt.delete(' ').split(',')
9
+ email = GetInfo.new('Project email => ').user_prompt
10
+ site = GetInfo.new('Project website => ').user_prompt
11
+ summary = GetInfo.new('Enter a short summary of the project => ').user_prompt
12
+ description = GetInfo.new('Enter a description of the project => ').user_prompt
13
+ license = GetInfo.new('Project\'s license => ').user_prompt
14
+
15
+ # sets up directory structure
16
+ FileUtils.mkdir_p([
17
+ "#{p_name}/bin/",
18
+ "#{p_name}/lib/#{p_name}",
19
+ "#{p_name}/test"
20
+ ])
21
+
22
+ # creates lib/base script
23
+ FileUtils.touch("#{p_name}/lib/#{p_name}/base.rb")
24
+
25
+ # creates main script
26
+ m = File.new("#{p_name}/lib/#{p_name}.rb", 'w+')
27
+ m.puts "require '#{p_name}/base'"
28
+ m.puts 'class HelloWorld'
29
+ m.puts "\tdef self.hello"
30
+ m.puts "\t\treturn 'Hello world!'"
31
+ m.puts "\tend"
32
+ m.puts 'end'
33
+ m.close
34
+
35
+ # creates executable
36
+ e = File.new("#{p_name}/bin/#{p_name}", 'w+')
37
+ e.puts '#!/usr/bin/env ruby'
38
+ e.puts 'begin'
39
+ e.puts "\trequire '#{p_name}'"
40
+ e.puts 'rescue LoadError'
41
+ e.puts "\trequire 'rubygems'"
42
+ e.puts "\trequire '#{p_name}'"
43
+ e.puts 'end'
44
+ e.close
45
+ File.chmod(0755, "#{p_name}/bin/#{p_name}")
46
+
47
+ # TODO: WRITE AUTOMATED TESTS
48
+ t = File.new("#{p_name}/test/test_#{p_name}.rb", 'w+')
49
+ t.puts "require 'test/unit'"
50
+ t.puts "require '#{p_name}'"
51
+ t.puts 'class HelloWorldTest < Test::Unit::TestCase'
52
+ t.puts "\tdef test_hello_world"
53
+ t.puts "\t\t\tassert_equal(HelloWorld.hello, 'Hello world!')"
54
+ t.puts "\tend"
55
+ t.puts 'end'
56
+ t.close
57
+
58
+ # writes Rakefile
59
+ r = File.new("#{p_name}/Rakefile", 'w+')
60
+ r.puts 'require \'rake/testtask\''
61
+ r.puts 'Rake::TestTask.new do |t|'
62
+ r.puts "\tt.libs << 'test'"
63
+ r.puts 'end'
64
+ r.puts 'desc \'Run tests\''
65
+ r.puts 'task :default => :test'
66
+ r.close
67
+
68
+ # writes gemspec
69
+ gemspec = File.new("#{p_name}/#{p_name}.gemspec", 'w+')
70
+ gemspec.puts '# -*- encoding: utf-8 -*-'
71
+ gemspec.puts "lib = File.expand_path('../lib', __FILE__)"
72
+ gemspec.puts "$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)\n\n"
73
+ gemspec.puts 'Gem::Specification.new do |s|'
74
+ gemspec.puts "\ts.name = '#{p_name}'"
75
+ gemspec.puts "\ts.version = '#{version}'"
76
+ gemspec.puts "\ts.platform = Gem::Platform::RUBY"
77
+ gemspec.puts "\ts.authors = #{authors}"
78
+ gemspec.puts "\ts.email = '#{email}'"
79
+ gemspec.puts "\ts.homepage = '#{site}'"
80
+ gemspec.puts "\ts.summary = '#{summary}'"
81
+ gemspec.puts "\ts.description = <<-EOF\n\t\t#{description}\nEOF"
82
+ gemspec.puts "\ts.license = '#{license}'"
83
+ gemspec.puts "\ts.files = ['lib/#{p_name}.rb']"
84
+ gemspec.puts "\ts.executables = ['#{p_name}']"
85
+ gemspec.puts "\ts.test_files = ['test/test_#{p_name}.rb']"
86
+ gemspec.puts "\ts.require_path = ['lib']"
87
+ gemspec.puts 'end'
88
+
89
+ # runs automated tests
90
+ #system 'cd '
91
+ #system 'rake'
@@ -0,0 +1,29 @@
1
+ # extracts required information for project
2
+ class GetInfo
3
+ def initialize(prompt)
4
+ @prompt = prompt
5
+ @info = ''
6
+ @u_verify = ''
7
+ end
8
+
9
+ def user_prompt
10
+ loop do
11
+ print @prompt
12
+ take_input
13
+ break if verify_input
14
+ end
15
+ @info
16
+ end
17
+
18
+ def take_input
19
+ @info = gets.chomp.to_s
20
+ end
21
+
22
+ def verify_input
23
+ puts "You have entered: #{@info}"
24
+ print 'Is this correct? (Y/N) => '
25
+ @u_verify = gets.chomp.to_s.upcase
26
+ return false unless @u_verify == 'Y'
27
+ true
28
+ end
29
+ end
@@ -0,0 +1,54 @@
1
+ require 'test/unit'
2
+ require 'gbud'
3
+
4
+ # test methods in getinfo module
5
+ class GetInfoTest < Test::Unit::TestCase
6
+ def test_take_input
7
+ with_stdin do |user|
8
+ user.puts 'test'
9
+ assert_equal(
10
+ GetInfo.new('').take_input, 'test')
11
+ end
12
+ end
13
+
14
+ def test_verify_input_one
15
+ with_stdin do |user|
16
+ user.puts 'Y'
17
+ assert_equal(
18
+ GetInfo.new('').verify_input, true)
19
+ end
20
+ end
21
+
22
+ def test_verify_input_two
23
+ with_stdin do |user|
24
+ user.puts 'Y'
25
+ assert_equal(
26
+ GetInfo.new('').verify_input, true)
27
+ end
28
+ end
29
+
30
+ def test_verify_input_fail
31
+ with_stdin do |user|
32
+ user.puts 'N'
33
+ assert_equal(
34
+ GetInfo.new('').verify_input, false)
35
+ end
36
+ end
37
+
38
+ def test_user_prompt
39
+ with_stdin do |user|
40
+ user.puts 'test'
41
+ user.puts 'Y'
42
+ assert_equal(GetInfo.new('').user_prompt, 'test')
43
+ end
44
+ end
45
+
46
+ def with_stdin
47
+ stdin = $stdin # remember $stdin
48
+ $stdin, write = IO.pipe # create pipe assigning its "read end" to $stdin
49
+ yield write # pass pipe's "write end" to block
50
+ ensure
51
+ write.close # close pipe
52
+ $stdin = stdin # restore $stdin
53
+ end
54
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gbud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Davis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-10 00:00:00.000000000 Z
11
+ date: 2015-11-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |2
14
14
  This project aims to make starting a new gem project simple by automating
@@ -21,7 +21,9 @@ extra_rdoc_files: []
21
21
  files:
22
22
  - bin/gbud
23
23
  - lib/gbud.rb
24
- - test/test_gbud.rb
24
+ - lib/gbud/base.rb
25
+ - lib/gbud/getinfo.rb
26
+ - test/test_getinfo.rb
25
27
  homepage: http://www.github.com/d3d1rty/gbud
26
28
  licenses:
27
29
  - GPL v3
@@ -47,4 +49,4 @@ signing_key:
47
49
  specification_version: 4
48
50
  summary: Initializes the basic structure of a gem
49
51
  test_files:
50
- - test/test_gbud.rb
52
+ - test/test_getinfo.rb
File without changes