neetob 0.2.6 → 0.3.0
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/CHANGELOG.md +19 -0
- data/Gemfile.lock +2 -2
- data/exe/neetob +1 -1
- data/lib/neetob/cli/code/audit.rb +56 -0
- data/lib/neetob/cli/code/commands.rb +18 -0
- data/lib/neetob/cli/github/gems/release.rb +1 -1
- data/lib/neetob/cli/github/make_pr/base.rb +2 -2
- data/lib/neetob/cli/github/make_pr/compliance_fix.rb +13 -2
- data/lib/neetob/cli/github/make_pr/script.rb +1 -1
- data/lib/neetob/cli/users/commands.rb +1 -1
- data/lib/neetob/cli.rb +4 -0
- data/lib/neetob/version.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: 129689cbd6ed773bb8b33aced3e726123662c5cc772c52287a3464bf63fe324b
|
4
|
+
data.tar.gz: ea5801918efe691ab99c985315fded011149eab7dc0082481d4c6ce6f41c2594
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e933f42dc569195d856c707ac01911e71538057afcd4d447ab50242330a498d2fb31f769f1375a03bd3fbbad0e105dd24094ad642e74ed2cea0fdf751b5c5e4
|
7
|
+
data.tar.gz: 8a543540b8974374280c0b2781b99c7819918d34c0248b53dd85d0792d05004b4de407717d5bbd3a87881604672d1c714b11986f6642efb1af360a0952bb34e6
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,24 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.3.0](https://www.github.com/bigbinary/neetob/compare/v0.2.7...v0.3.0) (2023-03-23)
|
4
|
+
|
5
|
+
|
6
|
+
### Features
|
7
|
+
|
8
|
+
* Added command to audit neeto products db-schema. ([#230](https://www.github.com/bigbinary/neetob/issues/230)) ([1401abc](https://www.github.com/bigbinary/neetob/commit/1401abc77e3dedfbf156266a328de7a3d4fe6bb0))
|
9
|
+
|
10
|
+
|
11
|
+
### Bug Fixes
|
12
|
+
|
13
|
+
* Enhanced compliance fix command ([#225](https://www.github.com/bigbinary/neetob/issues/225)) ([a41c95c](https://www.github.com/bigbinary/neetob/commit/a41c95c435173f331a2872ca5a9192c38fc04e22))
|
14
|
+
|
15
|
+
### [0.2.7](https://www.github.com/bigbinary/neetob/compare/v0.2.6...v0.2.7) (2023-03-16)
|
16
|
+
|
17
|
+
|
18
|
+
### Bug Fixes
|
19
|
+
|
20
|
+
* Fixed path of ruby-version file ([#227](https://www.github.com/bigbinary/neetob/issues/227)) ([3d2542d](https://www.github.com/bigbinary/neetob/commit/3d2542d9306974009ef51105efd288841f556d5e))
|
21
|
+
|
3
22
|
### [0.2.6](https://www.github.com/bigbinary/neetob/compare/v0.2.5...v0.2.6) (2023-03-15)
|
4
23
|
|
5
24
|
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
neetob (0.
|
4
|
+
neetob (0.3.0)
|
5
5
|
dotenv (~> 2.8.1)
|
6
6
|
launchy (~> 2.5.0)
|
7
7
|
octokit (~> 4.0)
|
@@ -164,7 +164,7 @@ GEM
|
|
164
164
|
method_source (~> 1.0)
|
165
165
|
public_suffix (5.0.0)
|
166
166
|
racc (1.6.1)
|
167
|
-
rack (2.2.6.
|
167
|
+
rack (2.2.6.4)
|
168
168
|
rack-test (2.0.2)
|
169
169
|
rack (>= 1.3)
|
170
170
|
rails (7.0.4)
|
data/exe/neetob
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
require "dotenv"
|
5
5
|
require "bundler/setup"
|
6
6
|
|
7
|
-
MIN_RUBY_VERSION = File.read("
|
7
|
+
MIN_RUBY_VERSION = File.read(File.expand_path("../.ruby-version", __dir__)).strip
|
8
8
|
|
9
9
|
if RUBY_VERSION < MIN_RUBY_VERSION
|
10
10
|
raise RuntimeError, "neetob requires Ruby version of #{MIN_RUBY_VERSION} or higher"
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../github/base"
|
4
|
+
|
5
|
+
module Neetob
|
6
|
+
class CLI
|
7
|
+
module Code
|
8
|
+
class Audit < Github::Base
|
9
|
+
attr_accessor :sandbox, :apps
|
10
|
+
|
11
|
+
def initialize(apps, sandbox = false)
|
12
|
+
super()
|
13
|
+
@apps = apps
|
14
|
+
@sandbox = sandbox
|
15
|
+
end
|
16
|
+
|
17
|
+
def run
|
18
|
+
matching_apps = find_all_matching_apps_or_repos(apps, :github, sandbox)
|
19
|
+
ui.info("\nListing apps and their tables that doesn't have uuid as primary key type:-")
|
20
|
+
has_found_tables_without_uuid = false
|
21
|
+
matching_apps.each do |app|
|
22
|
+
begin
|
23
|
+
db_schema = Base64.decode64(client.contents(app, path: "./db/schema.rb").content)
|
24
|
+
tables_without_uuid = find_tables_without_uuid_as_primary_key(db_schema).compact
|
25
|
+
if !tables_without_uuid.nil?
|
26
|
+
has_found_tables_without_uuid = true
|
27
|
+
print_app_and_tables(app, tables_without_uuid)
|
28
|
+
end
|
29
|
+
rescue Octokit::NotFound
|
30
|
+
ui.error("There is no \"db/schema.rb\" file in the \"#{app}\" app.")
|
31
|
+
rescue StandardError => e
|
32
|
+
ExceptionHandler.new(e).process
|
33
|
+
end
|
34
|
+
end
|
35
|
+
ui.info("No apps found to have tables without uuid as primary key type") if !has_found_tables_without_uuid
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def find_tables_without_uuid_as_primary_key(db_schema)
|
41
|
+
create_table_regex = /create_table.*?,\s*force:\s*:cascade\s*do\s*\|t\|/
|
42
|
+
db_schema.scan(create_table_regex).map do |create_table_line|
|
43
|
+
!create_table_line.include?("id: :uuid") ? create_table_line.scan(/"([^"]+)"/).flatten.first : nil
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def print_app_and_tables(app, tables)
|
48
|
+
ui.info("\n#{app}:-")
|
49
|
+
tables.each do |table|
|
50
|
+
ui.say(" ↳#{table}")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "thor"
|
4
|
+
require_relative "audit"
|
5
|
+
|
6
|
+
module Neetob
|
7
|
+
class CLI
|
8
|
+
module Code
|
9
|
+
class Commands < Thor
|
10
|
+
desc "audit", "Audit code base of neeto products to ensure they are properly maintained."
|
11
|
+
option :apps, type: :array, aliases: "-a", required: true, desc: "Neeto app names. Can be matched using the '*' wildcard. Example: \"neeto*\" \"neeto-cal-web\", also providing \"all\" as value matches all neeto product apps."
|
12
|
+
def audit
|
13
|
+
Audit.new(options[:apps], options[:sandbox]).run
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -28,8 +28,8 @@ module Neetob
|
|
28
28
|
repo.split("/").last
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
32
|
-
`git clone --quiet git@github.com:#{repo}.git /tmp/neetob/#{repo_name_without_org_suffix(repo)}`
|
31
|
+
def shallow_clone_repo_in_tmp_dir(repo)
|
32
|
+
`git clone --quiet --depth 1 git@github.com:#{repo}.git /tmp/neetob/#{repo_name_without_org_suffix(repo)}`
|
33
33
|
end
|
34
34
|
|
35
35
|
def add_commmit_and_push_changes(repo)
|
@@ -16,28 +16,32 @@ module Neetob
|
|
16
16
|
@repos = repos
|
17
17
|
@sandbox = sandbox
|
18
18
|
@should_fix_nanos = should_fix_nanos
|
19
|
+
@failed_repos = []
|
19
20
|
end
|
20
21
|
|
21
22
|
def run
|
22
23
|
matching_repos = should_fix_nanos ?
|
23
24
|
add_org_suffix(find_all_matching_gems) :
|
24
25
|
find_all_matching_apps_or_repos(repos, :github, sandbox)
|
26
|
+
@failed_repos = matching_repos
|
25
27
|
delete_and_create_temp_neetob_dir
|
26
28
|
matching_repos.each do |repo|
|
27
29
|
ui.info("\nWorking on #{repo}\n")
|
28
30
|
begin
|
29
|
-
|
31
|
+
shallow_clone_repo_in_tmp_dir(repo)
|
30
32
|
check_and_delete_remote_branch(repo)
|
31
33
|
bundle_install(repo)
|
32
34
|
fix_neeto_audit(repo)
|
33
35
|
ui.info(add_commmit_and_push_changes(repo))
|
34
36
|
delete_local_feature_branch(repo)
|
35
|
-
|
37
|
+
pull_request = client.create_pull_request(repo, "main", BRANCH_NAME, PR_TITLE)
|
36
38
|
ui.success("PR created in \"#{repo}\" project successfully.")
|
39
|
+
@failed_repos.delete(repo)
|
37
40
|
rescue StandardError => e
|
38
41
|
ExceptionHandler.new(e).process
|
39
42
|
end
|
40
43
|
end
|
44
|
+
print_failed_repos if @failed_repos.length > 0
|
41
45
|
`rm -rf /tmp/neetob`
|
42
46
|
end
|
43
47
|
|
@@ -50,6 +54,13 @@ module Neetob
|
|
50
54
|
def fix_neeto_audit(repo)
|
51
55
|
`#{cd_to_repo_in_tmp_dir(repo)} && bundle exec neeto-audit -a`
|
52
56
|
end
|
57
|
+
|
58
|
+
def print_failed_repos
|
59
|
+
ui.info("\nCompliance fix failed for repos:-")
|
60
|
+
@failed_repos.each do |repo|
|
61
|
+
ui.error(repo)
|
62
|
+
end
|
63
|
+
end
|
53
64
|
end
|
54
65
|
end
|
55
66
|
end
|
@@ -29,7 +29,7 @@ module Neetob
|
|
29
29
|
matching_repos.each do |repo|
|
30
30
|
ui.info("\n Working on #{repo} \n")
|
31
31
|
begin
|
32
|
-
|
32
|
+
shallow_clone_repo_in_tmp_dir(repo)
|
33
33
|
check_and_delete_remote_branch(repo)
|
34
34
|
update_script_file_permissions
|
35
35
|
execute_script(repo)
|
@@ -14,7 +14,7 @@ module Neetob
|
|
14
14
|
end
|
15
15
|
|
16
16
|
desc "commits", "List the commits of a user across the neeto apps"
|
17
|
-
option :apps, type: :array, aliases: "-a", default: ["*"], desc: "Github app names. Can be matched using the '*' wildcard. Example: \"neeto*\" \"neeto-cal-web\", also providing \"all\" as value matches all neeto
|
17
|
+
option :apps, type: :array, aliases: "-a", default: ["*"], desc: "Github app names. Can be matched using the '*' wildcard. Example: \"neeto*\" \"neeto-cal-web\", also providing \"all\" as value matches all neeto apps."
|
18
18
|
option :author, type: :string, required: true, desc: "Github username of the person whose commits you want to list"
|
19
19
|
option :duration, type: :string, required: true, desc: "Duration for which you want to list the commits. Example: \"6.months\" \"10.days\""
|
20
20
|
def commits
|
data/lib/neetob/cli.rb
CHANGED
@@ -9,6 +9,7 @@ module Neetob
|
|
9
9
|
require_relative "cli/users/commands"
|
10
10
|
require_relative "cli/fetchorupdate_repos/execute"
|
11
11
|
require_relative "cli/local/commands"
|
12
|
+
require_relative "cli/code/commands"
|
12
13
|
|
13
14
|
class_option :sandbox,
|
14
15
|
{
|
@@ -32,6 +33,9 @@ module Neetob
|
|
32
33
|
desc "local", "Interact with the local neeto repos"
|
33
34
|
subcommand "local", Local::Commands
|
34
35
|
|
36
|
+
desc "code", "Interact with code base of neeto products"
|
37
|
+
subcommand "code", Code::Commands
|
38
|
+
|
35
39
|
desc "make_repos_uptodate", "Uptodate all neeto repos"
|
36
40
|
def make_repos_uptodate
|
37
41
|
FetchorupdateRepos::Execute.new(options[:sandbox]).run
|
data/lib/neetob/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neetob
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Udai Gupta
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-03-
|
11
|
+
date: 2023-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -112,6 +112,8 @@ files:
|
|
112
112
|
- lib/neetob.rb
|
113
113
|
- lib/neetob/cli.rb
|
114
114
|
- lib/neetob/cli/base.rb
|
115
|
+
- lib/neetob/cli/code/audit.rb
|
116
|
+
- lib/neetob/cli/code/commands.rb
|
115
117
|
- lib/neetob/cli/fetchorupdate_repos/execute.rb
|
116
118
|
- lib/neetob/cli/github/auth.rb
|
117
119
|
- lib/neetob/cli/github/base.rb
|