agile-cli 0.0.14 → 0.0.15
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 +4 -4
- data/lib/agile/commands/events.rb +86 -0
- data/lib/agile/commands/projects.rb +63 -15
- data/lib/agile/commands/tickets.rb +87 -0
- data/lib/agile/constants.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da7e64a0b4a6304722aea1701cab922e81e381a2a1650ecfd2d8f1f7939be2ff
|
4
|
+
data.tar.gz: 61fbe335a433053cc089c1ca31eda08b15b4b46bf92fdceb8e2faaa87a3b13cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ab2a72ddaf79eedf8067a6f39efa41bb7d36859e00674fce37c0613ba88abe2be10f7b7d88ca9b8b024c932dc3e49758ac6ef1a24bb680222e8113ea6c5287b
|
7
|
+
data.tar.gz: bdcc3196486cd0cfae0ac88164b46ae726e0211da344b92539625941353f2d070697176191ec83df944cb890d3eded926b89c2b422e3c96beff6872a04616c02
|
@@ -0,0 +1,86 @@
|
|
1
|
+
module Agile
|
2
|
+
class Events < Thor
|
3
|
+
desc "create", "Add new event"
|
4
|
+
def create
|
5
|
+
cli = HighLine.new
|
6
|
+
event_description = cli.ask("description for event: ", String)
|
7
|
+
RestClient.post"#{CONFIG['current_remote']}/api/v1/events/",
|
8
|
+
event_type: type_cli, frequency: frequency_cli, date: date_cli,
|
9
|
+
start_time: start_time_cli, end_time: end_time_cli, desc: event_description,
|
10
|
+
current_user: CONFIG["current_user"]
|
11
|
+
say "Successfully added new event!"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "list", "Show all events"
|
15
|
+
def list
|
16
|
+
response = RestClient.get "#{CONFIG['current_remote']}/api/v1/events/"
|
17
|
+
say "<<Project events>>"
|
18
|
+
JSON.parse(response).each do |event|
|
19
|
+
if event["project_id"] == CONFIG["current_project_id"]
|
20
|
+
info = parse_info(event)
|
21
|
+
puts "#{event['event_type']} starting #{parse_date(event)} at #{info[:start]} and end at #{info[:end]}"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "show <date (yyyy-mm-dd)>", "Show event"
|
27
|
+
# :reek:ControlParameter
|
28
|
+
def show(date)
|
29
|
+
response = RestClient.get "#{CONFIG['current_remote']}/api/v1/events/"
|
30
|
+
JSON.parse(response).each { |event| puts_info(event) if event["date"] == date }
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def puts_info(event)
|
36
|
+
say "Type of event: #{event['event_type']}\nDescription: #{event['description']}"
|
37
|
+
say "Start at #{norm_time(event['start_time'])}\nEnd at #{norm_time(event['end_time'])}"
|
38
|
+
puts ""
|
39
|
+
end
|
40
|
+
|
41
|
+
def parse_info(event)
|
42
|
+
{ start: norm_time(event["start_time"]),
|
43
|
+
end: norm_time(event["end_time"]) }
|
44
|
+
end
|
45
|
+
|
46
|
+
def parse_date(event)
|
47
|
+
Date.parse(event["date"]).strftime("%d %B")
|
48
|
+
end
|
49
|
+
|
50
|
+
def norm_time(param)
|
51
|
+
Time.parse(param).strftime("%I:%M")
|
52
|
+
end
|
53
|
+
|
54
|
+
def type_cli
|
55
|
+
cli = HighLine.new
|
56
|
+
puts "0 - scrum\n1 - retro\n2 - planning\n3 - review"
|
57
|
+
cli.ask("Choose type of event (select number): ", Integer)
|
58
|
+
end
|
59
|
+
|
60
|
+
def frequency_cli
|
61
|
+
cli = HighLine.new
|
62
|
+
say "0 - daily\n1 - weekly\n2 - monthly\n3 - not regular"
|
63
|
+
cli.ask("Choose frequency for event: ", Integer)
|
64
|
+
end
|
65
|
+
|
66
|
+
def date_cli
|
67
|
+
cli = HighLine.new
|
68
|
+
cli.ask("Select data for event (yyyy.mm.dd): ", String)
|
69
|
+
end
|
70
|
+
|
71
|
+
def start_time_cli
|
72
|
+
cli = HighLine.new
|
73
|
+
cli.ask("Select start time for event (hh:mm): ", String)
|
74
|
+
end
|
75
|
+
|
76
|
+
def end_time_cli
|
77
|
+
cli = HighLine.new
|
78
|
+
cli.ask("Select end time for event (hh:mm): ", String)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
class CLI < Thor
|
83
|
+
desc Rainbow("events SUBCOMMAND ...ARGS").cornflower, Rainbow("Command for work with events").darkgoldenrod
|
84
|
+
subcommand "events", Events
|
85
|
+
end
|
86
|
+
end
|
@@ -19,10 +19,22 @@ module Agile
|
|
19
19
|
response = RestClient.get "#{CONFIG['current_remote']}/api/v1/userproject/#{CONFIG['current_user']}"
|
20
20
|
say Rainbow("<<Your Projects>>").cornflower
|
21
21
|
JSON.parse(response).each do |proj|
|
22
|
-
|
22
|
+
if proj.first.values[1] == CONFIG["current_project"]
|
23
|
+
say "* #{proj.first.values[1]}"
|
24
|
+
else
|
25
|
+
say proj.first.values[1]
|
26
|
+
end
|
23
27
|
end
|
24
28
|
end
|
25
29
|
|
30
|
+
desc "show <project>", "Show project"
|
31
|
+
def show(project)
|
32
|
+
response = RestClient.get "#{CONFIG['current_remote']}/api/v1/projects/#{project}"
|
33
|
+
row = JSON.parse(response)
|
34
|
+
say "Project: #{row['data']['attributes']['name']}"
|
35
|
+
say "Description: #{row['data']['attributes']['description']}"
|
36
|
+
end
|
37
|
+
|
26
38
|
desc "use <project>", "Select current project"
|
27
39
|
def use(project)
|
28
40
|
error_checking_projects
|
@@ -30,36 +42,72 @@ module Agile
|
|
30
42
|
project_search(response, project)
|
31
43
|
end
|
32
44
|
|
33
|
-
desc "update <project_name>
|
34
|
-
def update(project
|
45
|
+
desc "update <project_name> ", "Update project"
|
46
|
+
def update(project)
|
35
47
|
error_checking_projects
|
36
|
-
|
37
|
-
|
38
|
-
if
|
39
|
-
|
40
|
-
|
48
|
+
choice = HighLine.new
|
49
|
+
answer = choice.ask("Choose what you need to edit : name or description (N or D): ", String)
|
50
|
+
if answer == "N"
|
51
|
+
update_name(project)
|
52
|
+
elsif answer == "D"
|
53
|
+
update_description(project)
|
41
54
|
else
|
42
|
-
say "
|
55
|
+
say "Try again"
|
43
56
|
end
|
44
57
|
end
|
45
58
|
|
59
|
+
# def update(project, new_project)
|
60
|
+
# error_checking_projects
|
61
|
+
# resp = RestClient.get "#{CONFIG['current_remote']}/api/v1/userproject/#{CONFIG['current_user']}"
|
62
|
+
# pr_list = JSON.parse(resp).map { |array| array.map { |hash| hash.values_at("name").include?(project) } }
|
63
|
+
# if pr_list.include?([true])
|
64
|
+
# RestClient.put "#{CONFIG['current_remote']}/api/v1/projects/#{project}", name: project, new_name: new_project
|
65
|
+
# say "Updated from #{project} to #{new_project}"
|
66
|
+
# else
|
67
|
+
# say "Error"
|
68
|
+
# end
|
69
|
+
# end
|
70
|
+
|
46
71
|
private
|
47
72
|
|
73
|
+
def update_name(project)
|
74
|
+
choice = HighLine.new
|
75
|
+
new_project = choice.ask("Enter new name of project: ", String)
|
76
|
+
RestClient.put "#{CONFIG['current_remote']}/api/v1/projects/#{project}",
|
77
|
+
name: project, new_name: new_project, type: 1
|
78
|
+
say "Updated from #{project} to #{new_project}"
|
79
|
+
end
|
80
|
+
|
81
|
+
def update_description(project)
|
82
|
+
choice = HighLine.new
|
83
|
+
new_description = choice.ask("Enter new description for project: ", String)
|
84
|
+
RestClient.put "#{CONFIG['current_remote']}/api/v1/projects/#{project}",
|
85
|
+
name: project, new_description: new_description
|
86
|
+
say "Updated description to #{new_description}"
|
87
|
+
end
|
88
|
+
|
48
89
|
def error_checking_projects
|
49
90
|
abort "You haven't done init yet!" unless CONFIG["current_remote"]
|
50
91
|
abort "Please, log in!" unless CONFIG["current_user"]
|
51
92
|
end
|
52
93
|
|
53
94
|
def project_search(response, project)
|
54
|
-
info = JSON.parse(response).map
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
say "Your project: #{project}"
|
59
|
-
else
|
95
|
+
info = JSON.parse(response).map(&:values)
|
96
|
+
id_pr = info.map { |arr| arr[0] if arr[1] == project }
|
97
|
+
id_pr.delete_if(&:nil?)
|
98
|
+
if id_pr.empty?
|
60
99
|
say "Such project does not exist. Try again"
|
100
|
+
else
|
101
|
+
write_to_config(id_pr, project)
|
102
|
+
say "Your project: #{project}"
|
61
103
|
end
|
62
104
|
end
|
105
|
+
|
106
|
+
def write_to_config(id_pr, project)
|
107
|
+
CONFIG["current_project_id"] = id_pr.first
|
108
|
+
CONFIG["current_project"] = project
|
109
|
+
File.write("#{GEM_PATH}.config.json", JSON.generate(CONFIG))
|
110
|
+
end
|
63
111
|
end
|
64
112
|
|
65
113
|
class CLI < Thor
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module Agile
|
2
|
+
class Tickets < Thor
|
3
|
+
desc "create <ticket>", "Add new ticket"
|
4
|
+
def create(ticket)
|
5
|
+
ticket_name = ticket
|
6
|
+
cli = HighLine.new
|
7
|
+
ticket_description = cli.ask("description for ticket: ", String)
|
8
|
+
RestClient.post"#{CONFIG['current_remote']}/api/v1/tickets/",
|
9
|
+
project_id: CONFIG["current_project_id"], name: ticket_name,
|
10
|
+
user: CONFIG["current_user"], desc: ticket_description
|
11
|
+
say "Successfully added new ticket!"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "list", "Tickets list"
|
15
|
+
def list
|
16
|
+
response = RestClient.get "#{CONFIG['current_remote']}/api/v1/tickets/"
|
17
|
+
info = JSON.parse(response)
|
18
|
+
say Rainbow("<<All tickets>>").cornflower
|
19
|
+
info.each { |ticket| puts_tickets(info) if ticket["project_id"] == CONFIG["current_project_id"] }
|
20
|
+
end
|
21
|
+
|
22
|
+
desc "show <name_ticket>", "Show ticket"
|
23
|
+
def show(ticket)
|
24
|
+
response = RestClient.get "#{CONFIG['current_remote']}/api/v1/tickets/#{ticket}"
|
25
|
+
row = JSON.parse(response)
|
26
|
+
say "Ticket: #{row['data']['attributes']['name']}"
|
27
|
+
say "Description: #{row['data']['attributes']['description']}"
|
28
|
+
end
|
29
|
+
|
30
|
+
desc "update <ticket>", "update ticket"
|
31
|
+
def update(ticket)
|
32
|
+
choice = HighLine.new
|
33
|
+
answer = choice.ask("Choose what you need to edit : name or description (N or D): ", String)
|
34
|
+
if answer == "N"
|
35
|
+
update_name(ticket)
|
36
|
+
elsif answer == "D"
|
37
|
+
update_description(ticket)
|
38
|
+
else
|
39
|
+
say "Try again"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# desc "take <ticket>", "Take ticket"
|
44
|
+
# def take(ticket)
|
45
|
+
# # call api to take ticket
|
46
|
+
# CONFIG["tickets"].push(ticket)
|
47
|
+
# File.write("#{GEM_PATH}.config.json", JSON.generate(CONFIG))
|
48
|
+
# puts "you take ticket"
|
49
|
+
# end
|
50
|
+
#
|
51
|
+
# desc "my_list", "Your tickets list"
|
52
|
+
# def my_list
|
53
|
+
# CONFIG["tickets"].each do |name|
|
54
|
+
# if name == CONFIG["tickets"]
|
55
|
+
# say "* #{name}"
|
56
|
+
# else
|
57
|
+
# say name
|
58
|
+
# end
|
59
|
+
# end
|
60
|
+
# end
|
61
|
+
private
|
62
|
+
|
63
|
+
def puts_tickets(info)
|
64
|
+
info.each { |ticket| puts ticket["name"] }
|
65
|
+
end
|
66
|
+
|
67
|
+
def update_name(ticket)
|
68
|
+
choice = HighLine.new
|
69
|
+
new_ticket = choice.ask("Enter new name of ticket: ", String)
|
70
|
+
RestClient.put "#{CONFIG['current_remote']}/api/v1/tickets/#{ticket}", name: ticket, new_name: new_ticket, type: 1
|
71
|
+
say "Updated from #{ticket} to #{new_ticket}"
|
72
|
+
end
|
73
|
+
|
74
|
+
def update_description(ticket)
|
75
|
+
choice = HighLine.new
|
76
|
+
new_description = choice.ask("Enter new description of ticket: ", String)
|
77
|
+
RestClient.put "#{CONFIG['current_remote']}/api/v1/tickets/#{ticket}",
|
78
|
+
name: ticket, new_description: new_description
|
79
|
+
say "Updated description to #{new_description}"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
class CLI < Thor
|
84
|
+
desc Rainbow("tickets SUBCOMMAND ...ARGS").cornflower, Rainbow("Command for work with tickets").darkgoldenrod
|
85
|
+
subcommand "tickets", Tickets
|
86
|
+
end
|
87
|
+
end
|
data/lib/agile/constants.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: agile-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- rubizza-camp
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-08-
|
11
|
+
date: 2019-08-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|
@@ -235,6 +235,7 @@ files:
|
|
235
235
|
- lib/agile/assets/manifesto.txt
|
236
236
|
- lib/agile/commands/dod.rb
|
237
237
|
- lib/agile/commands/dor.rb
|
238
|
+
- lib/agile/commands/events.rb
|
238
239
|
- lib/agile/commands/hello.rb
|
239
240
|
- lib/agile/commands/help.rb
|
240
241
|
- lib/agile/commands/init.rb
|
@@ -243,6 +244,7 @@ files:
|
|
243
244
|
- lib/agile/commands/principles.rb
|
244
245
|
- lib/agile/commands/projects.rb
|
245
246
|
- lib/agile/commands/remotes.rb
|
247
|
+
- lib/agile/commands/tickets.rb
|
246
248
|
- lib/agile/commands/values.rb
|
247
249
|
- lib/agile/commands/version.rb
|
248
250
|
- lib/agile/constants.rb
|