morale 0.1.0 → 0.1.1
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/features/support/env.rb +3 -1
- data/lib/morale/client.rb +6 -3
- data/lib/morale/connection_store.rb +58 -0
- data/lib/morale/credentials_store.rb +10 -14
- data/lib/morale/storage.rb +29 -0
- data/lib/morale.rb +1 -1
- data/morale.gemspec +6 -2
- data/spec/morale/connection_store_spec.rb +65 -0
- data/spec/morale/storage_spec.rb +44 -0
- data/spec/spec_helper.rb +4 -0
- metadata +7 -3
data/features/support/env.rb
CHANGED
@@ -3,4 +3,6 @@ require 'webmock/cucumber'
|
|
3
3
|
require 'aruba/cucumber'
|
4
4
|
|
5
5
|
ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
|
6
|
-
ENV['CREDENTIALS_LOCATION'] = "credentials"
|
6
|
+
ENV['CREDENTIALS_LOCATION'] = "credentials"
|
7
|
+
ENV['CONNECTION_LOCATION'] = "connection"
|
8
|
+
ENV['DEFAULT_BASE_URL'] = "lvh.me:3000"
|
data/lib/morale/client.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'httparty'
|
2
|
-
require
|
2
|
+
require 'json'
|
3
|
+
require 'morale/account'
|
4
|
+
require 'morale/connection_store'
|
3
5
|
|
4
6
|
module Morale
|
5
7
|
class Client
|
@@ -7,6 +9,8 @@ module Morale
|
|
7
9
|
class NotFound < RuntimeError; end
|
8
10
|
|
9
11
|
include HTTParty
|
12
|
+
extend Morale::ConnectionStore
|
13
|
+
|
10
14
|
format :json
|
11
15
|
|
12
16
|
API_VERSION = 'v1'
|
@@ -41,8 +45,7 @@ module Morale
|
|
41
45
|
def initialize(subdomain="", api_key="")
|
42
46
|
@api_key = api_key
|
43
47
|
@subdomain = subdomain
|
44
|
-
|
45
|
-
self.class.default_options[:base_uri] = HTTParty.normalize_base_uri("#{subdomain}#{"." unless subdomain.nil? || subdomain.empty?}lvh.me:3000/api/#{API_VERSION}")
|
48
|
+
self.class.default_options[:base_uri] = HTTParty.normalize_base_uri("#{subdomain}#{"." unless subdomain.nil? || subdomain.empty?}#{self.class.base_url}/api/#{API_VERSION}")
|
46
49
|
end
|
47
50
|
|
48
51
|
def projects
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'morale/storage'
|
2
|
+
require 'morale/platform'
|
3
|
+
|
4
|
+
module Morale
|
5
|
+
module ConnectionStore
|
6
|
+
include Morale::Storage
|
7
|
+
include Morale::Platform
|
8
|
+
|
9
|
+
def base_url
|
10
|
+
if @base_url.nil?
|
11
|
+
@base_url = read_connection
|
12
|
+
if @base_url.nil?
|
13
|
+
@base_url = default_base_url
|
14
|
+
self.write_connection
|
15
|
+
end
|
16
|
+
end
|
17
|
+
@base_url
|
18
|
+
end
|
19
|
+
|
20
|
+
def base_url=(value)
|
21
|
+
@base_url = value
|
22
|
+
self.write_connection
|
23
|
+
end
|
24
|
+
|
25
|
+
def location
|
26
|
+
ENV['CONNECTION_LOCATION'] || default_location
|
27
|
+
end
|
28
|
+
|
29
|
+
def location=(value)
|
30
|
+
ENV['CONNECTION_LOCATION'] = value
|
31
|
+
end
|
32
|
+
|
33
|
+
def default_location
|
34
|
+
"#{home_directory}/.morale/connection"
|
35
|
+
end
|
36
|
+
|
37
|
+
def delete_connection
|
38
|
+
self.delete
|
39
|
+
@base_url = nil
|
40
|
+
end
|
41
|
+
|
42
|
+
def read_connection
|
43
|
+
connection = self.read
|
44
|
+
connection.split("\n") if connection
|
45
|
+
end
|
46
|
+
|
47
|
+
def write_connection
|
48
|
+
self.write self.base_url
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def default_base_url
|
54
|
+
ENV['DEFAULT_BASE_URL'] || "teammorale.com"
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
@@ -1,7 +1,9 @@
|
|
1
|
+
require 'morale/storage'
|
1
2
|
require 'morale/platform'
|
2
3
|
|
3
4
|
module Morale
|
4
5
|
module CredentialsStore
|
6
|
+
include Morale::Storage
|
5
7
|
include Morale::Platform
|
6
8
|
|
7
9
|
attr_accessor :credentials
|
@@ -10,32 +12,26 @@ module Morale
|
|
10
12
|
ENV['CREDENTIALS_LOCATION'] || default_location
|
11
13
|
end
|
12
14
|
|
15
|
+
def location=(value)
|
16
|
+
ENV['CREDENTIALS_LOCATION'] = value
|
17
|
+
end
|
18
|
+
|
13
19
|
def default_location
|
14
20
|
"#{home_directory}/.morale/credentials"
|
15
21
|
end
|
16
22
|
|
17
23
|
def read_credentials
|
18
|
-
|
24
|
+
creds = self.read
|
25
|
+
creds.split("\n") if creds
|
19
26
|
end
|
20
27
|
|
21
28
|
def write_credentials
|
22
|
-
|
23
|
-
f = File.open(location, 'w')
|
24
|
-
f.puts self.credentials
|
25
|
-
f.close
|
26
|
-
set_credentials_permissions
|
29
|
+
self.write self.credentials
|
27
30
|
end
|
28
31
|
|
29
32
|
def delete_credentials
|
30
|
-
|
33
|
+
self.delete
|
31
34
|
@credentials = nil
|
32
35
|
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
def set_credentials_permissions
|
37
|
-
FileUtils.chmod 0700, File.dirname(location)
|
38
|
-
FileUtils.chmod 0600, location
|
39
|
-
end
|
40
36
|
end
|
41
37
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Morale
|
2
|
+
module Storage
|
3
|
+
|
4
|
+
attr_accessor :location
|
5
|
+
|
6
|
+
def delete
|
7
|
+
FileUtils.rm_f(location)
|
8
|
+
end
|
9
|
+
|
10
|
+
def read
|
11
|
+
File.exists?(location) and File.read(location)
|
12
|
+
end
|
13
|
+
|
14
|
+
def write(data)
|
15
|
+
FileUtils.mkdir_p(File.dirname(location))
|
16
|
+
f = File.open(location, 'w')
|
17
|
+
f.puts data
|
18
|
+
f.close
|
19
|
+
set_permissions
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def set_permissions
|
25
|
+
FileUtils.chmod 0700, File.dirname(location)
|
26
|
+
FileUtils.chmod 0600, location
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/morale.rb
CHANGED
data/morale.gemspec
CHANGED
@@ -5,8 +5,8 @@ Gem::Specification.new do |s|
|
|
5
5
|
s.rubygems_version = '1.3.5'
|
6
6
|
|
7
7
|
s.name = 'morale'
|
8
|
-
s.version = '0.1.
|
9
|
-
s.date = '2011-09-
|
8
|
+
s.version = '0.1.1'
|
9
|
+
s.date = '2011-09-30'
|
10
10
|
s.rubyforge_project = 'morale'
|
11
11
|
|
12
12
|
s.summary = "Command line interface to create & manage tickets on Morale."
|
@@ -56,14 +56,18 @@ Gem::Specification.new do |s|
|
|
56
56
|
lib/morale/commands/authorization.rb
|
57
57
|
lib/morale/commands/project.rb
|
58
58
|
lib/morale/commands/ticket.rb
|
59
|
+
lib/morale/connection_store.rb
|
59
60
|
lib/morale/credentials_store.rb
|
60
61
|
lib/morale/flow.rb
|
61
62
|
lib/morale/platform.rb
|
63
|
+
lib/morale/storage.rb
|
62
64
|
morale.gemspec
|
63
65
|
spec/morale/account_spec.rb
|
64
66
|
spec/morale/client_spec.rb
|
65
67
|
spec/morale/command_spec.rb
|
68
|
+
spec/morale/connection_store_spec.rb
|
66
69
|
spec/morale/credentials_store_spec.rb
|
70
|
+
spec/morale/storage_spec.rb
|
67
71
|
spec/spec_helper.rb
|
68
72
|
]
|
69
73
|
# = MANIFEST =
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'morale/connection_store'
|
3
|
+
|
4
|
+
describe Morale::ConnectionStore do
|
5
|
+
|
6
|
+
class Dummy; end
|
7
|
+
before (:each) do
|
8
|
+
@dummy = Dummy.new
|
9
|
+
@dummy.extend(Morale::ConnectionStore)
|
10
|
+
end
|
11
|
+
|
12
|
+
after (:each) do
|
13
|
+
@dummy.delete_connection
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "#location" do
|
17
|
+
it "should return the correct location of the connection file" do
|
18
|
+
@dummy.location.should == "#{ENV['HOME']}/.morale/connection"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#base_url" do
|
23
|
+
it "should store the default base url if it is not set" do
|
24
|
+
@dummy.base_url.should == "teammorale.com"
|
25
|
+
File.read(@dummy.location).should =~ /teammorale.com/
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return the environment variable for the default base url" do
|
29
|
+
@dummy.delete_connection
|
30
|
+
ENV['DEFAULT_BASE_URL'] = "somewhere-else.com"
|
31
|
+
@dummy.base_url.should == "somewhere-else.com"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should store the base url when it is set" do
|
35
|
+
@dummy.base_url = "somewhere-else.com"
|
36
|
+
File.read(@dummy.location).should =~ /somewhere-else.com/
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "#delete_connection" do
|
41
|
+
it "should clear the base_url field" do
|
42
|
+
ENV['DEFAULT_BASE_URL'] = nil
|
43
|
+
@dummy.base_url = "Blah!"
|
44
|
+
@dummy.delete_connection
|
45
|
+
@dummy.base_url.should == "teammorale.com"
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should delete the connection file" do
|
49
|
+
FileUtils.mkdir_p(File.dirname(@dummy.location))
|
50
|
+
f = File.open(@dummy.location, 'w')
|
51
|
+
f.puts "Blah!"
|
52
|
+
|
53
|
+
@dummy.delete_connection
|
54
|
+
File.exists?(@dummy.location).should be_false
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "#write_connection" do
|
59
|
+
it "should write data to the location of the connection file" do
|
60
|
+
@dummy.base_url = "Blah!"
|
61
|
+
@dummy.write_connection
|
62
|
+
File.read(@dummy.location).should =~ /Blah!/
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'morale/storage'
|
3
|
+
|
4
|
+
describe Morale::Storage do
|
5
|
+
|
6
|
+
class Dummy; end
|
7
|
+
before (:each) do
|
8
|
+
@dummy = Dummy.new
|
9
|
+
@dummy.extend(Morale::Storage)
|
10
|
+
@dummy.location = "tmp/morale/store"
|
11
|
+
end
|
12
|
+
|
13
|
+
after (:each) do
|
14
|
+
@dummy.delete
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "#delete" do
|
18
|
+
it "should delete the file" do
|
19
|
+
FileUtils.mkdir_p(File.dirname(@dummy.location))
|
20
|
+
f = File.open(@dummy.location, 'w')
|
21
|
+
f.puts "Blah!"
|
22
|
+
|
23
|
+
@dummy.delete
|
24
|
+
File.exists?(@dummy.location).should be_false
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#write" do
|
29
|
+
it "should write data to the location of the file" do
|
30
|
+
@dummy.write "Blah!"
|
31
|
+
File.read(@dummy.location).should =~ /Blah!/
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "#read" do
|
36
|
+
it "should read data from the location of the file" do
|
37
|
+
FileUtils.mkdir_p(File.dirname(@dummy.location))
|
38
|
+
f = File.open(@dummy.location, 'w')
|
39
|
+
f.puts "Blah!"
|
40
|
+
f.close
|
41
|
+
@dummy.read.should =~ /Blah!/
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Brilliant Fantastic
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-09-
|
17
|
+
date: 2011-09-30 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -105,14 +105,18 @@ files:
|
|
105
105
|
- lib/morale/commands/authorization.rb
|
106
106
|
- lib/morale/commands/project.rb
|
107
107
|
- lib/morale/commands/ticket.rb
|
108
|
+
- lib/morale/connection_store.rb
|
108
109
|
- lib/morale/credentials_store.rb
|
109
110
|
- lib/morale/flow.rb
|
110
111
|
- lib/morale/platform.rb
|
112
|
+
- lib/morale/storage.rb
|
111
113
|
- morale.gemspec
|
112
114
|
- spec/morale/account_spec.rb
|
113
115
|
- spec/morale/client_spec.rb
|
114
116
|
- spec/morale/command_spec.rb
|
117
|
+
- spec/morale/connection_store_spec.rb
|
115
118
|
- spec/morale/credentials_store_spec.rb
|
119
|
+
- spec/morale/storage_spec.rb
|
116
120
|
- spec/spec_helper.rb
|
117
121
|
has_rdoc: true
|
118
122
|
homepage: http://teammorale.com
|