gitlab-username_bot_identifier 0.0.0 → 1.0

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: cf9f063618ac152d43990861d48e25559d661d60f1d6d86203750f34a86519ec
4
+ data.tar.gz: e2935cb8583d27c6b123b19cc946ebd0cdd57f260fc1ee802cd1cff0418c1574
5
5
  SHA512:
6
- metadata.gz: efd118e83d9b89224227f2fb30cc246d9ca47607648fd12f4d78e0328ea32f5bd9e0d85154240aaefdfe539dd00341d7d26bfd9bd274158eb1e958fcd49e2445
7
- data.tar.gz: 5f0ea73dc0b6c5f8c7c2b9d68f1d5bb4eed338942b45ad5c2ef58ded3e0341f6a0403cc37b09e3a5bd2f3784a2c19f90e167c8fa8c6870d35ecacfd6918210ad
6
+ metadata.gz: b305f1d4806fe5b91aa96707cba751a1d464fadc0900f2a506f2745b9e7975b7837e374bd1d1034fc0b3246ae2fdb5d61c8754ddeb3698c7fd969da4143495c0
7
+ data.tar.gz: 514df816a4c5c365d072ef50a2801df7acb9a39fbf439f7ee42963fa5eda9f318ca24216a7d8b0935ee2225f617096ec7df56fbcb81f7ad9f4bcfdc8befae4f2
@@ -1,10 +1,77 @@
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
+ employment-bot
8
+ gitlab-bot
9
+ gitlab-dependency-bot
10
+ gitlab-dependency-update-bot
11
+ gitlab-infra-mgmt-bot
12
+ gitlab-jh-bot
13
+ gitlab-qa
14
+ gitlab-release-tools-bot
15
+ kubitus-bot
16
+ GitLabReviewerRecommenderBot
17
+ Taucher2003-Bot
18
+ mr-bot
19
+ ops-gitlab-net
20
+ GitLab-Llm-Bot
21
+ codeowner-maintainer-or-manager
22
+ gitlab-crowdin-bot
23
+ ].freeze
24
+
25
+ # Automatically assigned to orphan records (e.g. when a user is deleted)
26
+ GHOST_ACCOUNT = 'ghost1'
27
+
28
+ # Can be spoofed (e.g. someone can register project_1_bot, project_2_bot_abc123)
29
+ PROJECT_ACCESS_TOKEN_REGEX = /^project_\d+_bot_?\w*$/.freeze
30
+ GROUP_ACCESS_TOKEN_REGEX = /^group_\d+_bot_?\w*$/.freeze
31
+
32
+ # Used as best practive by GitLab team members when creating "service accounts"
33
+ SERVICE_ACCOUNT_REGEX = /^gl-service-[-\w]+$/.freeze
34
+
35
+ def initialize(username)
36
+ @username = username
37
+ end
38
+
39
+ def known_bot?
40
+ KNOWN_GITLAB_COM_BOT_USERNAMES.include?(@username)
41
+ end
42
+
43
+ def ghost?
44
+ @username == GHOST_ACCOUNT
45
+ end
46
+
47
+ def service_account?
48
+ @username.match?(SERVICE_ACCOUNT_REGEX)
49
+ end
50
+
51
+ def project_access_token?
52
+ @username.match?(PROJECT_ACCESS_TOKEN_REGEX)
53
+ end
54
+
55
+ def group_access_token?
56
+ @username.match?(GROUP_ACCESS_TOKEN_REGEX)
57
+ end
58
+
59
+ def project_or_group_access_token?
60
+ project_access_token? ||
61
+ group_access_token?
62
+ end
63
+
64
+ def bot?
65
+ known_bot? ||
66
+ service_account? ||
67
+ project_or_group_access_token?
68
+ end
69
+
70
+ def ignorable_account?
71
+ known_bot? ||
72
+ ghost? ||
73
+ service_account? ||
74
+ project_or_group_access_token?
75
+ end
9
76
  end
10
77
  end
metadata CHANGED
@@ -1,37 +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'
5
5
  platform: ruby
6
6
  authors:
7
- - Contributor Success
8
- autorequire:
9
- bindir: exe
7
+ - Lee Tickett
8
+ autorequire:
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-12 00:00:00.000000000 Z
11
+ date: 2023-10-23 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
- - gitlab-username_bot_identifier.gemspec
25
20
  - lib/gitlab/username_bot_identifier.rb
26
- - lib/gitlab/username_bot_identifier/version.rb
27
- - sig/gitlab/username_bot_identifier.rbs
28
21
  homepage: https://gitlab.com/gitlab-org/ruby/gems/gitlab-username-bot-identifier
29
- licenses: []
22
+ licenses:
23
+ - MIT
30
24
  metadata:
31
25
  homepage_uri: https://gitlab.com/gitlab-org/ruby/gems/gitlab-username-bot-identifier
32
26
  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
34
- post_install_message:
27
+ changelog_uri: https://gitlab.com/gitlab-org/ruby/gems/gitlab-username-bot-identifier/-/blob/master/CHANGELOG.md
28
+ rubygems_mfa_required: 'true'
29
+ post_install_message:
35
30
  rdoc_options: []
36
31
  require_paths:
37
32
  - lib
@@ -46,8 +41,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
46
41
  - !ruby/object:Gem::Version
47
42
  version: '0'
48
43
  requirements: []
49
- rubygems_version: 3.2.33
50
- signing_key:
44
+ rubygems_version: 3.1.6
45
+ signing_key:
51
46
  specification_version: 4
52
47
  summary: Parse GitLab usernames to determine whether they appear to be bots.
53
48
  test_files: []
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,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "lib/gitlab/username_bot_identifier/version"
4
-
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"]
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"
15
-
16
- spec.metadata["homepage_uri"] = spec.homepage
17
- spec.metadata["source_code_uri"] = spec.homepage
18
- spec.metadata["changelog_uri"] = spec.homepage
19
-
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
37
- end
@@ -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