From 1de76126f25818a066d55b740cc83a1b7e177fe6 Mon Sep 17 00:00:00 2001 From: 0x1eef <0x1eef@protonmail.com> Date: Wed, 13 Mar 2024 09:15:47 -0300 Subject: [PATCH] Add rake/tasks/rubocop.rake --- .rubocop.yml | 37 ++++++++++++++++++++++ Rakefile.rb | 38 ++-------------------- {rakelib => rake/lib}/builders.rb | 0 rake/tasks/gem.rake | 37 ++++++++++++++++++++++ rake/tasks/rubocop.rake | 32 +++++++++++++++++++ twenty-cli/.rubocop.yml | 9 ++++-- twenty-cli/twenty-cli.gemspec | 2 +- twenty-cli/twenty-cli.gemspec.erb | 2 +- twenty-client/.rubocop.yml | 42 +++++++++++++++++++++++++ twenty-client/Gemfile.lock | 42 +++++++++++++++++++++++++ twenty-client/Rules | 4 ++- twenty-client/twenty-client.gemspec | 1 + twenty-client/twenty-client.gemspec.erb | 1 + twenty-server/.rubocop.yml | 9 ++++-- twenty-server/lib/twenty-server/path.rb | 2 ++ twenty-server/twenty-server.gemspec | 2 +- twenty-server/twenty-server.gemspec.erb | 2 +- 17 files changed, 218 insertions(+), 44 deletions(-) create mode 100644 .rubocop.yml rename {rakelib => rake/lib}/builders.rb (100%) create mode 100644 rake/tasks/gem.rake create mode 100644 rake/tasks/rubocop.rake create mode 100644 twenty-client/.rubocop.yml diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..533a324 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,37 @@ +## +# Plugins +require: + - standard + +## +# Defaults: standard-rb +inherit_gem: + standard: config/base.yml + +## +# All cops +AllCops: + TargetRubyVersion: 3.2 + Include: + - lib/*.rb + - lib/**/*.rb + - libexec/* + - libexec/*/** + - bin/* + - test/* + +## +# Enabled +Style/FrozenStringLiteralComment: + Enabled: true + +## +# Disabled +Layout/ArgumentAlignment: + Enabled: false +Layout/MultilineMethodCallIndentation: + Enabled: false +Layout/EmptyLineBetweenDefs: + Enabled: false +Style/TrivialAccessors: + Enabled: false diff --git a/Rakefile.rb b/Rakefile.rb index cedde7e..4b6b725 100644 --- a/Rakefile.rb +++ b/Rakefile.rb @@ -1,37 +1,5 @@ require "bundler/setup" -require_relative "rakelib/builders" + load "twenty-client/tasks/nanoc.rake" - -namespace :gem do - version = File.binread(File.join(Dir.getwd, "VERSION")).chomp - desc "Build gemspec" - task :gemspec, [:version] do |t, args| - GemSpec.call(args.version || version) - end - - desc "Copy files to stage directory" - task :copy, [:version] => [:gemspec] do |t, args| - Copy.call(args.version || version) - end - - desc "Build gems" - task :build, [:version] => [:set_env, "nanoc:clean", "nanoc:build", :copy] do |t, args| - Build.call(args.version || version) - end - - desc "Deploy gems" - task :deploy, [:version] => [:build] do |t, args| - Deploy.call(args.version || version) - end - - task :set_env, [:version] => [:set_version] do |t,args| - ENV["buildenv"] ||= "production" - end - - task :set_version, [:version] do |t,args| - next unless args.version - File.binwrite File.join(Dir.getwd, "VERSION"), - "#{args.version}\n" - end -end - +load "rake/tasks/gem.rake" +load "rake/tasks/rubocop.rake" diff --git a/rakelib/builders.rb b/rake/lib/builders.rb similarity index 100% rename from rakelib/builders.rb rename to rake/lib/builders.rb diff --git a/rake/tasks/gem.rake b/rake/tasks/gem.rake new file mode 100644 index 0000000..a2ca9ef --- /dev/null +++ b/rake/tasks/gem.rake @@ -0,0 +1,37 @@ +#!/usr/bin/env ruby + +namespace :gem do + require_relative "../lib/builders" + root = File.realpath File.join(__dir__, "..", "..") + version = File.binread(File.join(root, "VERSION")).chomp + + desc "Build gemspec" + task :gemspec, [:version] do |t, args| + GemSpec.call(args.version || version) + end + + desc "Copy files to stage directory" + task :copy, [:version] => [:gemspec] do |t, args| + Copy.call(args.version || version) + end + + desc "Build gems" + task :build, [:version] => [:set_env, "nanoc:clean", "nanoc:build", :copy] do |t, args| + Build.call(args.version || version) + end + + desc "Deploy gems" + task :deploy, [:version] => [:build] do |t, args| + Deploy.call(args.version || version) + end + + task :set_env, [:version] => [:set_version] do |t,args| + ENV["buildenv"] ||= "production" + end + + task :set_version, [:version] do |t,args| + next unless args.version + File.binwrite File.join(root, "VERSION"), + "#{args.version}\n" + end +end diff --git a/rake/tasks/rubocop.rake b/rake/tasks/rubocop.rake new file mode 100644 index 0000000..f9dc3ff --- /dev/null +++ b/rake/tasks/rubocop.rake @@ -0,0 +1,32 @@ +#!/usr/bin/env ruby + +namespace :rubocop do + root = File.realpath File.join(__dir__, "..", "..") + gems = [ + File.join(root, "twenty-cli"), + File.join(root, "twenty-server"), + File.join(root, "twenty-client") + ] + + desc "Copy '.rubocop.yml' into place" + task :copy do + gems.each do + dest = File.join(_1, ".rubocop.yml") + cp File.join(root, ".rubocop.yml"), dest + warn = "##\n" \ + "# DON'T EDIT THIS FILE DIRECTLY.\n" \ + "# Edit '.rubocop.yml' at the root of the project instead.\n" \ + "##\n\n" + File.write dest, [warn, *File.read(dest).each_line].join + end + end + + desc "Apply rubocop rules" + task :apply do + gems.each do + Dir.chdir(_1) do + Bundler.with_unbundled_env { sh "bundle exec rubocop -A" } + end + end + end +end diff --git a/twenty-cli/.rubocop.yml b/twenty-cli/.rubocop.yml index bf6966d..bf7a2b9 100644 --- a/twenty-cli/.rubocop.yml +++ b/twenty-cli/.rubocop.yml @@ -1,3 +1,8 @@ +## +# DON'T EDIT THIS FILE DIRECTLY. +# Edit '.rubocop.yml' at the root of the project instead. +## + ## # Plugins require: @@ -16,9 +21,9 @@ AllCops: - lib/*.rb - lib/**/*.rb - libexec/* - - libexec/twenty/* + - libexec/*/** - bin/* - - test/*_test.rb + - test/* ## # Enabled diff --git a/twenty-cli/twenty-cli.gemspec b/twenty-cli/twenty-cli.gemspec index fa92e18..b142035 100644 --- a/twenty-cli/twenty-cli.gemspec +++ b/twenty-cli/twenty-cli.gemspec @@ -22,5 +22,5 @@ Gem::Specification.new do |gem| gem.add_development_dependency "test-unit", "~> 3.5.7" gem.add_development_dependency "yard", "~> 0.9" gem.add_development_dependency "redcarpet", "~> 3.5" - gem.add_development_dependency "standard", "~> 1.13" + gem.add_development_dependency "standard", "~> 1.35" end diff --git a/twenty-cli/twenty-cli.gemspec.erb b/twenty-cli/twenty-cli.gemspec.erb index 7e22d07..67d197a 100644 --- a/twenty-cli/twenty-cli.gemspec.erb +++ b/twenty-cli/twenty-cli.gemspec.erb @@ -22,5 +22,5 @@ Gem::Specification.new do |gem| gem.add_development_dependency "test-unit", "~> 3.5.7" gem.add_development_dependency "yard", "~> 0.9" gem.add_development_dependency "redcarpet", "~> 3.5" - gem.add_development_dependency "standard", "~> 1.13" + gem.add_development_dependency "standard", "~> 1.35" end diff --git a/twenty-client/.rubocop.yml b/twenty-client/.rubocop.yml new file mode 100644 index 0000000..bf7a2b9 --- /dev/null +++ b/twenty-client/.rubocop.yml @@ -0,0 +1,42 @@ +## +# DON'T EDIT THIS FILE DIRECTLY. +# Edit '.rubocop.yml' at the root of the project instead. +## + +## +# Plugins +require: + - standard + +## +# Defaults: standard-rb +inherit_gem: + standard: config/base.yml + +## +# All cops +AllCops: + TargetRubyVersion: 3.2 + Include: + - lib/*.rb + - lib/**/*.rb + - libexec/* + - libexec/*/** + - bin/* + - test/* + +## +# Enabled +Style/FrozenStringLiteralComment: + Enabled: true + +## +# Disabled +Layout/ArgumentAlignment: + Enabled: false +Layout/MultilineMethodCallIndentation: + Enabled: false +Layout/EmptyLineBetweenDefs: + Enabled: false +Style/TrivialAccessors: + Enabled: false diff --git a/twenty-client/Gemfile.lock b/twenty-client/Gemfile.lock index ad557e5..27968bf 100644 --- a/twenty-client/Gemfile.lock +++ b/twenty-client/Gemfile.lock @@ -8,6 +8,7 @@ GEM specs: addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) + ast (2.4.2) colored (1.2) concurrent-ruby (1.2.3) cri (2.15.11) @@ -18,7 +19,10 @@ GEM immutable-ruby (0.1.0) concurrent-ruby (~> 1.1) sorted_set (~> 1.0) + json (2.7.1) json_schema (0.21.0) + language_server-protocol (3.17.0.3) + lint_roller (1.1.0) listen (3.8.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) @@ -59,16 +63,40 @@ GEM nanoc-webpack.rb (0.5.6) ryo.rb (~> 0.4) parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc pastel (0.8.0) tty-color (~> 0.5) psych (5.1.2) stringio public_suffix (5.0.4) + racc (1.7.3) + rainbow (3.1.1) rainpress (1.0.1) rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) rbtree (0.4.6) + regexp_parser (2.9.0) + rexml (3.2.6) + rubocop (1.62.1) + json (~> 2.3) + language_server-protocol (>= 3.17.0) + parallel (~> 1.10) + parser (>= 3.3.0.2) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.31.1, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.31.2) + parser (>= 3.3.0.4) + rubocop-performance (1.20.2) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + ruby-progressbar (1.13.0) ryo.rb (0.4.7) sass (3.7.4) sass-listen (~> 4.0.0) @@ -80,12 +108,25 @@ GEM sorted_set (1.0.3) rbtree set (~> 1.0) + standard (1.35.1) + language_server-protocol (~> 3.17.0.2) + lint_roller (~> 1.0) + rubocop (~> 1.62.0) + standard-custom (~> 1.0.0) + standard-performance (~> 1.3) + standard-custom (1.0.2) + lint_roller (~> 1.0) + rubocop (~> 1.50) + standard-performance (1.3.1) + lint_roller (~> 1.1) + rubocop-performance (~> 1.20.2) stringio (3.1.0) tty-color (0.6.0) tty-command (0.10.1) pastel (~> 0.8) tty-platform (0.3.0) tty-which (0.5.0) + unicode-display_width (2.5.0) zeitwerk (2.6.13) PLATFORMS @@ -99,6 +140,7 @@ DEPENDENCIES nanoc-webpack.rb (~> 0.5) rainpress (~> 1.0) sass (~> 3.7) + standard (~> 1.35) twenty-client! BUNDLED WITH diff --git a/twenty-client/Rules b/twenty-client/Rules index 20e2194..3053309 100644 --- a/twenty-client/Rules +++ b/twenty-client/Rules @@ -1,4 +1,6 @@ #!/usr/bin/env ruby +# frozen_string_literal: true + require "nanoc-webpack" buildenv = ENV["buildenv"] || "development" @@ -27,4 +29,4 @@ require_rules "nanoc/rules/projects" require_rules "nanoc/rules/tasks" compile("/**/*") { write(nil) } -layout '/**/*', :erb +layout "/**/*", :erb diff --git a/twenty-client/twenty-client.gemspec b/twenty-client/twenty-client.gemspec index ee57859..f8d1ecd 100644 --- a/twenty-client/twenty-client.gemspec +++ b/twenty-client/twenty-client.gemspec @@ -19,4 +19,5 @@ Gem::Specification.new do |gem| gem.add_development_dependency "rainpress", "~> 1.0" gem.add_development_dependency "nanoc-webpack.rb", "~> 0.5" gem.add_development_dependency "listen", "~> 3.8" + gem.add_development_dependency "standard", "~> 1.35" end diff --git a/twenty-client/twenty-client.gemspec.erb b/twenty-client/twenty-client.gemspec.erb index d25edcb..d3a3d15 100644 --- a/twenty-client/twenty-client.gemspec.erb +++ b/twenty-client/twenty-client.gemspec.erb @@ -19,4 +19,5 @@ Gem::Specification.new do |gem| gem.add_development_dependency "rainpress", "~> 1.0" gem.add_development_dependency "nanoc-webpack.rb", "~> 0.5" gem.add_development_dependency "listen", "~> 3.8" + gem.add_development_dependency "standard", "~> 1.35" end diff --git a/twenty-server/.rubocop.yml b/twenty-server/.rubocop.yml index bf6966d..bf7a2b9 100644 --- a/twenty-server/.rubocop.yml +++ b/twenty-server/.rubocop.yml @@ -1,3 +1,8 @@ +## +# DON'T EDIT THIS FILE DIRECTLY. +# Edit '.rubocop.yml' at the root of the project instead. +## + ## # Plugins require: @@ -16,9 +21,9 @@ AllCops: - lib/*.rb - lib/**/*.rb - libexec/* - - libexec/twenty/* + - libexec/*/** - bin/* - - test/*_test.rb + - test/* ## # Enabled diff --git a/twenty-server/lib/twenty-server/path.rb b/twenty-server/lib/twenty-server/path.rb index d4f6d1d..8e5612d 100644 --- a/twenty-server/lib/twenty-server/path.rb +++ b/twenty-server/lib/twenty-server/path.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module Twenty::Path ## # @return [String] diff --git a/twenty-server/twenty-server.gemspec b/twenty-server/twenty-server.gemspec index 5cbd478..4bd61d6 100644 --- a/twenty-server/twenty-server.gemspec +++ b/twenty-server/twenty-server.gemspec @@ -20,5 +20,5 @@ Gem::Specification.new do |gem| gem.add_runtime_dependency "webrick", "~> 1.8" gem.add_runtime_dependency "graphql", "~> 2.2" gem.add_development_dependency "test-unit", "~> 3.5.7" - gem.add_development_dependency "standard", "~> 1.13" + gem.add_development_dependency "standard", "~> 1.35" end diff --git a/twenty-server/twenty-server.gemspec.erb b/twenty-server/twenty-server.gemspec.erb index 32cf2bf..1035a26 100644 --- a/twenty-server/twenty-server.gemspec.erb +++ b/twenty-server/twenty-server.gemspec.erb @@ -20,5 +20,5 @@ Gem::Specification.new do |gem| gem.add_runtime_dependency "webrick", "~> 1.8" gem.add_runtime_dependency "graphql", "~> 2.2" gem.add_development_dependency "test-unit", "~> 3.5.7" - gem.add_development_dependency "standard", "~> 1.13" + gem.add_development_dependency "standard", "~> 1.35" end