gitlab-username_bot_identifier 0.0.0 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 61448d4b39f857c6cf407db135cbd4878fade66d4b553be2061cb120387f4cc7
4
- data.tar.gz: 86f4f01c85e9e55978618cbbcd284e8ec0392b81e0fa8c8644336d711ab33424
3
+ metadata.gz: 1a1ec1995af9897eecdcddd45731213309d8f5c7787501a206d648d9704141a7
4
+ data.tar.gz: 78fcce866f8cfffda2d3bb5eafad4f915c20e7de778368a04a09553a99307aea
5
5
  SHA512:
6
- metadata.gz: efd118e83d9b89224227f2fb30cc246d9ca47607648fd12f4d78e0328ea32f5bd9e0d85154240aaefdfe539dd00341d7d26bfd9bd274158eb1e958fcd49e2445
7
- data.tar.gz: 5f0ea73dc0b6c5f8c7c2b9d68f1d5bb4eed338942b45ad5c2ef58ded3e0341f6a0403cc37b09e3a5bd2f3784a2c19f90e167c8fa8c6870d35ecacfd6918210ad
6
+ metadata.gz: b0e6ae879e8b3f764353b060bf2ab0274cdad602456bb39a52db128a70bc212c15ba9b4fe0a934df3d6612c927767b7a76d89095a8c9f28abdd7f5c250f8db16
7
+ data.tar.gz: d0dd071912d5aa683493fee244c70e759bbb45c2a55c02663c96d8fac8930d82c462563d56c48e5c0afff449dcb7cf50ed09e396f85a859c6822f612e6564769
@@ -1,37 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "lib/gitlab/username_bot_identifier/version"
3
+ require_relative 'lib/gitlab/username_bot_identifier/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "gitlab-username_bot_identifier"
7
- spec.version = Gitlab::UsernameBotIdentifier::VERSION
8
- spec.authors = ["Contributor Success"]
9
- spec.email = ["engineering@gitlab.com"]
6
+ spec.name = 'gitlab-username_bot_identifier'
7
+ spec.version = UsernameBotIdentifier::VERSION
8
+ spec.authors = ['Lee Tickett']
9
+ spec.email = ['ltickett@gitlab.com']
10
10
 
11
- spec.summary = "Parse GitLab usernames to determine whether they appear to be bots."
12
- spec.description = "Parse GitLab usernames to determine whether they appear to be bots."
13
- spec.homepage = "https://gitlab.com/gitlab-org/ruby/gems/gitlab-username-bot-identifier"
14
- spec.required_ruby_version = ">= 2.6.0"
11
+ spec.summary = 'Parse GitLab usernames to determine whether they appear to be bots.'
12
+ spec.homepage = 'https://gitlab.com/gitlab-org/ruby/gems/gitlab-username_bot_identifier'
13
+ spec.license = 'MIT'
14
+ spec.required_ruby_version = '>= 2.6.0'
15
15
 
16
- spec.metadata["homepage_uri"] = spec.homepage
17
- spec.metadata["source_code_uri"] = spec.homepage
18
- spec.metadata["changelog_uri"] = spec.homepage
16
+ spec.metadata['homepage_uri'] = spec.homepage
17
+ spec.metadata['source_code_uri'] = 'https://gitlab.com/gitlab-org/ruby/gems/gitlab-username-bot-identifier'
18
+ spec.metadata['changelog_uri'] = 'https://gitlab.com/gitlab-org/ruby/gems/gitlab-username-bot-identifier/-/blob/master/CHANGELOG.md'
19
+ spec.metadata['rubygems_mfa_required'] = 'true'
19
20
 
20
- # Specify which files should be added to the gem when it is released.
21
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
22
- spec.files = Dir.chdir(__dir__) do
23
- `git ls-files -z`.split("\x0").reject do |f|
24
- (File.expand_path(f) == __FILE__) ||
25
- f.start_with?(*%w[bin/ test/ spec/ features/ .git .circleci appveyor Gemfile])
26
- end
27
- end
28
- spec.bindir = "exe"
29
- spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
- spec.require_paths = ["lib"]
31
-
32
- # Uncomment to register a new dependency of your gem
33
- # spec.add_dependency "example-gem", "~> 1.0"
34
-
35
- # For more information and examples about making a new gem, check out our
36
- # guide at: https://bundler.io/guides/creating_gem.html
21
+ spec.files = [
22
+ 'gitlab-username_bot_identifier.gemspec',
23
+ 'lib/gitlab/username_bot_identifier.rb'
24
+ ]
37
25
  end
@@ -1,10 +1,81 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "username_bot_identifier/version"
4
-
5
3
  module Gitlab
6
- module UsernameBotIdentifier
7
- class Error < StandardError; end
8
- raise "Reserved for GitLab"
4
+ # Determines whether a GitLab username appears to be a bot based on known patterns
5
+ class UsernameBotIdentifier
6
+ KNOWN_GITLAB_COM_BOT_USERNAMES = %w[
7
+ codeowner-maintainer-or-manager
8
+ employment-bot
9
+ gitlab-bot
10
+ gitlab-crowdin-bot
11
+ gitlab-dependency-bot
12
+ gitlab-dependency-update-bot
13
+ gitlab-infra-mgmt-bot
14
+ gitlab-jh-bot
15
+ gitLab-llm-Bot
16
+ gitlab-qa
17
+ gitlab-release-tools-bot
18
+ gitLab-security-bot
19
+ gitLabreviewerrecommenderbot
20
+ gl-infra-danger-bot
21
+ glrenovatebot
22
+ gl-support-bot
23
+ kubitus-bot
24
+ mr-bot
25
+ ops-gitlab-net
26
+ taucher2003-bot
27
+ ].freeze
28
+
29
+ # Automatically assigned to orphan records (e.g. when a user is deleted)
30
+ GHOST_ACCOUNT = 'ghost1'
31
+
32
+ # Can be spoofed (e.g. someone can register project_1_bot, project_2_bot_abc123)
33
+ PROJECT_ACCESS_TOKEN_REGEX = /^project_\d+_bot_?\w*$/.freeze
34
+ GROUP_ACCESS_TOKEN_REGEX = /^group_\d+_bot_?\w*$/.freeze
35
+
36
+ # Used as best practive by GitLab team members when creating "service accounts"
37
+ SERVICE_ACCOUNT_REGEX = /^gl-service-[-\w]+$/.freeze
38
+
39
+ def initialize(username)
40
+ @username = username
41
+ end
42
+
43
+ def known_bot?
44
+ KNOWN_GITLAB_COM_BOT_USERNAMES.include?(@username)
45
+ end
46
+
47
+ def ghost?
48
+ @username == GHOST_ACCOUNT
49
+ end
50
+
51
+ def service_account?
52
+ @username.match?(SERVICE_ACCOUNT_REGEX)
53
+ end
54
+
55
+ def project_access_token?
56
+ @username.match?(PROJECT_ACCESS_TOKEN_REGEX)
57
+ end
58
+
59
+ def group_access_token?
60
+ @username.match?(GROUP_ACCESS_TOKEN_REGEX)
61
+ end
62
+
63
+ def project_or_group_access_token?
64
+ project_access_token? ||
65
+ group_access_token?
66
+ end
67
+
68
+ def bot?
69
+ known_bot? ||
70
+ service_account? ||
71
+ project_or_group_access_token?
72
+ end
73
+
74
+ def ignorable_account?
75
+ known_bot? ||
76
+ ghost? ||
77
+ service_account? ||
78
+ project_or_group_access_token?
79
+ end
9
80
  end
10
81
  end
metadata CHANGED
@@ -1,36 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-username_bot_identifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
- - Contributor Success
7
+ - Lee Tickett
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-12 00:00:00.000000000 Z
11
+ date: 2023-11-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: Parse GitLab usernames to determine whether they appear to be bots.
13
+ description:
14
14
  email:
15
- - engineering@gitlab.com
15
+ - ltickett@gitlab.com
16
16
  executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
- - ".rspec"
21
- - ".rubocop.yml"
22
- - README.md
23
- - Rakefile
24
20
  - gitlab-username_bot_identifier.gemspec
25
21
  - lib/gitlab/username_bot_identifier.rb
26
- - lib/gitlab/username_bot_identifier/version.rb
27
- - sig/gitlab/username_bot_identifier.rbs
28
- homepage: https://gitlab.com/gitlab-org/ruby/gems/gitlab-username-bot-identifier
29
- licenses: []
22
+ homepage: https://gitlab.com/gitlab-org/ruby/gems/gitlab-username_bot_identifier
23
+ licenses:
24
+ - MIT
30
25
  metadata:
31
- homepage_uri: https://gitlab.com/gitlab-org/ruby/gems/gitlab-username-bot-identifier
26
+ homepage_uri: https://gitlab.com/gitlab-org/ruby/gems/gitlab-username_bot_identifier
32
27
  source_code_uri: https://gitlab.com/gitlab-org/ruby/gems/gitlab-username-bot-identifier
33
- changelog_uri: https://gitlab.com/gitlab-org/ruby/gems/gitlab-username-bot-identifier
28
+ changelog_uri: https://gitlab.com/gitlab-org/ruby/gems/gitlab-username-bot-identifier/-/blob/master/CHANGELOG.md
29
+ rubygems_mfa_required: 'true'
34
30
  post_install_message:
35
31
  rdoc_options: []
36
32
  require_paths:
@@ -46,7 +42,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
46
42
  - !ruby/object:Gem::Version
47
43
  version: '0'
48
44
  requirements: []
49
- rubygems_version: 3.2.33
45
+ rubygems_version: 3.3.26
50
46
  signing_key:
51
47
  specification_version: 4
52
48
  summary: Parse GitLab usernames to determine whether they appear to be bots.
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper
data/.rubocop.yml DELETED
@@ -1,13 +0,0 @@
1
- AllCops:
2
- TargetRubyVersion: 2.6
3
-
4
- Style/StringLiterals:
5
- Enabled: true
6
- EnforcedStyle: double_quotes
7
-
8
- Style/StringLiteralsInInterpolation:
9
- Enabled: true
10
- EnforcedStyle: double_quotes
11
-
12
- Layout/LineLength:
13
- Max: 120
data/README.md DELETED
@@ -1,31 +0,0 @@
1
- # Gitlab::UsernameBotIdentifier
2
-
3
- TODO: Delete this and the text below, and describe your gem
4
-
5
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/gitlab/username_bot_identifier`. To experiment with that code, run `bin/console` for an interactive prompt.
6
-
7
- ## Installation
8
-
9
- TODO: Replace `UPDATE_WITH_YOUR_GEM_NAME_PRIOR_TO_RELEASE_TO_RUBYGEMS_ORG` with your gem name right after releasing it to RubyGems.org. Please do not do it earlier due to security reasons. Alternatively, replace this section with instructions to install your gem from git if you don't plan to release to RubyGems.org.
10
-
11
- Install the gem and add to the application's Gemfile by executing:
12
-
13
- $ bundle add UPDATE_WITH_YOUR_GEM_NAME_PRIOR_TO_RELEASE_TO_RUBYGEMS_ORG
14
-
15
- If bundler is not being used to manage dependencies, install the gem by executing:
16
-
17
- $ gem install UPDATE_WITH_YOUR_GEM_NAME_PRIOR_TO_RELEASE_TO_RUBYGEMS_ORG
18
-
19
- ## Usage
20
-
21
- TODO: Write usage instructions here
22
-
23
- ## Development
24
-
25
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
26
-
27
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
28
-
29
- ## Contributing
30
-
31
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/gitlab-username_bot_identifier.
data/Rakefile DELETED
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
5
-
6
- RSpec::Core::RakeTask.new(:spec)
7
-
8
- require "rubocop/rake_task"
9
-
10
- RuboCop::RakeTask.new
11
-
12
- task default: %i[spec rubocop]
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Gitlab
4
- module UsernameBotIdentifier
5
- VERSION = "0.0.0"
6
- end
7
- end
@@ -1,6 +0,0 @@
1
- module Gitlab
2
- module UsernameBotIdentifier
3
- VERSION: String
4
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
5
- end
6
- end