falsework 0.0.1 → 0.1.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.
data/README.rdoc CHANGED
@@ -13,16 +13,21 @@ Ruby.
13
13
 
14
14
  The falsework utility generates a scaffold which have:
15
15
 
16
- * <tt>gem</tt>, <tt>doc</tt>, <tt>test</tt> targers.
16
+ * auto-created git (but not github) project;
17
17
 
18
- * easy to use configuraton parser/loader; this includes scanning for:
18
+ * <tt>gem</tt> (a file list is pulled from the git repository, no more
19
+ missing files in gems!), <tt>doc</tt>, <tt>test</tt> targers;
19
20
 
20
- * env variables;
21
+ * easy to use configuraton parser/loader. This includes scanning for:
22
+
23
+ * env variable(s);
21
24
  * the flat YAML configuration file;
22
25
  * the command line.
23
26
 
24
27
  * an ability to pick up a user name & an email for a github project.
25
28
 
29
+ The generated project <b>is not dependent</b> on falsework.
30
+
26
31
  The utility can also add skeletons for tests end executables
27
32
  <i>after</i> the project generation.
28
33
 
@@ -39,7 +44,7 @@ exe NAME:: Add a new executable to an existing
39
44
  project. You may use this command only in
40
45
  the root project directory.
41
46
 
42
- test NAME:: Add a new test to an existing
47
+ test NAME:: Add a new minitest to an existing
43
48
  project. You may use this command only in
44
49
  the root project directory.
45
50
 
@@ -77,10 +82,10 @@ Add another CL util to the existing project:
77
82
  .../foobar
78
83
  % falsework exe foo
79
84
 
80
- (It will appear in bin/ subdirectory.)
85
+ (It will appear in <tt>bin/</tt> sub-directory.)
81
86
 
82
87
  Add another test file:
83
88
 
84
89
  % falsework test foo
85
90
 
86
- (It will appear in test/ subdirectory.)
91
+ (It will appear in <tt>test/</tt> sub-directory.)
data/Rakefile CHANGED
@@ -1,14 +1,36 @@
1
1
  # -*-ruby-*-
2
2
 
3
- require 'erb'
4
3
  require 'rake'
5
4
  require 'rake/gempackagetask'
6
5
  require 'rake/clean'
7
6
  require 'rake/rdoctask'
8
7
  require 'rake/testtask'
9
8
 
9
+ require_relative 'test/rake_git'
10
10
  NAME = 'falsework'
11
11
 
12
+ #
13
+ # Generate dynamic targets
14
+ #
15
+ require_relative 'test/rake_erb_templates'
16
+
17
+ ERB_DYN_SKELETON = erb_skeletons(NAME, 'naive')
18
+ ERB_DYN_SKELETON.each {|k, v|
19
+ file k => [v] do |t|
20
+ erb_make(NAME, t.name, t.prerequisites[0])
21
+ end
22
+ }
23
+
24
+ desc "Generate some erb templates for naive template"
25
+ task naive: ERB_DYN_SKELETON.keys
26
+
27
+ CLOBBER.concat ERB_DYN_SKELETON.keys
28
+ #pp CLOBBER
29
+
30
+ #
31
+ # Gem staff
32
+ #
33
+
12
34
  spec = Gem::Specification.new {|i|
13
35
  i.name = NAME
14
36
  i.version = `bin/#{i.name} -V`
@@ -18,13 +40,8 @@ spec = Gem::Specification.new {|i|
18
40
  i.homepage = "http://github.com/gromnitsky/#{i.name}"
19
41
  i.platform = Gem::Platform::RUBY
20
42
  i.required_ruby_version = '>= 1.9.2'
21
- i.files = FileList.new('bin/*', 'doc/*',
22
- 'etc/*', '[A-Z]*', 'test/**/*') {|f|
23
- f.exclude('test/templates/*')
24
- f.include('test/templates/.keep_me')
25
- f.include(Dir.glob('lib/**/*', File::FNM_DOTMATCH))
26
- f.exclude('lib/**/{.*,*}/.gitignore')
27
- }
43
+ i.files = git_ls('.')
44
+ i.files.concat ERB_DYN_SKELETON.keys.map {|i| i.sub(/#{Dir.pwd}\//, '') }
28
45
 
29
46
  i.executables = FileList['bin/*'].gsub(/^bin\//, '')
30
47
  i.default_executable = i.name
@@ -51,19 +68,3 @@ end
51
68
  Rake::TestTask.new do |i|
52
69
  i.test_files = FileList['test/test_*.rb']
53
70
  end
54
-
55
-
56
- #
57
- # Generate dynamic targets
58
- #
59
- require_relative 'test/find_erb_templates'
60
-
61
- ERB_DYN_SKELETON = erb_skeletons(NAME, 'naive')
62
- ERB_DYN_SKELETON.each {|k, v|
63
- file k => [v] do |t|
64
- erb_make(NAME, t.name, t.prerequisites[0])
65
- end
66
- }
67
-
68
- desc "Generate some erb templates for naive template"
69
- task naive: ERB_DYN_SKELETON.keys
data/bin/falsework CHANGED
@@ -47,15 +47,23 @@ when /exe|test/
47
47
  u.veputs(1, 'OK')
48
48
  }
49
49
  when 'new'
50
- Utils.errx(1, 'project name cannot start with a digit') if ARGV[1].strip[0] =~ /\d/
51
50
  if File.dirname(ARGV[1]) != '.'
52
51
  Dir.chdir(File.dirname(ARGV[1])) rescue Utils.errx(1, "cannot chdir to '#{File.dirname(ARGV[1])}'")
53
52
  ARGV[1] = File.basename ARGV[1]
54
53
  end
54
+ Utils.errx(1, 'project name cannot start with a digit') if ARGV[1].strip[0] =~ /\d/
55
55
 
56
56
  m = Mould.new(ARGV[1], $conf[:user], $conf[:email], $conf[:gecos])
57
57
  m.verbose = true if $conf[:verbose] > 0
58
58
  m.project_seed($conf[:template], nil)
59
+
60
+ # create a git repository
61
+ Dir.chdir ARGV[1]
62
+ u.veputs(1, "Creating a git repository in #{Dir.pwd}... __NNL__")
63
+ g = Git.init
64
+ g.add('.')
65
+ g.commit("Initial import from #{Falsework::Meta::NAME} #{Falsework::Meta::VERSION}.")
66
+ u.veputs(1, 'OK')
59
67
  else
60
68
  Utils.errx(1, "unknown command: " + ARGV[0])
61
69
  end
data/doc/NEWS.rdoc ADDED
@@ -0,0 +1,7 @@
1
+ === 0.1.2
2
+
3
+ Wed Dec 22 19:09:01 EET 2010
4
+
5
+ - Create a git repository automatically for a new project.
6
+
7
+ - Generate a gem file list from git ls-tree.
data/doc/README.rdoc CHANGED
@@ -13,16 +13,21 @@ Ruby.
13
13
 
14
14
  The falsework utility generates a scaffold which have:
15
15
 
16
- * <tt>gem</tt>, <tt>doc</tt>, <tt>test</tt> targers.
16
+ * auto-created git (but not github) project;
17
17
 
18
- * easy to use configuraton parser/loader; this includes scanning for:
18
+ * <tt>gem</tt> (a file list is pulled from the git repository, no more
19
+ missing files in gems!), <tt>doc</tt>, <tt>test</tt> targers;
19
20
 
20
- * env variables;
21
+ * easy to use configuraton parser/loader. This includes scanning for:
22
+
23
+ * env variable(s);
21
24
  * the flat YAML configuration file;
22
25
  * the command line.
23
26
 
24
27
  * an ability to pick up a user name & an email for a github project.
25
28
 
29
+ The generated project <b>is not dependent</b> on falsework.
30
+
26
31
  The utility can also add skeletons for tests end executables
27
32
  <i>after</i> the project generation.
28
33
 
@@ -39,7 +44,7 @@ exe NAME:: Add a new executable to an existing
39
44
  project. You may use this command only in
40
45
  the root project directory.
41
46
 
42
- test NAME:: Add a new test to an existing
47
+ test NAME:: Add a new minitest to an existing
43
48
  project. You may use this command only in
44
49
  the root project directory.
45
50
 
@@ -77,10 +82,10 @@ Add another CL util to the existing project:
77
82
  .../foobar
78
83
  % falsework exe foo
79
84
 
80
- (It will appear in bin/ subdirectory.)
85
+ (It will appear in <tt>bin/</tt> sub-directory.)
81
86
 
82
87
  Add another test file:
83
88
 
84
89
  % falsework test foo
85
90
 
86
- (It will appear in test/ subdirectory.)
91
+ (It will appear in <tt>test/</tt> sub-directory.)
data/doc/TODO.rdoc CHANGED
@@ -1,4 +1,10 @@
1
- - tests
2
- - more templates
1
+ + create a git repository automatically for a new project
2
+ + generate a gem file list from git ls-tree
3
+ + check for every generated file in naive test template generation
4
+ - an ability to upgrade project to a newest template
5
+ - more templates (a light one?)
6
+ - write a small tutorial 'how to write a template'
7
+ - release to rubygems.org (it must run test, pull to github, tag, create
8
+ gem & upload it)
3
9
  + generate utils.rb.erb from the current falsework utils.rb
4
10
  + the config in home dir
@@ -1,6 +1,6 @@
1
1
  module Falsework
2
2
  module Meta
3
3
  NAME = 'falsework'
4
- VERSION = '0.0.1'
4
+ VERSION = '0.1.2'
5
5
  end
6
6
  end
@@ -6,6 +6,8 @@ require 'rake/clean'
6
6
  require 'rake/rdoctask'
7
7
  require 'rake/testtask'
8
8
 
9
+ require_relative 'test/rake_git'
10
+
9
11
  spec = Gem::Specification.new {|i|
10
12
  i.name = '<%= @project %>'
11
13
  i.version = `bin/#{i.name} -V`
@@ -15,8 +17,7 @@ spec = Gem::Specification.new {|i|
15
17
  i.homepage = "http://github.com/<%= @user %>/#{i.name}"
16
18
  i.platform = Gem::Platform::RUBY
17
19
  i.required_ruby_version = '>= <%= RUBY_VERSION %>'
18
- i.files = FileList['lib/**/*', 'bin/*', 'doc/*',
19
- 'etc/*', '[A-Z]*', 'test/**/*']
20
+ i.files = git_ls('.')
20
21
 
21
22
  i.executables = FileList['bin/*'].gsub(/^bin\//, '')
22
23
  i.default_executable = i.name
@@ -0,0 +1,5 @@
1
+ === 0.0.1
2
+
3
+ <%= DateTime.now.rfc2822 %>
4
+
5
+ - Created a first skeleton.
@@ -200,4 +200,4 @@ module <%= @project.capitalize %>
200
200
  end # Utils
201
201
  end
202
202
 
203
- # Don't remove this: 2010-12-22T01:03:15+02:00 falsework 0.0.1
203
+ # Don't remove this: 2010-12-22T19:42:32+02:00 falsework 0.1.2
@@ -45,4 +45,4 @@ def cmd(c)
45
45
  '../bin/' + c
46
46
  end
47
47
 
48
- # Don't remove this: 2010-12-22T01:03:15+02:00 falsework 0.0.1
48
+ # Don't remove this: 2010-12-22T19:42:32+02:00 falsework 0.1.2
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+ # -*-ruby-*-
3
+ # :erb:
4
+
5
+ require 'git'
6
+ require 'pp'
7
+
8
+ # Return a list of files in a git repository _repdir_
9
+ def git_ls(repdir, ignore_some = true)
10
+ ignore = ['/?\.gitignore$']
11
+
12
+ r = []
13
+ g = Git.open repdir
14
+ g.ls_files.each {|i, v|
15
+ next if ignore_some && ignore.index {|ign| i.match(/#{ign}/) }
16
+ r << i
17
+ }
18
+ r
19
+ end
20
+
21
+ pp git_ls('.') if __FILE__ == $0
22
+
23
+ # Don't remove this: 2010-12-22T19:42:32+02:00 falsework 0.1.2
data/test/rake_git.rb ADDED
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ # -*-ruby-*-
3
+ # :erb:
4
+
5
+ require 'git'
6
+ require 'pp'
7
+
8
+ # Return a list of files in a git repository _repdir_
9
+ def git_ls(repdir, ignore_some = true)
10
+ ignore = ['/?\.gitignore$']
11
+
12
+ r = []
13
+ g = Git.open repdir
14
+ g.ls_files.each {|i, v|
15
+ next if ignore_some && ignore.index {|ign| i.match(/#{ign}/) }
16
+ r << i
17
+ }
18
+ r
19
+ end
20
+
21
+ pp git_ls('.') if __FILE__ == $0
data/test/test_exe.rb ADDED
@@ -0,0 +1,73 @@
1
+ require_relative 'helper'
2
+
3
+ class TestFalsework < MiniTest::Unit::TestCase
4
+ CMD = cmd('falsework') # get path to the exe & cd to tests directory
5
+
6
+ def setup
7
+ # this runs every time before test_*
8
+ end
9
+
10
+ def test_project_list
11
+ r = cmd_run "#{CMD} list"
12
+ assert_equal(0, r[0])
13
+ assert_match(/naive\n/, r[2])
14
+ end
15
+
16
+ def test_project_new
17
+ rm_rf 'templates/foo'
18
+ r = cmd_run "#{CMD} new templates/foo -v"
19
+ # pp r
20
+ assert_equal(0, r[0], r)
21
+
22
+ out = r[2].split("\n")
23
+ assert_match(/^Project path: \//, out[0])
24
+ assert_equal("L: README.rdoc => doc/README.rdoc", out[-2])
25
+ assert_match(/Creating a git repository in .+... OK/, out[-1])
26
+
27
+ tree = ["templates/foo/.git",
28
+ "templates/foo/.gitignore",
29
+ "templates/foo/README.rdoc",
30
+ "templates/foo/Rakefile",
31
+ "templates/foo/bin",
32
+ "templates/foo/bin/foo",
33
+ "templates/foo/doc",
34
+ "templates/foo/doc/LICENSE",
35
+ "templates/foo/doc/NEWS.rdoc",
36
+ "templates/foo/doc/README.rdoc",
37
+ "templates/foo/etc",
38
+ "templates/foo/etc/foo.yaml",
39
+ "templates/foo/lib",
40
+ "templates/foo/lib/foo",
41
+ "templates/foo/lib/foo/meta.rb",
42
+ "templates/foo/lib/foo/utils.rb",
43
+ "templates/foo/test",
44
+ "templates/foo/test/helper.rb",
45
+ "templates/foo/test/rake_git.rb",
46
+ "templates/foo/test/test_foo.rb"]
47
+
48
+ assert_equal(tree,
49
+ Dir.glob('templates/foo/**/*', File::FNM_DOTMATCH).sort.delete_if {|i|
50
+ i.match(/\.\.?$/) || i.match(/\.git[^i]/)
51
+ })
52
+
53
+ # add files
54
+ origdir = pwd
55
+ cd 'templates/foo'
56
+
57
+ r = cmd_run "../../#{CMD} exe qqq"
58
+ assert_equal(0, r[0])
59
+ assert_equal(true, File.executable?('bin/qqq'))
60
+
61
+ r = cmd_run "../../#{CMD} test qqq"
62
+ assert_equal(0, r[0])
63
+ assert_equal(true, File.exist?('test/test_qqq.rb'))
64
+
65
+ cd origdir
66
+ end
67
+
68
+ def test_project_invalid_name
69
+ r = cmd_run "#{CMD} new 123"
70
+ assert_equal(1, r[0])
71
+ assert_match(/project name cannot start with a digit/, r[1])
72
+ end
73
+ end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 0
8
7
  - 1
9
- version: 0.0.1
8
+ - 2
9
+ version: 0.1.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Alexander Gromnitsky
@@ -57,32 +57,37 @@ extra_rdoc_files:
57
57
  - doc/LICENSE
58
58
  - doc/README.rdoc
59
59
  - doc/TODO.rdoc
60
+ - doc/NEWS.rdoc
60
61
  files:
62
+ - README.rdoc
63
+ - Rakefile
61
64
  - bin/falsework
62
65
  - doc/LICENSE
66
+ - doc/NEWS.rdoc
63
67
  - doc/README.rdoc
64
68
  - doc/TODO.rdoc
65
69
  - etc/falsework.yaml
66
- - Rakefile
67
- - README.rdoc
68
- - test/helper.rb
69
- - test/test_utils.rb
70
- - test/find_erb_templates.rb
71
- - test/templates/.keep_me
72
70
  - lib/falsework/meta.rb
73
- - lib/falsework/utils.rb
71
+ - lib/falsework/mould.rb
72
+ - lib/falsework/templates/naive/.gitignore.erb
73
+ - lib/falsework/templates/naive/README.rdoc.erb
74
+ - lib/falsework/templates/naive/Rakefile.erb
75
+ - lib/falsework/templates/naive/bin/.@project..erb
74
76
  - lib/falsework/templates/naive/doc/LICENSE.erb
77
+ - lib/falsework/templates/naive/doc/NEWS.rdoc.erb
75
78
  - lib/falsework/templates/naive/doc/README.rdoc.erb
76
- - lib/falsework/templates/naive/Rakefile.erb
77
- - lib/falsework/templates/naive/test/helper.rb.erb
79
+ - lib/falsework/templates/naive/etc/.@project..yaml.erb
80
+ - lib/falsework/templates/naive/lib/.@project./meta.rb.erb
78
81
  - lib/falsework/templates/naive/test/test_.@project..rb.erb
82
+ - lib/falsework/utils.rb
83
+ - test/helper.rb
84
+ - test/rake_erb_templates.rb
85
+ - test/rake_git.rb
86
+ - test/templates/.keep_me
87
+ - test/test_exe.rb
79
88
  - lib/falsework/templates/naive/lib/.@project./utils.rb.erb
80
- - lib/falsework/templates/naive/lib/.@project./meta.rb.erb
81
- - lib/falsework/templates/naive/etc/.@project..yaml.erb
82
- - lib/falsework/templates/naive/bin/.@project..erb
83
- - lib/falsework/templates/naive/README.rdoc.erb
84
- - lib/falsework/templates/naive/.gitignore.erb
85
- - lib/falsework/mould.rb
89
+ - lib/falsework/templates/naive/test/helper.rb.erb
90
+ - lib/falsework/templates/naive/test/rake_git.rb.erb
86
91
  has_rdoc: true
87
92
  homepage: http://github.com/gromnitsky/falsework
88
93
  licenses: []
@@ -119,4 +124,4 @@ signing_key:
119
124
  specification_version: 3
120
125
  summary: A primitive scaffold generator for writing CLI programs in Ruby.
121
126
  test_files:
122
- - test/test_utils.rb
127
+ - test/test_exe.rb
data/test/test_utils.rb DELETED
@@ -1,47 +0,0 @@
1
- require_relative 'helper'
2
-
3
- class TestFalsework < MiniTest::Unit::TestCase
4
- CMD = cmd('falsework') # get path to the exe & cd to tests directory
5
-
6
- def setup
7
- # this runs every time before test_*
8
- end
9
-
10
- def test_project_list
11
- r = cmd_run "#{CMD} list"
12
- assert_equal(0, r[0])
13
- assert_match(/naive\n/, r[2])
14
- end
15
-
16
- def test_project_new
17
- rm_rf 'templates/foo'
18
- r = cmd_run "#{CMD} new templates/foo -v"
19
- # pp r
20
- assert_equal(0, r[0], r)
21
-
22
- # check for first & last lines only
23
- out = r[2].split("\n")
24
- assert_match(/^Project path: \//, out.first)
25
- assert_equal("L: README.rdoc => doc/README.rdoc", out.last)
26
-
27
- # add files
28
- origdir = pwd
29
- cd 'templates/foo'
30
-
31
- r = cmd_run "../../#{CMD} exe qqq"
32
- assert_equal(0, r[0])
33
- assert_equal(true, File.executable?('bin/qqq'))
34
-
35
- r = cmd_run "../../#{CMD} test qqq"
36
- assert_equal(0, r[0])
37
- assert_equal(true, File.exist?('test/test_qqq.rb'))
38
-
39
- cd origdir
40
- end
41
-
42
- def test_project_invalid_name
43
- r = cmd_run "#{CMD} new 123"
44
- assert_equal(1, r[0])
45
- assert_match(/project name cannot start with a digit/, r[1])
46
- end
47
- end