sem 0.1.2 → 0.1.3

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
  SHA1:
3
- metadata.gz: 58fa7a75d76bfe6a5563de0e0ca028158613f757
4
- data.tar.gz: f098749547ce30f5e2bd86409703303c29fcb680
3
+ metadata.gz: 9e338e38dab6f7b14d032d7ae279fad4784553be
4
+ data.tar.gz: 8237dfa704deaeb14de9785d9b3924fd6d24ce05
5
5
  SHA512:
6
- metadata.gz: b0abff1b0c0df768b151e790db33d29e84aabc92655e33e1ad5ecf2c75e7b236e92a558ba7aadbc24ca921f5e7b4529eeb37257004987cfbbcb779d366954caf
7
- data.tar.gz: 94806121568d53e8b081a2e151a5cc17f3e49f51dd471086d24543b9f0e6778b4f1fb42b647ae8c900c05f67d80a1c4763d9bfb2fdd130659ea83ad2874413a5
6
+ metadata.gz: 993d2cabeba3a1c8c6f8e36e08af620fe9fadcb9084e4854400aff50b5b83e53e8ea645927cf917fd3311c35d67b00fa16767919b69c2258d6e47f7e47759653
7
+ data.tar.gz: df2289f9b071ef252358663d7ec87cfd3f1e3070124fca4c0775746a830e19d255d6089ecc98c50da40e8807c65c970fcbcc39af11292289c55cce4acac6b2e9
data/lib/sem/api/base.rb CHANGED
@@ -1,13 +1,9 @@
1
1
  module Sem
2
2
  module API
3
3
  class Base
4
- CREDENTIALS_PATH = "~/.sem/credentials".freeze
5
-
6
4
  def self.client
7
5
  @client ||= begin
8
- path = File.expand_path(CREDENTIALS_PATH)
9
-
10
- auth_token = File.read(path).delete("\n")
6
+ auth_token = Sem::Credentials.read
11
7
 
12
8
  SemaphoreClient.new(auth_token)
13
9
  end
@@ -27,7 +27,7 @@ module Sem
27
27
  def teams_by_permission(all_teams)
28
28
  groups = all_teams.group_by(&:permission)
29
29
 
30
- groups.sort_by { |permission, _| LEVELS[permission] }.to_h.values
30
+ to_hash(groups.sort_by { |permission, _| LEVELS[permission] }).values
31
31
  end
32
32
 
33
33
  def users_for_team_groups(groups)
@@ -41,12 +41,16 @@ module Sem
41
41
  def users_for_team(team)
42
42
  users = client.users.list_for_team(team.id)
43
43
 
44
- users.map { |user| [user.username, transform_user(user, team)] }.to_h
44
+ to_hash(users.map { |user| [user.username, transform_user(user, team)] })
45
45
  end
46
46
 
47
47
  def transform_user(user, team)
48
48
  Users.to_hash(user).merge(:permission => team.permission)
49
49
  end
50
+
51
+ def to_hash(array)
52
+ Hash[array]
53
+ end
50
54
  end
51
55
  end
52
56
  end
data/lib/sem/cli.rb CHANGED
@@ -8,8 +8,10 @@ module Sem
8
8
  require_relative "cli/shared_configs"
9
9
 
10
10
  desc "login", "log in to semaphore from the command line"
11
- def login
12
- puts "NOT IMPLEMENTED"
11
+ def login(auth_token)
12
+ Sem::Credentials.write(auth_token)
13
+
14
+ puts "Your credentials have been saved to #{Sem::Credentials::PATH}"
13
15
  end
14
16
 
15
17
  register "orgs", "manage organizations", Sem::CLI::Orgs
@@ -0,0 +1,19 @@
1
+ module Sem
2
+ class Credentials
3
+ PATH = File.expand_path("~/.sem/credentials").freeze
4
+
5
+ def self.write(auth_token)
6
+ dirname = File.dirname(PATH)
7
+ FileUtils.mkdir_p(dirname)
8
+
9
+ File.write(PATH, auth_token)
10
+ File.chmod(0o0600, PATH)
11
+ end
12
+
13
+ def self.read
14
+ raise Sem::Errors::Auth::NoCredentials unless File.file?(PATH)
15
+
16
+ File.read(PATH).strip
17
+ end
18
+ end
19
+ end
data/lib/sem/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Sem
2
- VERSION = "0.1.2".freeze
2
+ VERSION = "0.1.3".freeze
3
3
  end
data/lib/sem.rb CHANGED
@@ -1,53 +1,60 @@
1
1
  require "sem/version"
2
2
  require "dracula"
3
3
  require "semaphore_client"
4
+ require "fileutils"
4
5
 
5
6
  module Sem
6
7
  require "sem/errors"
8
+ require "sem/credentials"
7
9
  require "sem/cli"
8
10
  require "sem/api"
9
11
  require "sem/views"
10
12
 
11
- # Returns exit status as a number.
12
- def self.start(args)
13
- Sem::CLI.start(args)
14
-
15
- 0
16
- rescue Sem::Errors::Auth::NoCredentials
17
- on_no_credentials
18
-
19
- 1
20
- rescue Sem::Errors::Auth::InvalidCredentials
21
- on_invalid_credentials
22
-
23
- 1
24
- rescue StandardError => e
25
- on_unhandled_error(e)
26
-
27
- 1
28
- end
29
-
30
- private_class_method def self.on_no_credentials
31
- puts "[ERROR] You are not logged in."
32
- puts ""
33
- puts "Log in with '#{Sem::CLI.program_name} login --auth-token <token>'"
34
- end
35
-
36
- private_class_method def self.on_invalid_credentials
37
- puts "[ERROR] Your credentials are invalid."
38
- puts ""
39
- puts "Log in with '#{Sem::CLI.program_name} login --auth-token <token>'"
40
- end
41
-
42
- private_class_method def self.on_unhandled_error(exception)
43
- puts "[PANIC] Unhandled error."
44
- puts ""
45
- puts "Well, this is emberassing. An unknown error was detected."
46
- puts ""
47
- puts "Backtrace: "
48
- puts exception.backtrace
49
- puts ""
50
- puts "Please report this issue to https://semaphoreci.com/support."
13
+ class << self
14
+
15
+ # Returns exit status as a number.
16
+ def start(args)
17
+ Sem::CLI.start(args)
18
+
19
+ 0
20
+ rescue Sem::Errors::Auth::NoCredentials
21
+ on_no_credentials
22
+
23
+ 1
24
+ rescue Sem::Errors::Auth::InvalidCredentials
25
+ on_invalid_credentials
26
+
27
+ 1
28
+ rescue StandardError => e
29
+ on_unhandled_error(e)
30
+
31
+ 1
32
+ end
33
+
34
+ private
35
+
36
+ def on_no_credentials
37
+ puts "[ERROR] You are not logged in."
38
+ puts ""
39
+ puts "Log in with '#{Sem::CLI.program_name} login --auth-token <token>'"
40
+ end
41
+
42
+ def on_invalid_credentials
43
+ puts "[ERROR] Your credentials are invalid."
44
+ puts ""
45
+ puts "Log in with '#{Sem::CLI.program_name} login --auth-token <token>'"
46
+ end
47
+
48
+ def on_unhandled_error(exception)
49
+ puts "[PANIC] Unhandled error."
50
+ puts ""
51
+ puts "Well, this is emberassing. An unknown error was detected."
52
+ puts ""
53
+ puts "Backtrace: "
54
+ puts exception.backtrace
55
+ puts ""
56
+ puts "Please report this issue to https://semaphoreci.com/support."
57
+ end
51
58
  end
52
59
 
53
60
  end
data/sem.gemspec CHANGED
@@ -22,13 +22,13 @@ Gem::Specification.new do |spec|
22
22
  spec.require_paths = ["lib"]
23
23
 
24
24
  spec.add_dependency "semaphore_client", "~> 2.0.5"
25
- spec.add_dependency "dracula", "~> 0.1.0"
25
+ spec.add_dependency "dracula", "~> 0.1.1"
26
26
 
27
27
  spec.add_development_dependency "bundler", "~> 1.14"
28
28
  spec.add_development_dependency "rake", "~> 10.0"
29
29
  spec.add_development_dependency "rspec", "~> 3.0"
30
30
  spec.add_development_dependency "rubocop", "~> 0.47.1"
31
- spec.add_development_dependency "rubocop-rspec", "~> 1.13.0"
31
+ spec.add_development_dependency "rubocop-rspec", "1.5.0"
32
32
  spec.add_development_dependency "simplecov", "~> 0.13"
33
33
  spec.add_development_dependency "byebug"
34
34
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Šarčević
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.0
33
+ version: 0.1.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.1.0
40
+ version: 0.1.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -98,16 +98,16 @@ dependencies:
98
98
  name: rubocop-rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 1.13.0
103
+ version: 1.5.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 1.13.0
110
+ version: 1.5.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: simplecov
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -175,6 +175,7 @@ files:
175
175
  - lib/sem/cli/projects.rb
176
176
  - lib/sem/cli/shared_configs.rb
177
177
  - lib/sem/cli/teams.rb
178
+ - lib/sem/credentials.rb
178
179
  - lib/sem/errors.rb
179
180
  - lib/sem/version.rb
180
181
  - lib/sem/views.rb