codefumes 0.1.10 → 0.2.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.
- data/Gemfile +19 -0
- data/Gemfile.lock +135 -0
- data/History.txt +12 -0
- data/LICENSE +20 -0
- data/Manifest.txt +40 -19
- data/README.txt +11 -29
- data/Rakefile +15 -10
- data/bin/fumes +214 -0
- data/config/website.yml +2 -0
- data/cucumber.yml +2 -0
- data/features/claiming_a_project.feature +46 -0
- data/features/deleting_a_project.feature +32 -0
- data/features/releasing_a_project.feature +50 -0
- data/features/step_definitions/cli_steps.rb +98 -0
- data/features/step_definitions/common_steps.rb +168 -0
- data/features/step_definitions/filesystem_steps.rb +19 -0
- data/features/storing_user_api_key.feature +41 -0
- data/features/support/common.rb +29 -0
- data/features/support/env.rb +24 -0
- data/features/support/matchers.rb +11 -0
- data/features/synchronizing_repository_with_project.feature +33 -0
- data/lib/codefumes.rb +10 -8
- data/lib/codefumes/api.rb +20 -11
- data/lib/codefumes/api/build.rb +139 -0
- data/lib/codefumes/api/claim.rb +74 -0
- data/lib/codefumes/api/commit.rb +150 -0
- data/lib/codefumes/api/payload.rb +93 -0
- data/lib/codefumes/api/project.rb +158 -0
- data/lib/codefumes/cli_helpers.rb +54 -0
- data/lib/codefumes/config_file.rb +3 -2
- data/lib/codefumes/errors.rb +21 -0
- data/lib/codefumes/exit_codes.rb +10 -0
- data/lib/codefumes/harvester.rb +113 -0
- data/lib/codefumes/quick_build.rb +43 -0
- data/lib/codefumes/quick_metric.rb +20 -0
- data/lib/codefumes/source_control.rb +137 -0
- data/lib/integrity_notifier/codefumes.haml +11 -0
- data/lib/integrity_notifier/codefumes.rb +62 -0
- data/spec/codefumes/{build_spec.rb → api/build_spec.rb} +14 -24
- data/spec/codefumes/{claim_spec.rb → api/claim_spec.rb} +42 -3
- data/spec/codefumes/{commit_spec.rb → api/commit_spec.rb} +34 -24
- data/spec/codefumes/api/payload_spec.rb +148 -0
- data/spec/codefumes/api/project_spec.rb +286 -0
- data/spec/codefumes/api_spec.rb +38 -15
- data/spec/codefumes/config_file_spec.rb +69 -13
- data/spec/codefumes/harvester_spec.rb +118 -0
- data/spec/codefumes/source_control_spec.rb +199 -0
- data/spec/codefumes_service_helpers.rb +23 -19
- data/spec/fixtures/sample_project_dirs/no_scm/description +4 -0
- data/spec/spec_helper.rb +1 -0
- data/tasks/cucumber.rake +11 -0
- metadata +145 -60
- data/bin/cf_claim_project +0 -9
- data/bin/cf_release_project +0 -10
- data/bin/cf_store_credentials +0 -10
- data/lib/cf_claim_project/cli.rb +0 -95
- data/lib/cf_release_project/cli.rb +0 -76
- data/lib/cf_store_credentials/cli.rb +0 -50
- data/lib/codefumes/build.rb +0 -131
- data/lib/codefumes/claim.rb +0 -57
- data/lib/codefumes/commit.rb +0 -144
- data/lib/codefumes/payload.rb +0 -103
- data/lib/codefumes/project.rb +0 -129
- data/spec/cf_claim_project/cli_spec.rb +0 -17
- data/spec/cf_release_project/cli_spec.rb +0 -41
- data/spec/cf_store_credentials/cli_spec.rb +0 -28
- data/spec/codefumes/payload_spec.rb +0 -155
- data/spec/codefumes/project_spec.rb +0 -274
data/Gemfile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
source :gemcutter
|
2
|
+
|
3
|
+
gem 'activesupport', '2.3.5'
|
4
|
+
gem 'aruba', '0.2.1'
|
5
|
+
gem 'caleb-chronic', '0.3.0'
|
6
|
+
gem 'crack', '0.1.8'
|
7
|
+
gem 'cucumber', '0.8.5'
|
8
|
+
gem 'fakeweb', '1.2.8'
|
9
|
+
gem 'gherkin', '2.1.5'
|
10
|
+
gem 'gli', '1.1.1'
|
11
|
+
gem 'grit', '2.0'
|
12
|
+
gem 'hanna', '0.1.12'
|
13
|
+
gem 'hoe', '2.5.0'
|
14
|
+
gem 'hoe-git', '1.3.0'
|
15
|
+
gem 'httparty', '0.6.1'
|
16
|
+
gem 'rake', '0.8.7'
|
17
|
+
gem 'rspec', '1.3.0'
|
18
|
+
gem 'rubigen', '1.5.5'
|
19
|
+
gem 'ruby-debug'
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
---
|
2
|
+
dependencies:
|
3
|
+
ruby-debug:
|
4
|
+
group:
|
5
|
+
- :default
|
6
|
+
version: ">= 0"
|
7
|
+
fakeweb:
|
8
|
+
group:
|
9
|
+
- :default
|
10
|
+
version: = 1.2.8
|
11
|
+
httparty:
|
12
|
+
group:
|
13
|
+
- :default
|
14
|
+
version: = 0.6.1
|
15
|
+
rake:
|
16
|
+
group:
|
17
|
+
- :default
|
18
|
+
version: = 0.8.7
|
19
|
+
rspec:
|
20
|
+
group:
|
21
|
+
- :default
|
22
|
+
version: = 1.3.0
|
23
|
+
grit:
|
24
|
+
group:
|
25
|
+
- :default
|
26
|
+
version: = 2.0
|
27
|
+
crack:
|
28
|
+
group:
|
29
|
+
- :default
|
30
|
+
version: = 0.1.8
|
31
|
+
gli:
|
32
|
+
group:
|
33
|
+
- :default
|
34
|
+
version: = 1.1.1
|
35
|
+
aruba:
|
36
|
+
group:
|
37
|
+
- :default
|
38
|
+
version: = 0.2.1
|
39
|
+
gherkin:
|
40
|
+
group:
|
41
|
+
- :default
|
42
|
+
version: = 2.1.5
|
43
|
+
caleb-chronic:
|
44
|
+
group:
|
45
|
+
- :default
|
46
|
+
version: = 0.3.0
|
47
|
+
hoe-git:
|
48
|
+
group:
|
49
|
+
- :default
|
50
|
+
version: = 1.3.0
|
51
|
+
hoe:
|
52
|
+
group:
|
53
|
+
- :default
|
54
|
+
version: = 2.5.0
|
55
|
+
cucumber:
|
56
|
+
group:
|
57
|
+
- :default
|
58
|
+
version: = 0.8.5
|
59
|
+
activesupport:
|
60
|
+
group:
|
61
|
+
- :default
|
62
|
+
version: = 2.3.5
|
63
|
+
hanna:
|
64
|
+
group:
|
65
|
+
- :default
|
66
|
+
version: = 0.1.12
|
67
|
+
rubigen:
|
68
|
+
group:
|
69
|
+
- :default
|
70
|
+
version: = 1.5.5
|
71
|
+
specs:
|
72
|
+
- rake:
|
73
|
+
version: 0.8.7
|
74
|
+
- activesupport:
|
75
|
+
version: 2.3.5
|
76
|
+
- aruba:
|
77
|
+
version: 0.2.1
|
78
|
+
- builder:
|
79
|
+
version: 2.1.2
|
80
|
+
- caleb-chronic:
|
81
|
+
version: 0.3.0
|
82
|
+
- columnize:
|
83
|
+
version: 0.3.1
|
84
|
+
- crack:
|
85
|
+
version: 0.1.8
|
86
|
+
- diff-lcs:
|
87
|
+
version: 1.1.2
|
88
|
+
- trollop:
|
89
|
+
version: 1.16.2
|
90
|
+
- gherkin:
|
91
|
+
version: 2.1.5
|
92
|
+
- json_pure:
|
93
|
+
version: 1.4.6
|
94
|
+
- term-ansicolor:
|
95
|
+
version: 1.0.5
|
96
|
+
- cucumber:
|
97
|
+
version: 0.8.5
|
98
|
+
- fakeweb:
|
99
|
+
version: 1.2.8
|
100
|
+
- gemcutter:
|
101
|
+
version: 0.6.1
|
102
|
+
- gli:
|
103
|
+
version: 1.1.1
|
104
|
+
- mime-types:
|
105
|
+
version: "1.16"
|
106
|
+
- grit:
|
107
|
+
version: 2.0.0
|
108
|
+
- haml:
|
109
|
+
version: 2.2.24
|
110
|
+
- rdoc:
|
111
|
+
version: 2.3.0
|
112
|
+
- hanna:
|
113
|
+
version: 0.1.12
|
114
|
+
- rubyforge:
|
115
|
+
version: 2.0.4
|
116
|
+
- hoe:
|
117
|
+
version: 2.5.0
|
118
|
+
- hoe-git:
|
119
|
+
version: 1.3.0
|
120
|
+
- httparty:
|
121
|
+
version: 0.6.1
|
122
|
+
- linecache:
|
123
|
+
version: "0.43"
|
124
|
+
- rspec:
|
125
|
+
version: 1.3.0
|
126
|
+
- rubigen:
|
127
|
+
version: 1.5.5
|
128
|
+
- ruby-debug-base:
|
129
|
+
version: 0.10.3
|
130
|
+
- ruby-debug:
|
131
|
+
version: 0.10.3
|
132
|
+
hash: 3b81c08f31e7b6fea59ef7782384b348c7d2609a
|
133
|
+
sources:
|
134
|
+
- Rubygems:
|
135
|
+
uri: http://gemcutter.org
|
data/History.txt
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
=== 0.2.0 / 2010-08-15
|
2
|
+
|
3
|
+
* Merged CodeFumesHarvester gem content into this gem...the
|
4
|
+
CodeFumesHarvester gem will go away now...
|
5
|
+
* Removed cf-based executables and replaced with single git-style
|
6
|
+
'fumes' executable (using gli gem...you should check it out)
|
7
|
+
* Refactored all classes to expect objects as arguments where it made
|
8
|
+
sense and was missing NOTE: Completely breaks previous API
|
9
|
+
* Added in cucumber for testing...mostly on 'fumes' executable
|
10
|
+
at this point
|
11
|
+
* Migrated to bundler for gem support
|
12
|
+
|
1
13
|
=== 0.1.10 / 21-APR-2010
|
2
14
|
|
3
15
|
* Updated all gem dependencies to use only gems released to gemcutter (vs. older
|
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 Tom Kersten
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
'Software'), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
17
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
18
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
19
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
20
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Manifest.txt
CHANGED
@@ -1,31 +1,50 @@
|
|
1
|
+
Gemfile
|
2
|
+
Gemfile.lock
|
1
3
|
History.txt
|
4
|
+
LICENSE
|
2
5
|
Manifest.txt
|
3
6
|
README.txt
|
4
7
|
Rakefile
|
5
|
-
bin/
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
bin/fumes
|
9
|
+
config/website.yml
|
10
|
+
cucumber.yml
|
11
|
+
features/claiming_a_project.feature
|
12
|
+
features/deleting_a_project.feature
|
13
|
+
features/releasing_a_project.feature
|
14
|
+
features/step_definitions/cli_steps.rb
|
15
|
+
features/step_definitions/common_steps.rb
|
16
|
+
features/step_definitions/filesystem_steps.rb
|
17
|
+
features/storing_user_api_key.feature
|
18
|
+
features/support/common.rb
|
19
|
+
features/support/env.rb
|
20
|
+
features/support/matchers.rb
|
21
|
+
features/synchronizing_repository_with_project.feature
|
11
22
|
lib/codefumes.rb
|
12
23
|
lib/codefumes/api.rb
|
13
|
-
lib/codefumes/build.rb
|
14
|
-
lib/codefumes/claim.rb
|
15
|
-
lib/codefumes/commit.rb
|
24
|
+
lib/codefumes/api/build.rb
|
25
|
+
lib/codefumes/api/claim.rb
|
26
|
+
lib/codefumes/api/commit.rb
|
27
|
+
lib/codefumes/api/payload.rb
|
28
|
+
lib/codefumes/api/project.rb
|
29
|
+
lib/codefumes/cli_helpers.rb
|
16
30
|
lib/codefumes/config_file.rb
|
17
|
-
lib/codefumes/
|
18
|
-
lib/codefumes/
|
19
|
-
|
20
|
-
|
21
|
-
|
31
|
+
lib/codefumes/errors.rb
|
32
|
+
lib/codefumes/exit_codes.rb
|
33
|
+
lib/codefumes/harvester.rb
|
34
|
+
lib/codefumes/quick_build.rb
|
35
|
+
lib/codefumes/quick_metric.rb
|
36
|
+
lib/codefumes/source_control.rb
|
37
|
+
lib/integrity_notifier/codefumes.haml
|
38
|
+
lib/integrity_notifier/codefumes.rb
|
39
|
+
spec/codefumes/api/build_spec.rb
|
40
|
+
spec/codefumes/api/claim_spec.rb
|
41
|
+
spec/codefumes/api/commit_spec.rb
|
42
|
+
spec/codefumes/api/payload_spec.rb
|
43
|
+
spec/codefumes/api/project_spec.rb
|
22
44
|
spec/codefumes/api_spec.rb
|
23
|
-
spec/codefumes/build_spec.rb
|
24
|
-
spec/codefumes/claim_spec.rb
|
25
|
-
spec/codefumes/commit_spec.rb
|
26
45
|
spec/codefumes/config_file_spec.rb
|
27
|
-
spec/codefumes/
|
28
|
-
spec/codefumes/
|
46
|
+
spec/codefumes/harvester_spec.rb
|
47
|
+
spec/codefumes/source_control_spec.rb
|
29
48
|
spec/codefumes_service_helpers.rb
|
30
49
|
spec/fixtures/build.xml
|
31
50
|
spec/fixtures/commit.xml
|
@@ -34,6 +53,8 @@ spec/fixtures/multiple_commits.xml
|
|
34
53
|
spec/fixtures/payload.xml
|
35
54
|
spec/fixtures/project.xml
|
36
55
|
spec/fixtures/project_update.xml
|
56
|
+
spec/fixtures/sample_project_dirs/no_scm/description
|
37
57
|
spec/spec.opts
|
38
58
|
spec/spec_helper.rb
|
59
|
+
tasks/cucumber.rake
|
39
60
|
tasks/rspec.rake
|
data/README.txt
CHANGED
@@ -12,7 +12,8 @@ CodeFumes.com[http://codefumes.com] is a service intended to help people
|
|
12
12
|
involved with software projects who are interested in tracking, sharing,
|
13
13
|
and reviewing metrics/information about a project in relation to the
|
14
14
|
commits of said project's repository. The site supports a small set of
|
15
|
-
'standard' metrics
|
15
|
+
'standard' metrics (# lines changed/commit, build status, build duration,
|
16
|
+
etc). Additionally, the service provides a simple method of supplying
|
16
17
|
and retrieving custom metrics, allowing users to gather any metric they
|
17
18
|
are interested in tracking.
|
18
19
|
|
@@ -21,10 +22,6 @@ CodeFumes.com[http://codefumes.com] API. The intention of the
|
|
21
22
|
gem is to simplify integration with CodeFumes.com for developers of
|
22
23
|
other libraries & and applications.
|
23
24
|
|
24
|
-
For an example of another library using the current features of this
|
25
|
-
gem, you can refer to the
|
26
|
-
'codefumes_harvester[http://codefumes.rubyforge.org/codefumes_harvester]' gem.
|
27
|
-
|
28
25
|
== FEATURES/PROBLEMS:
|
29
26
|
|
30
27
|
=== Features
|
@@ -38,6 +35,8 @@ gem, you can refer to the
|
|
38
35
|
using.
|
39
36
|
* Interfaces with the CodeFumes config file (used to track projects a
|
40
37
|
user has created on the site)
|
38
|
+
* Tracking & retrieving information about continuous integration server
|
39
|
+
builds (duration, status, etc).
|
41
40
|
|
42
41
|
=== Problems / Things to Note
|
43
42
|
|
@@ -48,7 +47,7 @@ gem, you can refer to the
|
|
48
47
|
require 'codefumes'
|
49
48
|
|
50
49
|
# Creating & finding a CodeFumes project
|
51
|
-
p = Project.
|
50
|
+
p = Project.create
|
52
51
|
found_p = Project.find(p.public_key)
|
53
52
|
p.public_key # => 'Abc3'
|
54
53
|
p.api_uri # => 'http://codefumes.com/api/v1/xml/Abc3'
|
@@ -61,7 +60,6 @@ gem, you can refer to the
|
|
61
60
|
# Custom attributes associated with a commit
|
62
61
|
c.custom_attributes[:coverage] # => "80"
|
63
62
|
|
64
|
-
|
65
63
|
# Payloads, used to break up large HTTP requests
|
66
64
|
content = Payload.prepare(payload_content)
|
67
65
|
content.each {|chunk| chunk.save}
|
@@ -69,34 +67,18 @@ gem, you can refer to the
|
|
69
67
|
== REQUIREMENTS:
|
70
68
|
|
71
69
|
* httparty (0.4.3)
|
70
|
+
* caleb-chronic (0.3.0)
|
71
|
+
* gli (1.1.1)
|
72
72
|
|
73
73
|
== INSTALL:
|
74
74
|
|
75
75
|
From Gemcutter:
|
76
76
|
|
77
|
-
|
77
|
+
gem install codefumes
|
78
78
|
|
79
79
|
== LICENSE:
|
80
80
|
|
81
|
-
|
82
|
-
|
83
|
-
Copyright (c) 2009 Cosyn Technologies, Inc.
|
84
|
-
|
85
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
86
|
-
a copy of this software and associated documentation files (the
|
87
|
-
'Software'), to deal in the Software without restriction, including
|
88
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
89
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
90
|
-
permit persons to whom the Software is furnished to do so, subject to
|
91
|
-
the following conditions:
|
92
|
-
|
93
|
-
The above copyright notice and this permission notice shall be
|
94
|
-
included in all copies or substantial portions of the Software.
|
81
|
+
Refer to the LICENSE file
|
95
82
|
|
96
|
-
|
97
|
-
|
98
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
99
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
100
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
101
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
102
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
83
|
+
== Contributors
|
84
|
+
* Joe Banks
|
data/Rakefile
CHANGED
@@ -1,4 +1,7 @@
|
|
1
|
-
|
1
|
+
require 'bundler'
|
2
|
+
Bundler.setup
|
3
|
+
|
4
|
+
%w[hoe rake rake/clean fileutils].each { |f| require f }
|
2
5
|
|
3
6
|
$LOAD_PATH.unshift('lib') unless $LOAD_PATH.include?('lib')
|
4
7
|
require 'lib/codefumes'
|
@@ -9,25 +12,27 @@ rescue LoadError
|
|
9
12
|
require 'rake/rdoctask'
|
10
13
|
end
|
11
14
|
|
12
|
-
# Load in the
|
15
|
+
# Load in the metric_fu gem if available so we can collect metrics
|
13
16
|
begin
|
14
17
|
require "metric_fu"
|
15
|
-
require "codefumes_harvester"
|
16
18
|
rescue LoadError
|
17
19
|
end
|
18
20
|
|
19
|
-
Hoe.plugin :website
|
20
21
|
Hoe.plugin :git
|
21
22
|
|
22
23
|
$hoe = Hoe.spec('codefumes') do
|
23
24
|
self.summary = "A client-side implementation of the CodeFumes.com API."
|
24
|
-
self.extra_dev_deps = [['metric_fu', "
|
25
|
-
['rubigen', "
|
26
|
-
['fakeweb', "
|
25
|
+
self.extra_dev_deps = [['metric_fu', "1.3.0"],
|
26
|
+
['rubigen', "1.5.5"],
|
27
|
+
['fakeweb', "1.2.8"],
|
28
|
+
['activesupport', "2.3.5"],
|
29
|
+
['rspec', ">= 1.2.6"],
|
30
|
+
['cucumber', "0.8.5"],
|
31
|
+
['aruba', "0.2.1"]
|
27
32
|
]
|
28
|
-
self.extra_deps = [['httparty','>= 0.
|
29
|
-
|
30
|
-
developer('
|
33
|
+
self.extra_deps = [['httparty','>= 0.6.1'], ['caleb-chronic', '>= 0.3.0'], ['gli', '1.1.1']]
|
34
|
+
self.extra_rdoc_files = ['LICENSE']
|
35
|
+
developer('Tom Kersten', 'tom.kersten@codefumes.com')
|
31
36
|
end
|
32
37
|
|
33
38
|
Dir['tasks/**/*.rake'].each { |t| load t}
|
data/bin/fumes
ADDED
@@ -0,0 +1,214 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$: << File.expand_path(File.dirname(__FILE__) + '/../lib')
|
3
|
+
|
4
|
+
require 'codefumes'
|
5
|
+
require 'codefumes/cli_helpers'
|
6
|
+
|
7
|
+
begin
|
8
|
+
require 'gli'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rubygems'
|
11
|
+
gem 'gli'
|
12
|
+
require 'gli'
|
13
|
+
end
|
14
|
+
|
15
|
+
include GLI
|
16
|
+
include CodeFumes
|
17
|
+
include CodeFumes::CLIHelpers
|
18
|
+
|
19
|
+
|
20
|
+
desc 'Synchronize local master branch history with a CodeFumes project'
|
21
|
+
command :sync do |c|
|
22
|
+
c.desc 'Public key of CodeFumes project'
|
23
|
+
c.arg_name 'pub-key-here'
|
24
|
+
c.default_value nil
|
25
|
+
c.flag [:p,:public_key]
|
26
|
+
|
27
|
+
c.desc 'API key of CodeFumes project'
|
28
|
+
c.arg_name 'api-key-here'
|
29
|
+
c.default_value nil
|
30
|
+
c.flag [:a,:api_key]
|
31
|
+
|
32
|
+
c.action do |global_options,options,args|
|
33
|
+
harvester = Harvester.new(:public_key => options[:p], :private_key => options[:a])
|
34
|
+
|
35
|
+
if (results = harvester.publish_data!) == false
|
36
|
+
puts "Error syncing with CodeFumes project. Please try again."
|
37
|
+
exit(1)
|
38
|
+
else
|
39
|
+
if results.empty?
|
40
|
+
puts "Local repository is in sync with server. No updates posted."
|
41
|
+
else
|
42
|
+
puts "Successfully saved #{results[:successful_count]} of #{results[:total_count]} payloads."
|
43
|
+
puts "Project saved to CodeFumes.com. Visit #{harvester.short_uri}"
|
44
|
+
end
|
45
|
+
puts "Exiting."
|
46
|
+
puts
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
desc 'Associate project(s) with your CodeFumes.com user account'
|
52
|
+
long_desc <<-DESC
|
53
|
+
Claiming a project links the specified key stored in the project
|
54
|
+
repository (or the key specified as an argument) with the account
|
55
|
+
credentials stored in your CodeFumes config file.
|
56
|
+
DESC
|
57
|
+
command :claim do |c|
|
58
|
+
c.desc 'Public key of CodeFumes project'
|
59
|
+
c.arg_name 'pub-key-here'
|
60
|
+
c.default_value nil
|
61
|
+
c.flag [:public_key, :p]
|
62
|
+
|
63
|
+
c.desc 'Claim all projects listed in your CodeFumes config file'
|
64
|
+
c.switch [:all, :a]
|
65
|
+
|
66
|
+
c.action do |global_options, options, args|
|
67
|
+
issue_project_commands("Claiming", public_keys_specified(options)) do |project|
|
68
|
+
wrap_with_standard_feedback(project) {project.claim}
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
desc "'Unclaim' project(s) on CodeFumes.com...relinquishing ownership"
|
74
|
+
long_desc <<-DESC
|
75
|
+
Releasing a project relinquishes ownership of the project...removing
|
76
|
+
it from your account and making it available for others to claim
|
77
|
+
ownership of (assuming they have the project's private key). Only
|
78
|
+
the 'owner' of a project can release it. Also note that this does
|
79
|
+
NOT delete any data associated with the project. To delete a project
|
80
|
+
and all associated data, use 'fumes delete'.
|
81
|
+
DESC
|
82
|
+
command :release do |c|
|
83
|
+
c.desc 'Public key of CodeFumes project'
|
84
|
+
c.arg_name 'pub-key-here'
|
85
|
+
c.default_value nil
|
86
|
+
c.flag [:public_key, :p]
|
87
|
+
|
88
|
+
c.desc 'Release all projects listed in your CodeFumes config file'
|
89
|
+
c.switch [:all, :a]
|
90
|
+
|
91
|
+
c.action do |global_options, options, args|
|
92
|
+
issue_project_commands("Releasing", public_keys_specified(options)) do |project|
|
93
|
+
wrap_with_standard_feedback(project) {project.release}
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
desc 'Delete project(s) on CodeFumes.com'
|
99
|
+
long_desc <<-DESC
|
100
|
+
Deleting a project will remove the project and all associated data
|
101
|
+
from CodeFumes.com. If the command is issued inside an existing
|
102
|
+
CodeFumes project, no flags are required. Note that this action
|
103
|
+
can't be reverted.
|
104
|
+
DESC
|
105
|
+
command :delete do |c|
|
106
|
+
c.desc 'Public key of CodeFumes project'
|
107
|
+
c.arg_name 'pub-key-here'
|
108
|
+
c.default_value nil
|
109
|
+
c.flag [:public_key, :p]
|
110
|
+
|
111
|
+
c.desc 'Delete all projects listed in your CodeFumes config file'
|
112
|
+
c.switch [:all, :a]
|
113
|
+
|
114
|
+
c.action do |global_options, options, args|
|
115
|
+
issue_project_commands("Deleting", public_keys_specified(options)) do |project|
|
116
|
+
wrap_with_standard_feedback(project) {project.delete}
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
desc 'Store (or clear) your api-key in the CodeFumes config file'
|
122
|
+
command :'api-key'do |c|
|
123
|
+
c.desc 'Clear the API key currently stored in your CodeFumes config file'
|
124
|
+
c.default_value false
|
125
|
+
c.switch [:clear, :c]
|
126
|
+
|
127
|
+
c.action do |global_options, options, args|
|
128
|
+
if !options[:clear] && args.empty?
|
129
|
+
raise Errors::NoApiKeySpecified
|
130
|
+
end
|
131
|
+
|
132
|
+
api_key = options[:clear] ? nil : args.first
|
133
|
+
ConfigFile.save_credentials(api_key)
|
134
|
+
|
135
|
+
if options[:clear]
|
136
|
+
puts "Your API key has been removed from your CodeFumes config file."
|
137
|
+
else
|
138
|
+
puts "Your API key has been saved to your CodeFumes config file."
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
desc "Open project page in your default browser (requires 'launchy' gem)"
|
144
|
+
command :open do |c|
|
145
|
+
c.desc 'Public key of CodeFumes project to open'
|
146
|
+
c.arg_name 'pub-key-here'
|
147
|
+
c.default_value nil
|
148
|
+
c.flag [:public_key, :p]
|
149
|
+
|
150
|
+
c.action do |global_options, options, args|
|
151
|
+
msg = 'Opening CodeFumes project page'
|
152
|
+
issue_project_commands(msg, public_keys_specified(options)) do |project|
|
153
|
+
open_in_browser project.short_uri
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
pre do |global,command,options,args|
|
159
|
+
unless API.mode?(:production) || command_doesnt_use_api?(command)
|
160
|
+
print_api_mode_notification
|
161
|
+
end
|
162
|
+
true
|
163
|
+
end
|
164
|
+
|
165
|
+
post do |global,command,options,args|
|
166
|
+
end
|
167
|
+
|
168
|
+
on_error do |exception|
|
169
|
+
case exception
|
170
|
+
when CodeFumes::Errors::UnsupportedScmToolError
|
171
|
+
puts "Unsupported repository type. Exiting..."
|
172
|
+
exit(ExitCodes::UNSUPPORTED_SCM)
|
173
|
+
when CodeFumes::Errors::UnknownProjectError
|
174
|
+
msg = "Could not find specified project on CodeFumes. "
|
175
|
+
msg << "Please verify the key and try again. Exiting..."
|
176
|
+
puts msg
|
177
|
+
exit(ExitCodes::PROJECT_NOT_FOUND)
|
178
|
+
when CodeFumes::Errors::NoUserApiKeyError
|
179
|
+
msg = "Unable to load an account API key from "
|
180
|
+
msg << "your CodeFumes config file.\n"
|
181
|
+
msg << "Log into your CodeFumes account, grab your API key, and run:\n"
|
182
|
+
msg << "\tfumes setup YOUR-API-KEY-HERE\n\n"
|
183
|
+
msg << "Exiting."
|
184
|
+
puts msg
|
185
|
+
exit(ExitCodes::NO_USER_CREDENTIALS)
|
186
|
+
when CodeFumes::Errors::InsufficientCredentials
|
187
|
+
msg = "The API key in your CodeFumes config file is not "
|
188
|
+
msg << "associated with the specified project. Please verify "
|
189
|
+
msg << "your API key is identical to what is listed on your "
|
190
|
+
msg << "CodeFumes.com account page"
|
191
|
+
msg << "Exiting."
|
192
|
+
puts msg
|
193
|
+
exit(ExitCodes::INCORRECT_USER_CREDENTIALS)
|
194
|
+
when Errors::NoApiKeySpecified
|
195
|
+
puts "No API key specified. To clear your api-key, use the '-c/--clear' flag.\nExiting."
|
196
|
+
exit(ExitCodes::NO_API_KEY_SPECIFIED)
|
197
|
+
when Errors::MissingLaunchyGem
|
198
|
+
puts ""
|
199
|
+
puts ""
|
200
|
+
puts "Sorry, you need to install launchy: `gem install launchy`"
|
201
|
+
puts "Exiting."
|
202
|
+
exit(ExitCodes::MISSING_DEPENDENCY)
|
203
|
+
when RuntimeError
|
204
|
+
# allow default handler to take over when invalid arguments are passed in
|
205
|
+
else
|
206
|
+
puts "An unknown exception occurred ('#{exception.class.to_s}--#{exception}')."
|
207
|
+
puts "Backtrace:\n#{exception.backtrace}')."
|
208
|
+
puts "Exiting..."
|
209
|
+
exit(ExitCodes::UNKNOWN)
|
210
|
+
end
|
211
|
+
true
|
212
|
+
end
|
213
|
+
|
214
|
+
GLI.run(ARGV)
|