mtm 1.0.3 → 2.0.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/README.md +15 -23
- data/lib/mtm/config.rb +2 -2
- data/lib/mtm/mtm.rb +20 -22
- data/lib/mtm/utils.rb +32 -0
- data/lib/mtm/version.rb +1 -1
- metadata +18 -2
data/README.md
CHANGED
@@ -1,28 +1,17 @@
|
|
1
1
|
# Mtm
|
2
2
|
|
3
|
-
|
3
|
+
Timecard solution for a day's work information
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
And then execute:
|
12
|
-
|
13
|
-
$ bundle
|
14
|
-
|
15
|
-
Or install it yourself as:
|
16
|
-
|
17
|
-
$ gem install mtm
|
7
|
+
the default environment is tuby 1.9.3
|
8
|
+
Opens your teminal and input:
|
9
|
+
|
10
|
+
$gem install mtm
|
18
11
|
|
19
12
|
## Usage
|
20
13
|
|
21
|
-
|
22
|
-
|
23
|
-
1. Opens your teminal and input:$: gem install mtm
|
24
|
-
|
25
|
-
2. Opens your teminal and input: tm -p 'Project name' -c 'Change name' -h 8 -d 'Tested some pages' -u bruce.yue:password
|
14
|
+
Opens your teminal and input: tm -p 'Project name' -c 'Change name' -h 8 -d 'Tested some pages' -u bruce.yue:password
|
26
15
|
The default hours is 8 and default description is "Tested some pages and fixed some bugs."
|
27
16
|
If step 2 have been done, '-u' is not required in the step 3.
|
28
17
|
For example:
|
@@ -37,10 +26,13 @@ How to use this script?
|
|
37
26
|
$: at 9pm today tm -p 'Peak Development' -h 6 -d 'Added exception process logic.'
|
38
27
|
|
39
28
|
|
40
|
-
##
|
29
|
+
## Config
|
41
30
|
|
42
|
-
1.
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
31
|
+
1. run
|
32
|
+
$ which ruby
|
33
|
+
The result will be '/Users/Jack/.rvm/gems/ruby-1.9.3-p327/bin/mtm'
|
34
|
+
2. go to
|
35
|
+
'/Users/Jack/.rvm/gems/ruby-1.9.3-p327/gems/mtm-1.0.4/lib/mtm'
|
36
|
+
3. config
|
37
|
+
config.rb
|
38
|
+
4. mtm -h for details
|
data/lib/mtm/config.rb
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
####################################################################################
|
4
4
|
# please fill these fields: ###
|
5
5
|
SF_USERNAME = '' # Salesforce user name ###
|
6
|
-
SF_PASSWORD = '' # Salesforce password
|
6
|
+
SF_PASSWORD = '' # Salesforce password ###
|
7
7
|
SF_SECURITY_TOKEN = '' # Salesforce password security token(option) ###
|
8
|
-
|
8
|
+
MOBILE_NUMBER = '' # 18988888888 you need to send the mobile to me and verify it.
|
9
9
|
|
10
10
|
|
11
11
|
############ option ################
|
data/lib/mtm/mtm.rb
CHANGED
@@ -3,6 +3,7 @@ require 'rubygems'
|
|
3
3
|
require 'restforce' # gem install restforce
|
4
4
|
require 'optparse/date'
|
5
5
|
require 'ruby-progressbar'
|
6
|
+
require 'twilio-ruby'
|
6
7
|
require 'utils'
|
7
8
|
require 'config'
|
8
9
|
|
@@ -28,6 +29,9 @@ options[:tm_description] = SF_TIMECARD_DESCRIPTION
|
|
28
29
|
sf_client_id = '3MVG9Y6d_Btp4xp6SWO6yPlUURnycVbOfuH7I_NH2bjaw0yeoguRatNzKRpEVaIvmX7TcQbVVjuQUCZ006pwN'
|
29
30
|
sf_client_secret = '5339957415407001741' # salesforce remote app client secret
|
30
31
|
user_name_suffix = '@pm.meginfo.com'
|
32
|
+
# twilio
|
33
|
+
account_sid = 'ACe81d15486c1f4568a9c981053bce307b'
|
34
|
+
auth_token = 'a502db99e86340c4967cb89f0714c4ce'
|
31
35
|
|
32
36
|
op = OptionParser.new do |opts|
|
33
37
|
opts.banner = <<-BANNER
|
@@ -133,18 +137,6 @@ if options[:tm_list]
|
|
133
137
|
abort
|
134
138
|
end
|
135
139
|
|
136
|
-
# Creates time card
|
137
|
-
def create_timecard(*args, client)
|
138
|
-
@tm = client.create!('TimeCard__c', Project__c: args[0],
|
139
|
-
Change__c: args[1],
|
140
|
-
Date__c: args[2],
|
141
|
-
Hours__c: args[3],
|
142
|
-
TeamMember__c: args[4],
|
143
|
-
Description__c: args[5])
|
144
|
-
puts
|
145
|
-
puts "Timecrad created successfully. Hour: '#{args[3]}', Project: '#{args[6]}'"
|
146
|
-
end
|
147
|
-
|
148
140
|
msg = 'Project not found'
|
149
141
|
begin
|
150
142
|
if options[:tm_project] != ''
|
@@ -174,15 +166,16 @@ if projects.first == nil
|
|
174
166
|
abort msg
|
175
167
|
end
|
176
168
|
|
177
|
-
|
178
|
-
|
169
|
+
is_success = true
|
170
|
+
if projects.size == 1
|
171
|
+
begin
|
179
172
|
team_member = client.query("select Id from TeamMember__c where Project__c = '#{projects.first.Id}' and User__c = '#{@sf_user_id}'");
|
180
173
|
if(options[:tm_change] == '' && options[:tm_c_number] == nil)
|
181
|
-
create_timecard(projects.first.Id, nil, options[:tm_date], options[:tm_hour],
|
174
|
+
Mtm.create_timecard(projects.first.Id, nil, options[:tm_date], options[:tm_hour],
|
182
175
|
team_member.first.Id, options[:tm_description], projects.first.Name, client)
|
183
176
|
else
|
184
177
|
if (projects.first.Changes__r != nil && projects.first.Changes__r.size == 1)
|
185
|
-
create_timecard(projects.first.Id, projects.first.Changes__r.first.Id,
|
178
|
+
Mtm.create_timecard(projects.first.Id, projects.first.Changes__r.first.Id,
|
186
179
|
options[:tm_date], options[:tm_hour], team_member.first.Id,
|
187
180
|
options[:tm_description], projects.first.Name, client)
|
188
181
|
elsif projects.first.Changes__r == nil
|
@@ -194,15 +187,20 @@ begin
|
|
194
187
|
projects.first.Changes__r.each { |c| puts c.Name }
|
195
188
|
end
|
196
189
|
end
|
197
|
-
|
190
|
+
rescue Exception => e
|
191
|
+
is_success = false
|
198
192
|
puts
|
199
|
-
puts
|
200
|
-
|
193
|
+
puts e.message
|
194
|
+
abort 'Failed to create timecard.'
|
201
195
|
end
|
202
|
-
|
196
|
+
else
|
197
|
+
is_success = false
|
203
198
|
puts
|
204
|
-
puts
|
205
|
-
|
199
|
+
puts 'Please select a project to continue:'
|
200
|
+
projects.each { |p| puts p.Name }
|
201
|
+
end
|
202
|
+
if is_success
|
203
|
+
Mtm.send_sms(projects.first.Name, options[:tm_hour], options[:tm_description], MOBILE_NUMBER, account_sid, auth_token)
|
206
204
|
end
|
207
205
|
|
208
206
|
@pb.finish
|
data/lib/mtm/utils.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'twilio-ruby'
|
2
|
+
|
1
3
|
module Mtm
|
2
4
|
extend self
|
3
5
|
|
@@ -9,5 +11,35 @@ module Mtm
|
|
9
11
|
Date.parse(d)
|
10
12
|
end
|
11
13
|
end
|
14
|
+
|
15
|
+
# Creates time card
|
16
|
+
def create_timecard(*args, client)
|
17
|
+
client.create!('TimeCard__c', Project__c: args[0],
|
18
|
+
Change__c: args[1],
|
19
|
+
Date__c: args[2],
|
20
|
+
Hours__c: args[3],
|
21
|
+
TeamMember__c: args[4],
|
22
|
+
Description__c: args[5])
|
23
|
+
puts
|
24
|
+
puts "Timecrad created successfully. Hour: '#{args[3]}', Project: '#{args[6]}'"
|
25
|
+
end
|
26
|
+
|
27
|
+
def send_sms(*args, mobile, account_sid, auth_token)
|
28
|
+
if !mobile.empty?
|
29
|
+
begin
|
30
|
+
# set up a client to talk to the Twilio REST API
|
31
|
+
@t_client = Twilio::REST::Client.new account_sid, auth_token
|
32
|
+
@t_client.account.sms.messages.create(
|
33
|
+
:from => '+13852158355',
|
34
|
+
:to => '+86'+mobile,
|
35
|
+
:body => "Project: #{args[0]}, Hours: #{args[1]}, Description: #{args[2]}"
|
36
|
+
)
|
37
|
+
rescue Exception => e
|
38
|
+
puts
|
39
|
+
puts e.message
|
40
|
+
abort 'Failed to send SMS to your mobile, please contact BruceYue to verify it!'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
12
44
|
|
13
45
|
end
|
data/lib/mtm/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mtm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir:
|
11
11
|
- bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-03-
|
13
|
+
date: 2013-03-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: restforce
|
@@ -44,6 +44,22 @@ dependencies:
|
|
44
44
|
- - ! '>='
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: 1.0.2
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: twilio-ruby
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.9.0
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 3.9.0
|
47
63
|
description: Timecard solution
|
48
64
|
email:
|
49
65
|
- bruce.yue@outlook.com
|