agile-cli 0.0.12 → 0.0.13

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e4a0fc2a675123cfb741925947c8bfb324d8df7cb82c561c3d9c671a4c84c3ef
4
- data.tar.gz: cfa82e1635468ef2f176fae5185a582799f460930992d28ef2a3b3b1840ba84c
3
+ metadata.gz: 2dbfc91b566b6a16cea9bf61b50fb084bca009860b8abeba522d2aae66223c05
4
+ data.tar.gz: 76768f714d22d45b2c98b038e56d7ed457e84126e8b3f834334449573a918013
5
5
  SHA512:
6
- metadata.gz: 936274daaa02999b806b3cb925aa0b120e81dfbab226e05126db3bb9ef5674d4d9734e30625475733bad637ecd663b767c872108bb3e5c70bcddc8ed55b02d0c
7
- data.tar.gz: 6a34fe8113bda4a70ecfb223a55a9b0783baa542390991499f3ca637e9e8e7993a934c0982df1fd54365f47a1f057c47173152a697d5f3a3926ec090e3aa873a
6
+ metadata.gz: 99ecfd2115cba80ebe0053a8bfb4a358b38330fe41cb724d9d98270747eba9e6f98dc405330468cddd80bc160170c72f4a0dd07162eb7bc1768e2a196a8937b3
7
+ data.tar.gz: cac2c09e124c17a1b74932fe7f3a8e870c45359aad5e4aa13fdcfb1a48f496e80b1ad54cc7fe801fba2c0c6c440ae2c793c22369f0f24019eef9b2a112626df4
@@ -5,18 +5,14 @@ module Agile
5
5
  desc Rainbow("init REMOTE_URL").cornflower, Rainbow("Add default remote").darkgoldenrod
6
6
 
7
7
  def init(remote)
8
- error_checking
9
- if remote =~ URL_PATTERN || remote =~ LOCALHOST_PATTERN
10
- write_remote_to_config(remote)
11
- say "Successfully added new remote!"
12
- else
13
- say "It's not a url!"
14
- end
8
+ error_checking_init
9
+ write_remote_to_config(remote)
10
+ say "Successfully added new remote!"
15
11
  end
16
12
 
17
13
  private
18
14
 
19
- def error_checking
15
+ def error_checking_init
20
16
  abort "You've already did init! Try to add more remotes" if CONFIG["current_remote"]
21
17
  end
22
18
 
@@ -1,31 +1,52 @@
1
- # :reek:InstanceVariableAssumption
1
+ # :reek:InstanceVariableAssumption:TooManyStatements
2
+
2
3
  module Agile
3
4
  class CLI < Thor
4
5
  desc Rainbow("login").cornflower, Rainbow("Sign in github.").darkgoldenrod
5
6
  def login
6
- if CONFIG
7
- `open "#{GITHUB_URL}/oauth/authorize?client_id=#{CLIENT_ID}"`
8
- secret_node = call_cli
9
- response = RestClient.get "#{CONFIG['current_remote']}/api/v1/users/#{secret_node}"
10
- login = JSON.parse(response).map { |hash| hash[1]["attributes"]["github_login"] }
11
- write_to_config(secret_node, login)
12
- say "Hello, #{login[0]}!"
7
+ error_checking_login
8
+ open_link
9
+ @secret_node = call_cli
10
+ @response = RestClient.get "#{CONFIG['current_remote']}/api/v1/users/#{@secret_node}"
11
+ if JSON.parse(@response)["data"]["attributes"]
12
+ parse_login
13
13
  else
14
- say "You need to init!"
14
+ say "Something went wrong"
15
15
  end
16
16
  end
17
17
 
18
18
  private
19
19
 
20
- def write_to_config(secret_node, login)
21
- CONFIG["current_user"] = login[0]
22
- CONFIG["user_node"] = secret_node
20
+ def write_to_config(login)
21
+ CONFIG["current_user"] = login
22
+ CONFIG["user_node"] = @secret_node
23
23
  File.write("#{GEM_PATH}.config.json", JSON.generate(CONFIG))
24
24
  end
25
25
 
26
+ def parse_login
27
+ login = JSON.parse(@response)["data"]["attributes"]["github_login"]
28
+ write_to_config(login)
29
+ say "Hello, #{login}!"
30
+ end
31
+
26
32
  def call_cli
27
33
  cli = HighLine.new
28
- cli.ask("Enter your secret code: ")
34
+ cli.ask("Enter your secret code: ", String)
35
+ end
36
+
37
+ def open_link
38
+ link = "#{GITHUB_URL}/oauth/authorize?client_id=#{CLIENT_ID}"
39
+ if RbConfig::CONFIG["host_os"].match?(/mswin|mingw|cygwin/)
40
+ system "start #{link}"
41
+ elsif RbConfig::CONFIG["host_os"].match?(/darwin/)
42
+ system "open #{link}"
43
+ elsif RbConfig::CONFIG["host_os"].match?(/linux|bsd/)
44
+ system "xdg-open #{link}"
45
+ end
46
+ end
47
+
48
+ def error_checking_login
49
+ abort "You haven't done init yet!" unless CONFIG["current_remote"]
29
50
  end
30
51
  end
31
52
  end
@@ -3,9 +3,9 @@ module Agile
3
3
  class Projects < Thor
4
4
  desc "create <project>", "Create new project"
5
5
  def create(project_name)
6
- error_checking
7
- response = RestClient.post "#{CONFIG['current_remote']}/api/v1/projects/", { name: project_name }
8
- if response.body
6
+ error_checking_projects
7
+ if RestClient.post "#{CONFIG['current_remote']}/api/v1/projects/",
8
+ name: project_name, current_user: CONFIG["current_user"]
9
9
  say "Successfully created project #{project_name}"
10
10
  else
11
11
  say "Try again"
@@ -14,44 +14,37 @@ module Agile
14
14
 
15
15
  desc "list", "Show projects"
16
16
  def list
17
- error_checking
18
- response = RestClient.get "#{CONFIG['current_remote']}/api/v1/projects/"
17
+ error_checking_projects
18
+ response = RestClient.get "#{CONFIG['current_remote']}/api/v1/userproject/#{CONFIG['current_user']}"
19
19
  say Rainbow("<<Your Projects>>").cornflower
20
- JSON.parse(response).map { |hash| p hash.values[1] }
20
+ JSON.parse(response).each do |proj|
21
+ say proj.first.values[1]
22
+ end
21
23
  end
22
24
 
23
25
  desc "use <project>", "Select current project"
24
26
  def use(project)
25
- error_checking
27
+ error_checking_projects
26
28
  response = RestClient.get "#{CONFIG['current_remote']}/api/v1/projects/"
27
29
  project_search(response, project)
28
30
  end
29
31
 
30
- desc "delete <project>", "Delete project"
31
- def delete(project)
32
- error_checking
33
- response = RestClient.delete "#{CONFIG['current_remote']}/api/v1/projects/#{project}", name: project
34
- if response.body
35
- say "Successfully deleted project #{project}"
36
- else
37
- say "Try again"
38
- end
39
- end
40
-
41
32
  desc "update <project_name> <new_project_name>", "Update project name"
42
33
  def update(project, new_project)
43
- error_checking
44
- response = RestClient.put "#{CONFIG['current_remote']}/api/v1/projects/#{project}", name: project, new_name: new_project
45
- if response.body
46
- say "Successfully updated project #{project}"
34
+ error_checking_projects
35
+ resp = RestClient.get "#{CONFIG['current_remote']}/api/v1/userproject/#{CONFIG['current_user']}"
36
+ pr_list = JSON.parse(resp).map { |array| array.map { |hash| hash.values_at("name").include?(project) } }
37
+ if pr_list.include?([true])
38
+ RestClient.put "#{CONFIG['current_remote']}/api/v1/projects/#{project}", name: project, new_name: new_project
39
+ say "Updated from #{project} to #{new_project}"
47
40
  else
48
- say "Try again"
41
+ say "Error"
49
42
  end
50
43
  end
51
44
 
52
45
  private
53
46
 
54
- def error_checking
47
+ def error_checking_projects
55
48
  abort "You haven't done init yet!" unless CONFIG["current_remote"]
56
49
  abort "Please, log in!" unless CONFIG["current_user"]
57
50
  end
@@ -2,11 +2,11 @@ module Agile
2
2
  class Remotes < Thor
3
3
  desc "use <remotes url>", "Use remote"
4
4
  def use(remote)
5
- error_checking
5
+ error_checking_remotes
6
6
  if CONFIG["remotes"].include?(remote)
7
7
  CONFIG["current_remote"] = remote
8
8
  File.write("#{GEM_PATH}.config.json", JSON.generate(CONFIG))
9
- say "Successfully change remote!"
9
+ say "Successfully changed current remote!"
10
10
  else
11
11
  say "Try again"
12
12
  end
@@ -14,31 +14,27 @@ module Agile
14
14
 
15
15
  desc "add <remotes url>", "Add remote url"
16
16
  def add(remote)
17
- error_checking
18
- if remote =~ URL_PATTERN || remote =~ LOCALHOST_PATTERN
19
- CONFIG["remotes"].push(remote)
20
- File.write("#{GEM_PATH}.config.json", JSON.generate(CONFIG))
21
- say "Successfully added new remote!"
22
- else
23
- say "It's not a url!"
24
- end
17
+ error_checking_remotes
18
+ CONFIG["remotes"].push(remote)
19
+ File.write("#{GEM_PATH}.config.json", JSON.generate(CONFIG))
20
+ say "Successfully added new remote!"
25
21
  end
26
22
 
27
23
  desc "list", "Remotes list"
28
24
  def list
29
- error_checking
25
+ error_checking_remotes
30
26
  CONFIG["remotes"].each do |name|
31
27
  if name == CONFIG["current_remote"]
32
- p "* #{name}"
28
+ say "* #{name}"
33
29
  else
34
- p name
30
+ say name
35
31
  end
36
32
  end
37
33
  end
38
34
 
39
35
  private
40
36
 
41
- def error_checking
37
+ def error_checking_remotes
42
38
  abort "You haven't done init yet!" unless CONFIG["current_remote"]
43
39
  abort "Please, log in!" unless CONFIG["current_user"]
44
40
  abort "You have no remotes. Try to init!" unless CONFIG["remotes"]
@@ -1,12 +1,6 @@
1
- # rubocop:disable Style/RegexpLiteral
2
-
3
1
  module Agile
4
- VERSION = "0.0.12"
5
- GITHUB_URL = %(https://github.com/login)
2
+ VERSION = "0.0.13".freeze
3
+ GITHUB_URL = %(https://github.com/login).freeze
6
4
  TERMINAL_STYLE = { border_x: "=", border_i: "x", padding_left: 3 }.freeze
7
- CLIENT_ID = "8bf42da7e4f9032ac5d8"
8
- CLIENT_SECRET = "cfef987b3839a1a846ba3f0707aa036240d2d625"
9
- URL_PATTERN = /[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$}/
10
- LOCALHOST_PATTERN = /localhost:/
5
+ CLIENT_ID = "8bf42da7e4f9032ac5d8".freeze
11
6
  end
12
- # rubocop:enable Style/RegexpLiteral
@@ -0,0 +1,36 @@
1
+ RSpec.describe Agile::CLI do
2
+ describe "#init" do
3
+ subject(:cli) { described_class.new }
4
+
5
+ before do
6
+ allow(cli).to receive(:say)
7
+ allow(cli).to receive(:abort)
8
+ end
9
+
10
+ it "gives error" do
11
+ Agile::CONFIG["current_remote"] = "smth"
12
+ cli.init("smth")
13
+ expect(cli).to have_received(:abort).with("You've already did init! Try to add more remotes")
14
+ end
15
+
16
+ it "set current remote" do
17
+ cli.init("remote")
18
+ expect(Agile::CONFIG["current_remote"]).to eq("remote")
19
+ end
20
+
21
+ it "creates array of remotes" do
22
+ cli.init("remote")
23
+ expect(Agile::CONFIG["remotes"]).to eq(["remote"])
24
+ end
25
+
26
+ it "create config file" do
27
+ cli.init("remote")
28
+ expect(File.exist?("#{Agile::GEM_PATH}/.config.json")).to eq(true)
29
+ end
30
+
31
+ it "Successfully finish" do
32
+ cli.init("remote")
33
+ expect(cli).to have_received(:say).with("Successfully added new remote!")
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,94 @@
1
+ RSpec.describe Agile::Remotes do
2
+ subject(:remote) { described_class.new }
3
+
4
+ before do
5
+ Agile::CONFIG["remotes"].clear
6
+ Agile::CONFIG["current_user"] = "smone"
7
+ allow(remote).to receive(:error_checking_remotes)
8
+ allow(remote).to receive(:say)
9
+ end
10
+
11
+ describe "#use" do
12
+ it "check for error" do
13
+ remote.use("remote")
14
+ expect(remote).to have_received(:error_checking_remotes)
15
+ end
16
+
17
+ it "aborts when remote wasn't added" do
18
+ remote.use("remote")
19
+ expect(remote).to have_received(:say).with("Try again")
20
+ end
21
+
22
+ it "changes remote" do
23
+ Agile::CONFIG["remotes"] << "another_remote"
24
+ remote.use("another_remote")
25
+ expect(Agile::CONFIG["current_remote"]).to eq("another_remote")
26
+ end
27
+
28
+ it "writes to config" do
29
+ remote.use("like_a_remote")
30
+ expect(File.exist?("#{Agile::GEM_PATH}/.config.json")).to eq(true)
31
+ end
32
+
33
+ it "successfully finishes" do
34
+ Agile::CONFIG["remotes"] << "remote"
35
+ remote.use("remote")
36
+ expect(remote).to have_received(:say).with("Successfully changed current remote!")
37
+ end
38
+ end
39
+ end
40
+
41
+ RSpec.describe Agile::Remotes do
42
+ subject(:remote) { described_class.new }
43
+
44
+ before do
45
+ Agile::CONFIG["remotes"].clear
46
+ Agile::CONFIG["current_user"] = "smone"
47
+ allow(remote).to receive(:error_checking_remotes)
48
+ allow(remote).to receive(:say)
49
+ end
50
+
51
+ describe "#add" do
52
+ it "check for error" do
53
+ remote.add("remote")
54
+ expect(remote).to have_received(:error_checking_remotes)
55
+ end
56
+
57
+ it "add new remote" do
58
+ remote.add("new_remote")
59
+ expect(Agile::CONFIG["remotes"].include?("new_remote")).to eq(true)
60
+ end
61
+
62
+ it "writes to config" do
63
+ remote.add("new_remote")
64
+ expect(File.exist?("#{Agile::GEM_PATH}/.config.json")).to eq(true)
65
+ end
66
+
67
+ it "successfully finishes" do
68
+ remote.add("new_remote")
69
+ expect(remote).to have_received(:say).with("Successfully added new remote!")
70
+ end
71
+ end
72
+ end
73
+
74
+ RSpec.describe Agile::Remotes do
75
+ subject(:remote) { described_class.new }
76
+
77
+ before do
78
+ Agile::CONFIG["current_user"] = "smone"
79
+ allow(remote).to receive(:error_checking_remotes)
80
+ allow(remote).to receive(:say)
81
+ end
82
+
83
+ describe "#list" do
84
+ it "check for error" do
85
+ remote.list
86
+ expect(remote).to have_received(:error_checking_remotes)
87
+ end
88
+
89
+ it "shows all remotes" do
90
+ remote.list
91
+ expect(remote).to have_received(:say).exactly(Agile::CONFIG["remotes"].count).times
92
+ end
93
+ end
94
+ end
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.12
4
+ version: 0.0.13
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-23 00:00:00.000000000 Z
11
+ date: 2019-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline
@@ -249,7 +249,9 @@ files:
249
249
  - spec/agile/dod_spec.rb
250
250
  - spec/agile/dor_spec.rb
251
251
  - spec/agile/hello_spec.rb
252
+ - spec/agile/init_spec.rb
252
253
  - spec/agile/principles_spec.rb
254
+ - spec/agile/remote_spec.rb
253
255
  - spec/agile/values_spec.rb
254
256
  - spec/agile/version_spec.rb
255
257
  - spec/spec_helper.rb