gitnesse 0.12.6 → 1.0.0.beta2
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 +7 -0
- data/.travis.yml +6 -0
- data/Rakefile +6 -11
- data/bin/.keep +0 -0
- data/bin/gitnesse +2 -32
- data/config/gitnesse.rb.example +2 -4
- data/gitnesse.gemspec +22 -21
- data/lib/gitnesse/cli/helpers/config_helpers.rb +13 -0
- data/lib/gitnesse/cli/helpers/feature_helpers.rb +26 -0
- data/lib/gitnesse/cli/helpers/wiki_helpers.rb +53 -0
- data/lib/gitnesse/cli/task/help.rb +42 -0
- data/lib/gitnesse/cli/task/info.rb +29 -0
- data/lib/gitnesse/cli/task/pull.rb +26 -0
- data/lib/gitnesse/cli/task/push.rb +101 -0
- data/lib/gitnesse/cli/task/run.rb +85 -0
- data/lib/gitnesse/cli/task.rb +67 -0
- data/lib/gitnesse/cli.rb +55 -0
- data/lib/gitnesse/config.rb +68 -0
- data/lib/gitnesse/config_loader.rb +36 -0
- data/lib/gitnesse/dependency_checker.rb +86 -0
- data/lib/gitnesse/dir_manager.rb +37 -0
- data/lib/gitnesse/feature.rb +63 -0
- data/lib/gitnesse/feature_extractor.rb +29 -0
- data/lib/gitnesse/feature_transform.rb +30 -0
- data/lib/gitnesse/hooks/gitnesse.rb +5 -0
- data/lib/gitnesse/hooks.rb +30 -33
- data/lib/gitnesse/railtie.rb +3 -1
- data/lib/gitnesse/rake/tasks.rake +11 -0
- data/lib/gitnesse/tasks.rb +7 -4
- data/lib/gitnesse/version.rb +1 -1
- data/lib/gitnesse/wiki/page.rb +103 -0
- data/lib/gitnesse/wiki.rb +80 -143
- data/lib/gitnesse.rb +10 -102
- data/spec/lib/cli/task/help_spec.rb +34 -0
- data/spec/lib/cli/task/info_spec.rb +22 -0
- data/spec/lib/cli/task/pull_spec.rb +24 -0
- data/spec/lib/cli/task/push_spec.rb +24 -0
- data/spec/lib/cli_spec.rb +13 -0
- data/spec/lib/config_loader_spec.rb +46 -0
- data/spec/lib/config_spec.rb +61 -0
- data/spec/lib/dependency_checker_spec.rb +193 -0
- data/spec/lib/dir_manager_spec.rb +46 -0
- data/spec/lib/feature_extractor_spec.rb +30 -0
- data/spec/lib/feature_spec.rb +53 -0
- data/spec/lib/feature_transform_spec.rb +25 -0
- data/spec/lib/hooks_spec.rb +40 -0
- data/spec/lib/version_spec.rb +9 -0
- data/spec/lib/wiki/page_spec.rb +68 -0
- data/spec/lib/wiki_spec.rb +34 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/support/cli.rb +20 -0
- data/spec/support/example_config/gitnesse.rb +4 -0
- data/{test/test_helper.rb → spec/support/example_features/addition.feature} +0 -16
- data/spec/support/example_features/division.feature +10 -0
- data/spec/support/example_wiki_pages/developer_can_sync_features_to_code.md +29 -0
- data/spec/support_helper.rb +79 -0
- metadata +103 -109
- data/README.md +0 -85
- data/features/step_definitions/gitnesse_steps.rb +0 -54
- data/features/support/env.rb +0 -65
- data/features/sync_wiki_features_to_code.feature +0 -29
- data/lib/gitnesse/configuration.rb +0 -54
- data/lib/gitnesse/dependencies.rb +0 -39
- data/lib/gitnesse/features.rb +0 -38
- data/lib/gitnesse/git_config.rb +0 -39
- data/lib/gitnesse/support/hook.rb +0 -11
- data/lib/gitnesse/tasks.rake +0 -34
- data/test/lib/gitnesse/build_page_content_test.rb +0 -89
- data/test/lib/gitnesse/commit_info_test.rb +0 -16
- data/test/lib/gitnesse/configuration_defaults_test.rb +0 -11
- data/test/lib/gitnesse/configuration_to_hash_test.rb +0 -25
- data/test/lib/gitnesse/custom_branch_test.rb +0 -24
- data/test/lib/gitnesse/dependencies_check_test.rb +0 -73
- data/test/lib/gitnesse/extract_features_test.rb +0 -44
- data/test/lib/gitnesse/gather_test.rb +0 -30
- data/test/lib/gitnesse/load_feature_files_into_wiki_test.rb +0 -34
- data/test/lib/gitnesse/read_git_config_test.rb +0 -33
- data/test/lib/gitnesse/strip_results_test.rb +0 -52
- data/test/lib/gitnesse/version_test.rb +0 -7
- data/test/lib/gitnesse/wiki_append_results_test.rb +0 -50
- data/test/lib/gitnesse/write_file_test.rb +0 -18
- data/test/wiki_test_helper.rb +0 -11
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 319d9cc7127178d8e7fe987e28efec8c6229cfbe
|
4
|
+
data.tar.gz: 5568348a2109c7078ccfbd832b8957a7e96fdf0e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c6f71b9db9c3e09715e2a02f69a4a5b16fbdac250a620de68baf57251606363d0ef95e354e29c83200f2c064aecbd6a1a274185ea5b6b465100617551fb2c1c3
|
7
|
+
data.tar.gz: 080d0b3968b3ba38af8d3535d246c09f31d1ba5755584b792c6fb190f191e9b8e5c02d80ebae2321b10b89731332d34909da029c3e2b37aa45af4c7c7df745b1
|
data/.travis.yml
ADDED
data/Rakefile
CHANGED
@@ -1,13 +1,8 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
require 'rake/testtask'
|
4
|
-
require_relative 'lib/gitnesse'
|
5
|
-
require_relative 'lib/gitnesse/tasks'
|
1
|
+
require 'bundler'
|
2
|
+
require 'rspec/core/rake_task'
|
6
3
|
|
7
|
-
|
8
|
-
t.libs << 'lib/gitnesse'
|
9
|
-
t.test_files = FileList['test/lib/gitnesse/*_test.rb']
|
10
|
-
t.verbose = true
|
11
|
-
end
|
12
|
-
task :default => :test
|
4
|
+
Bundler::GemHelper.install_tasks
|
13
5
|
|
6
|
+
task default: :spec
|
7
|
+
|
8
|
+
RSpec::Core::RakeTask.new :spec
|
data/bin/.keep
ADDED
File without changes
|
data/bin/gitnesse
CHANGED
@@ -1,35 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require '
|
4
|
-
require 'gitnesse'
|
3
|
+
require 'gitnesse/cli'
|
5
4
|
|
6
|
-
Gitnesse::
|
7
|
-
|
8
|
-
if ARGV[0].nil?
|
9
|
-
Gitnesse.run
|
10
|
-
end
|
11
|
-
|
12
|
-
def print_help
|
13
|
-
puts "Gitnesse commands:"
|
14
|
-
puts " run: pull remote features from git-based wiki to local, and run Cucumber"
|
15
|
-
puts " push: push local features to git-based wiki"
|
16
|
-
puts " pull: pull remote features from git-based wiki to local"
|
17
|
-
puts " info: print current Gitnesse configuration"
|
18
|
-
end
|
19
|
-
|
20
|
-
case ARGV[0]
|
21
|
-
when "push"
|
22
|
-
Gitnesse.push
|
23
|
-
when "pull"
|
24
|
-
Gitnesse.pull
|
25
|
-
when "run"
|
26
|
-
Gitnesse.run
|
27
|
-
when "info"
|
28
|
-
puts Gitnesse.configuration.to_yaml
|
29
|
-
when "push_results"
|
30
|
-
Gitnesse.push_results
|
31
|
-
when "help"
|
32
|
-
print_help
|
33
|
-
else
|
34
|
-
print_help
|
35
|
-
end
|
5
|
+
Gitnesse::Cli.new.parse
|
data/config/gitnesse.rb.example
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
Gitnesse.
|
2
|
-
|
3
|
-
config.annotate_results = true
|
4
|
-
config.info = "Bob Martin's development laptop"
|
1
|
+
Gitnesse::Config.config do |c|
|
2
|
+
c.repository_url = "https://github.com/hybridgroup/gitnesse.wiki.git"
|
5
3
|
end
|
data/gitnesse.gemspec
CHANGED
@@ -1,25 +1,26 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'gitnesse/version'
|
2
|
+
require File.expand_path '../lib/gitnesse/version', __FILE__
|
5
3
|
|
6
|
-
Gem::Specification.new do |
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
4
|
+
Gem::Specification.new do |spec|
|
5
|
+
spec.name = "gitnesse"
|
6
|
+
spec.version = Gitnesse::VERSION
|
7
|
+
spec.authors = ["www.hybridgroup.com"]
|
8
|
+
spec.email = ["info@hybridgroup.com"]
|
9
|
+
spec.description = %q{Gitnesse lets you sync Cucumber feature stories
|
10
|
+
through a Git-based wiki, and display current
|
11
|
+
scenario results on wiki pages}
|
12
|
+
spec.summary = %q{Sync your feature stories using a Git-based wiki!}
|
13
|
+
spec.homepage = "https://github.com/hybridgroup/gitnesse"
|
14
|
+
spec.license = "MIT"
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_dependency "git", "~> 1.2.6"
|
23
|
+
spec.add_development_dependency "rake"
|
24
|
+
spec.add_development_dependency "rspec", "~> 2.14.1"
|
25
|
+
spec.add_development_dependency "cucumber", "~> 1.3.4"
|
25
26
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Gitnesse
|
2
|
+
class Cli
|
3
|
+
module ConfigHelpers
|
4
|
+
# Loads and checks Gitnesse configuration/dependencies
|
5
|
+
#
|
6
|
+
# Returns an instance of Gitnesse::Config
|
7
|
+
def load_and_check_config
|
8
|
+
Gitnesse::ConfigLoader.find_and_load
|
9
|
+
Gitnesse::DependencyChecker.new.check
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Gitnesse
|
2
|
+
class Cli
|
3
|
+
module FeatureHelpers
|
4
|
+
# Public: Creates or updates local cucumber features
|
5
|
+
#
|
6
|
+
# Returns nothing.
|
7
|
+
def create_or_update_local_features
|
8
|
+
puts " Creating and updating local features."
|
9
|
+
|
10
|
+
@feature_pages.each do |page|
|
11
|
+
if File.exists?(page.path)
|
12
|
+
puts " - Updating #{page.path}"
|
13
|
+
else
|
14
|
+
puts " - Creating #{page.path}"
|
15
|
+
FileUtils.mkdir_p page.relative_path
|
16
|
+
end
|
17
|
+
|
18
|
+
feature = Gitnesse::Feature.new(page.path)
|
19
|
+
features = Gitnesse::FeatureExtractor.extract!(page.read)
|
20
|
+
|
21
|
+
feature.write(features.join("\n\n"))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Gitnesse
|
2
|
+
class Cli
|
3
|
+
module WikiHelpers
|
4
|
+
# Public: Clones or updates local copy of remote git-based wiki. Also prints
|
5
|
+
# message indicating which operation is taking place
|
6
|
+
#
|
7
|
+
# Returns instance of Gitnesse::Wiki referring to new/updated local wiki
|
8
|
+
def clone_wiki
|
9
|
+
opts = {}
|
10
|
+
@dir = Gitnesse::DirManager.project_dir
|
11
|
+
|
12
|
+
unless Gitnesse::DirManager.project_dir_present?
|
13
|
+
Gitnesse::DirManager.make_project_dir
|
14
|
+
end
|
15
|
+
|
16
|
+
@wiki = Gitnesse::Wiki.new @config.repository_url, @dir
|
17
|
+
end
|
18
|
+
|
19
|
+
# Public: Removes existing features from local copy of remote wiki.
|
20
|
+
#
|
21
|
+
# Returns nothing.
|
22
|
+
def remove_existing_features
|
23
|
+
@wiki.remove_features
|
24
|
+
end
|
25
|
+
|
26
|
+
# Public: Commits wiki changes, and pushes changes to remote wiki.
|
27
|
+
#
|
28
|
+
# Returns nothing.
|
29
|
+
def commit_and_push_changes
|
30
|
+
puts " Commiting changes."
|
31
|
+
@wiki.commit
|
32
|
+
|
33
|
+
puts " Pushing changes to remote wiki."
|
34
|
+
@wiki.push
|
35
|
+
end
|
36
|
+
|
37
|
+
# Public: Extracts wiki pages that contain cucumber features.
|
38
|
+
#
|
39
|
+
# Returns an array of wiki pages containing features
|
40
|
+
def extract_features_from_wiki
|
41
|
+
unless @wiki.pages.any?
|
42
|
+
abort " Wiki contains no features."
|
43
|
+
end
|
44
|
+
|
45
|
+
puts " Extracting wiki pages containing features."
|
46
|
+
|
47
|
+
@feature_pages = @wiki.pages.select do |page|
|
48
|
+
Gitnesse::FeatureExtractor.contains_features? page.read
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
Gitnesse::Cli.task :help, nil do
|
2
|
+
def perform(name = nil)
|
3
|
+
return overview unless name
|
4
|
+
|
5
|
+
task = tasks_by_name[name]
|
6
|
+
abort "No help for task '#{name}'" unless task && task.help
|
7
|
+
|
8
|
+
puts task.help
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
def overview
|
13
|
+
puts <<-EOS
|
14
|
+
USAGE: gitnesse <task> [<args>]
|
15
|
+
|
16
|
+
The gitnesse tasks are:
|
17
|
+
EOS
|
18
|
+
|
19
|
+
tasks_to_show do |name, desc|
|
20
|
+
puts " #{name} #{desc}"
|
21
|
+
end
|
22
|
+
|
23
|
+
puts ''
|
24
|
+
puts "See 'gitnesse help <task>' for more information on a specific task."
|
25
|
+
end
|
26
|
+
|
27
|
+
def tasks_by_name
|
28
|
+
Gitnesse::Cli.tasks
|
29
|
+
end
|
30
|
+
|
31
|
+
def tasks
|
32
|
+
tasks_by_name.values.uniq
|
33
|
+
end
|
34
|
+
|
35
|
+
def tasks_to_show
|
36
|
+
size = tasks.map { |t| t.name.length }.max
|
37
|
+
tasks.sort_by(&:name).each do |task|
|
38
|
+
next unless task.desc
|
39
|
+
yield task.name.ljust(size), task.desc
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
Gitnesse::Cli.task :info do
|
2
|
+
desc "Prints current Gitnesse configuration"
|
3
|
+
|
4
|
+
def perform
|
5
|
+
Gitnesse::ConfigLoader.find_and_load
|
6
|
+
config = Gitnesse::Config.instance.to_h
|
7
|
+
size = config.keys.map(&:length).max
|
8
|
+
|
9
|
+
puts "Current Gitnesse Configuration:"
|
10
|
+
|
11
|
+
config.each do |key, value|
|
12
|
+
puts " #{key.to_s.rjust(size)} - #{value || "[not set]"}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
help do
|
17
|
+
<<-EOS
|
18
|
+
USAGE: gitnesse info
|
19
|
+
|
20
|
+
#{desc}
|
21
|
+
|
22
|
+
Prints the current Gitnesse configuration settings, including settings loaded
|
23
|
+
from gitnesse.rb configuration files.
|
24
|
+
|
25
|
+
Examples:
|
26
|
+
gitnesse list # will print current configuration
|
27
|
+
EOS
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
Gitnesse::Cli.task :pull do
|
2
|
+
desc "Pulls features from remote git-based wiki"
|
3
|
+
|
4
|
+
help do
|
5
|
+
<<-EOS
|
6
|
+
USAGE: gitnesse pull
|
7
|
+
|
8
|
+
#{desc}
|
9
|
+
|
10
|
+
Pulls the remote wiki, finds the feature files it contains, and updates the
|
11
|
+
relevant local features, creating new ones if necessary.
|
12
|
+
|
13
|
+
Examples:
|
14
|
+
gitnesse pull # will pull features from remote wiki
|
15
|
+
EOS
|
16
|
+
end
|
17
|
+
|
18
|
+
def perform
|
19
|
+
load_and_check_config
|
20
|
+
clone_wiki
|
21
|
+
extract_features_from_wiki
|
22
|
+
create_or_update_local_features
|
23
|
+
|
24
|
+
puts " Done."
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
Gitnesse::Cli.task :push do
|
2
|
+
desc "Pushes local features to remote git-based wiki"
|
3
|
+
|
4
|
+
help do
|
5
|
+
<<-EOS
|
6
|
+
USAGE: gitnesse push
|
7
|
+
|
8
|
+
#{desc}
|
9
|
+
|
10
|
+
Pushes the local features files to the remote git-based wiki, creating/updating
|
11
|
+
wiki pages as necessary.
|
12
|
+
|
13
|
+
Examples:
|
14
|
+
gitnesse push # will push local features to remote wiki
|
15
|
+
EOS
|
16
|
+
end
|
17
|
+
|
18
|
+
def perform
|
19
|
+
load_and_check_config
|
20
|
+
clone_wiki
|
21
|
+
remove_existing_features
|
22
|
+
collect_features
|
23
|
+
add_index_page
|
24
|
+
add_feature_index_pages_to_wiki
|
25
|
+
add_features_to_wiki
|
26
|
+
commit_and_push_changes
|
27
|
+
|
28
|
+
puts " Done."
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
def collect_features
|
33
|
+
puts " Collecting local features."
|
34
|
+
Dir.chdir @config.features_dir do
|
35
|
+
@features = Dir.glob("**/*.feature").each_with_object([]) do |f, a|
|
36
|
+
a << Gitnesse::Feature.new(f)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
unless @features.any?
|
41
|
+
abort " No local features found."
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def add_feature_index_pages_to_wiki
|
46
|
+
nested = @features.group_by(&:index_page)
|
47
|
+
nested.reject! { |k,v| k == 'features.md' }
|
48
|
+
|
49
|
+
if nested.any?
|
50
|
+
puts " Creating index pages:"
|
51
|
+
end
|
52
|
+
|
53
|
+
nested.each do |filename, features|
|
54
|
+
content = features.each_with_object("") do |f, s|
|
55
|
+
s << "- #{f.relative_link}\n"
|
56
|
+
end
|
57
|
+
|
58
|
+
puts " - #{filename}"
|
59
|
+
|
60
|
+
@wiki.add_page(filename, content)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def add_features_to_wiki
|
65
|
+
puts " Creating/updating wiki features:"
|
66
|
+
@features.each do |feature|
|
67
|
+
puts " - #{feature.wiki_filename}"
|
68
|
+
|
69
|
+
filename = feature.wiki_filename
|
70
|
+
content = Gitnesse::FeatureTransform.convert(feature.read)
|
71
|
+
@wiki.add_page(filename, content)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def add_index_page
|
76
|
+
filename = "features.md"
|
77
|
+
content = "# Features\n\n"
|
78
|
+
|
79
|
+
puts " Creating index page: #{filename}"
|
80
|
+
|
81
|
+
nested = @features.group_by(&:index_page)
|
82
|
+
|
83
|
+
if nested.key?("features.md") && nested["features.md"].any?
|
84
|
+
features = nested.delete("features.md")
|
85
|
+
|
86
|
+
features.each do |f|
|
87
|
+
content << "- #{f.relative_link}\n"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
nested.each do |folder, features|
|
92
|
+
content << "- **[[#{folder.gsub('.md', '')}|#{folder}]]**\n"
|
93
|
+
|
94
|
+
features.each do |f|
|
95
|
+
content << " - #{f.relative_link}\n"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
@wiki.add_page(filename, content)
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
Gitnesse::Cli.task :run do
|
2
|
+
desc "Pulls changes from remote git-based wiki, and runs Cucumber."
|
3
|
+
|
4
|
+
help do
|
5
|
+
<<-EOS
|
6
|
+
USAGE: gitnesse run
|
7
|
+
|
8
|
+
#{desc}
|
9
|
+
|
10
|
+
Pulls changed features from remote git-based wiki, runs Cucumber, and pushes
|
11
|
+
annotated results to the remote git-based wiki if the "annotate_results" setting
|
12
|
+
is enabled.
|
13
|
+
|
14
|
+
Examples:
|
15
|
+
gitnesse run # will pull changes, run cucumber, and annotate results
|
16
|
+
EOS
|
17
|
+
end
|
18
|
+
|
19
|
+
def perform
|
20
|
+
load_and_check_config
|
21
|
+
clone_wiki
|
22
|
+
extract_features_from_wiki
|
23
|
+
create_or_update_local_features
|
24
|
+
|
25
|
+
puts " Local features updated."
|
26
|
+
|
27
|
+
remove_existing_results_from_wiki
|
28
|
+
|
29
|
+
create_hooks
|
30
|
+
run_features
|
31
|
+
remove_hooks
|
32
|
+
|
33
|
+
push_annotated_results_to_wiki
|
34
|
+
|
35
|
+
puts " Done."
|
36
|
+
end
|
37
|
+
|
38
|
+
# Public: Removes existing Gitnesse results from all wiki pages
|
39
|
+
#
|
40
|
+
# Returns nothing
|
41
|
+
def remove_existing_results_from_wiki
|
42
|
+
@wiki.pages.each(&:remove_results) if @config.annotate_results
|
43
|
+
end
|
44
|
+
|
45
|
+
# Public: Installs Gitnesse hooks for Cucumber
|
46
|
+
#
|
47
|
+
# Returns nothing
|
48
|
+
def create_hooks
|
49
|
+
if @config.annotate_results
|
50
|
+
puts " Installing Gitnesse Cucumber hooks."
|
51
|
+
Gitnesse::Hooks.create!
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Public: Removes installed Gitnesse Cucumber hooks
|
56
|
+
#
|
57
|
+
# Returns nothing
|
58
|
+
def remove_hooks
|
59
|
+
if @config.annotate_results
|
60
|
+
puts " Removing Gitnesse Cucumber hooks."
|
61
|
+
Gitnesse::Hooks.destroy!
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# Public: Runs Cucumber features
|
66
|
+
#
|
67
|
+
# Returns nothing
|
68
|
+
def run_features
|
69
|
+
puts " Running cucumber."
|
70
|
+
puts ' -------------------', ''
|
71
|
+
system "cucumber #{@config.features_dir}"
|
72
|
+
puts ' -------------------', ''
|
73
|
+
end
|
74
|
+
|
75
|
+
# Public: Pushes features with annotations to remote wiki
|
76
|
+
#
|
77
|
+
# Returns nothing
|
78
|
+
def push_annotated_results_to_wiki
|
79
|
+
if @config.annotate_results
|
80
|
+
puts " Pushing annotated results to remote wiki."
|
81
|
+
@wiki.commit
|
82
|
+
@wiki.push
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
Dir["#{File.dirname(__FILE__)}/helpers/*.rb"].each { |f| require f }
|
2
|
+
|
3
|
+
module Gitnesse
|
4
|
+
class Cli
|
5
|
+
class Task
|
6
|
+
include Gitnesse::Cli::ConfigHelpers
|
7
|
+
include Gitnesse::Cli::FeatureHelpers
|
8
|
+
include Gitnesse::Cli::WikiHelpers
|
9
|
+
|
10
|
+
attr_accessor :out
|
11
|
+
|
12
|
+
class << self
|
13
|
+
attr_accessor :name
|
14
|
+
|
15
|
+
def desc(string = nil)
|
16
|
+
string ? @desc = string : @desc
|
17
|
+
end
|
18
|
+
|
19
|
+
def help
|
20
|
+
block_given? ? @help = yield : @help
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def initialize(out)
|
25
|
+
@out = out
|
26
|
+
@config = Gitnesse::Config.instance
|
27
|
+
end
|
28
|
+
|
29
|
+
def perform(*); end
|
30
|
+
def description; end
|
31
|
+
def help; end
|
32
|
+
|
33
|
+
private
|
34
|
+
def puts(*args)
|
35
|
+
out.puts *args
|
36
|
+
end
|
37
|
+
|
38
|
+
def print(*args)
|
39
|
+
out.print *args
|
40
|
+
end
|
41
|
+
|
42
|
+
def abort(*args)
|
43
|
+
out.puts *args
|
44
|
+
exit 1
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def tasks
|
49
|
+
@tasks ||= Hash[self.class.tasks.map { |name, t| [name, t.new(out)] }]
|
50
|
+
end
|
51
|
+
|
52
|
+
class << self
|
53
|
+
def task(*names, &block)
|
54
|
+
task = Class.new(Task, &block)
|
55
|
+
names.map!(&:to_s)
|
56
|
+
task.name = names.first
|
57
|
+
names.each { |name| tasks[name] = task }
|
58
|
+
end
|
59
|
+
|
60
|
+
def tasks
|
61
|
+
@tasks ||= {}
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
Dir[File.dirname(__FILE__) + "/task/*.rb"].each { |f| require(f) }
|
data/lib/gitnesse/cli.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'gitnesse'
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
require 'optparse/version'
|
5
|
+
|
6
|
+
require 'gitnesse/cli/task'
|
7
|
+
|
8
|
+
module Gitnesse
|
9
|
+
class Cli
|
10
|
+
attr_accessor :out, :parser
|
11
|
+
|
12
|
+
def initialize(out = STDOUT)
|
13
|
+
@out = out
|
14
|
+
setup_parser
|
15
|
+
end
|
16
|
+
|
17
|
+
def parse(args = ARGV)
|
18
|
+
parser.parse! args
|
19
|
+
|
20
|
+
arg = args.shift.to_s
|
21
|
+
|
22
|
+
if task = tasks[arg]
|
23
|
+
task.perform(*args)
|
24
|
+
else
|
25
|
+
abort "No such task."
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
def setup_parser
|
31
|
+
@parser = OptionParser.new do |o|
|
32
|
+
o.on_tail '-v', '--version' do
|
33
|
+
puts parser.ver
|
34
|
+
exit
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
parser.program_name = 'gitnesse'
|
39
|
+
parser.version = Gitnesse::VERSION
|
40
|
+
end
|
41
|
+
|
42
|
+
def print(*args)
|
43
|
+
out.print *args
|
44
|
+
end
|
45
|
+
|
46
|
+
def puts(*args)
|
47
|
+
out.puts *args
|
48
|
+
end
|
49
|
+
|
50
|
+
def abort(*args)
|
51
|
+
puts *args
|
52
|
+
exit 1
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|