Skip to content

Commit 6cf3c93

Browse files
authored
Add perltidy to lint workflow (#59)
* Add perltidy to the linter. Super linter does not do this, so it must be run separately. * Run perltidy on all perl files.
1 parent c376fde commit 6cf3c93

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1676
-1846
lines changed

.github/workflows/linter.yml

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
---
22
###########################
3-
###########################
43
## Linter GitHub Actions ##
54
###########################
6-
###########################
75
name: Lint Code Base
86

97
defaults:
108
run:
119
shell: bash
1210

13-
#
1411
# Documentation:
1512
# https://help.github.com/en/articles/workflow-syntax-for-github-actions
16-
#
1713

1814
#############################
1915
# Start the job on all push #
@@ -29,7 +25,7 @@ on:
2925
# Set the Job #
3026
###############
3127
jobs:
32-
build:
28+
lint:
3329
# Name the Job
3430
name: Lint Code Base
3531
# Set the agent to run on
@@ -78,12 +74,21 @@ jobs:
7874
VALIDATE_JAVASCRIPT_STANDARD: false
7975
FILTER_REGEX_EXCLUDE: .*/we_b_wor_k3.yml
8076

81-
# This doesn't work and so is disabled.
82-
# This either should be in a separate workflow or the workflow shoule be renamed.
83-
##################
84-
# Run Perl tests #
85-
##################
86-
#- name: Run Perl Tests
87-
# uses: skx/github-action-tester@master
88-
# with:
89-
# script: .github/run-perl-tests.sh
77+
perltidy:
78+
name: Run perltidy on Perl Files
79+
runs-on: ubuntu-latest
80+
container:
81+
image: perl:5.32
82+
steps:
83+
- uses: actions/checkout@v2
84+
- name: perl -V
85+
run: perl -V
86+
- name: Install dependencies
87+
run: cpanm -n Perl::Tidy
88+
- name: perltidy --version
89+
run: perltidy --version
90+
- name: Run perltidy
91+
shell: bash
92+
run: |
93+
shopt -s extglob globstar nullglob
94+
perltidy --pro=./.perltidyrc -b -bext='/' ./**/*.p[lm] ./**/*.t && git diff --exit-code

.perltidyrc

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
11
# PBP .perltidyrc file
2-
# Uncomment #-st to fully emulate perltidy -pbp
3-
4-
-l=120 # Max line width is 120 cols
2+
-l=120 # Max line width is 120 cols
53
-et=4 # Use tabs instead of spaces.
64
-i=4 # Indent level is 4 cols
75
-ci=4 # Continuation indent is 4 cols
8-
9-
#-st # Output to STDOUT
106
-b # Write the file inline and create a .bak file
11-
-se # Errors to STDERR
12-
13-
-vt=2 # Maximal vertical tightness
7+
-vt=0 # Minimal vertical tightness
148
-cti=0 # No extra indentation for closing brackets
159
-pt=2 # Maximum parenthesis tightness
1610
-bt=1 # Medium brace tightness
@@ -22,3 +16,6 @@
2216
-ce # Cuddled else
2317
-cb # Cuddled blocks
2418
-nbbc # Do not add blank lines before full length comments
19+
-nbot # No line break on ternary
20+
-nlop # No logical padding (this causes mixed tabs and spaces)
21+
-wn # Weld nested containers

bin/dev_scripts/PODtoHTML.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ sub write_index {
192192

193193
sub do_pod2html {
194194
my ($self, %o) = @_;
195-
my $psx = PODParser->new;
195+
my $psx = PODParser->new;
196196
$psx->{source_root} = $self->{source_root};
197197
$psx->{verbose} = $self->{verbose};
198198
$psx->{base_url} = ($self->{dest_url} // "") . "/" . (($self->{source_root} // "") =~ s|^.*/||r);

bin/import_ww2_db.pl

Lines changed: 51 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -52,48 +52,45 @@ =head1 DESCRIPTION
5252
use Try::Tiny;
5353
use DBI;
5454

55-
5655
BEGIN {
57-
use File::Basename qw/dirname/;
58-
use Cwd qw/abs_path/;
59-
$main::bin_dir = abs_path( dirname(__FILE__) );
60-
$main::lib_dir = dirname($main::bin_dir) . '/lib';
56+
use File::Basename qw/dirname/;
57+
use Cwd qw/abs_path/;
58+
$main::bin_dir = abs_path(dirname(__FILE__));
59+
$main::lib_dir = dirname($main::bin_dir) . '/lib';
6160
}
6261

6362
use lib "$main::lib_dir";
6463

6564
use DB::Schema;
6665
use DB::Schema::Result::CourseUser;
6766

68-
my $verbose = 0;
67+
my $verbose = 0;
6968
my $rebuild_db = 0;
7069
GetOptions(
71-
'r|rebuild+' => \$rebuild_db,
72-
'c|course=s' => \$course_name,
73-
'v|verbose+' => \$verbose
70+
'r|rebuild+' => \$rebuild_db,
71+
'c|course=s' => \$course_name,
72+
'v|verbose+' => \$verbose
7473
) || pod2usage();
7574

7675
my $ww2_dsn = "DBI:mysql:database=webwork;host=localhost;port=3306";
77-
my $dbh = DBI->connect($ww2_dsn, "webworkWrite", "password",
78-
{ RaiseError => 1, AutoCommit => 0 });
76+
my $dbh = DBI->connect($ww2_dsn, "webworkWrite", "password", { RaiseError => 1, AutoCommit => 0 });
7977

8078
my $ww3_dsn = "DBI:mysql:database=webwork3;host=localhost;port=3306";
81-
my $schema = DB::Schema->connect($ww3_dsn, "webworkWrite", "password");
79+
my $schema = DB::Schema->connect($ww3_dsn, "webworkWrite", "password");
8280

83-
my $course_rs = $schema->resultset('Course');
84-
my $user_rs = $schema->resultset('User');
81+
my $course_rs = $schema->resultset('Course');
82+
my $user_rs = $schema->resultset('User');
8583
my $problem_set_rs = $schema->resultset('ProblemSet');
8684

8785
# test if the database tables are created.
8886
try {
8987
$course_rs->getCourses();
90-
}
91-
catch {
88+
} catch {
9289
$schema->deploy;
9390
};
9491

9592
my %PERMISSIONS = (
96-
0 => "student",
93+
0 => "student",
9794
10 => "instructor",
9895
20 => "admin"
9996
);
@@ -103,53 +100,52 @@ BEGIN
103100
addUsers();
104101
addProblemSets();
105102

106-
107103
my $db_tables = {};
108104

109105
sub rebuild {
110106
# find the course users
111-
my @course_users = $user_rs->getUsers({course_name => $course_name});
107+
my @course_users = $user_rs->getUsers({ course_name => $course_name });
112108

113109
## delete the users
114110

115-
for my $course_user (@course_users){
116-
my @user_courses = $course_rs->getUserCourses({user_id => $course_user->{user_id}});
117-
# if each user is only in one course, delete the global user
111+
for my $course_user (@course_users) {
112+
my @user_courses = $course_rs->getUserCourses({ user_id => $course_user->{user_id} });
113+
# if each user is only in one course, delete the global user
118114
if (scalar(@user_courses) == 1) {
119-
$user_rs->deleteGlobalUser({user_id => $course_user->{user_id}});
115+
$user_rs->deleteGlobalUser({ user_id => $course_user->{user_id} });
120116
say "deleting the global user with username: $course_user->{username}" if $verbose;
121117
} else {
122-
$user_rs->deleteUser({course_name => $course_name, user_id => $course_user->{user_id}});
118+
$user_rs->deleteUser({ course_name => $course_name, user_id => $course_user->{user_id} });
123119
say "From course $course_name, deleting user $course_user->{username}" if $verbose;
124120
}
125121
}
126122

127123
## delete the problem sets
128124

129-
my @problem_sets = $problem_set_rs->getProblemSets({course_name => $course_name});
125+
my @problem_sets = $problem_set_rs->getProblemSets({ course_name => $course_name });
130126
for my $problem_set (@problem_sets) {
131-
$problem_set_rs->deleteProblemSet({course_name => $course_name, set_id => $problem_set->{set_id}});
127+
$problem_set_rs->deleteProblemSet({ course_name => $course_name, set_id => $problem_set->{set_id} });
132128
say "deleting problem set: $problem_set->{set_name}" if $verbose;
133129
}
134130

135131
# delete the course
136-
my $course = $course_rs->find({course_name => $course_name});
137-
$course->delete if $course;
132+
my $course = $course_rs->find({ course_name => $course_name });
133+
$course->delete if $course;
138134
say "deleting the course $course_name" if $verbose;
139135
return;
140136
}
141137

142138
sub buildTables {
143139
$db_tables = {};
144-
for my $name (qw/user key password past_answer/){
140+
for my $name (qw/user key password past_answer/) {
145141
$db_tables->{$name} = $course_name . "_" . $name;
146142
}
147143
return;
148144
}
149145

150146
sub addCourse {
151147
say "adding course: $course_name" if $verbose;
152-
$course_rs->addCourse({course_name => $course_name});
148+
$course_rs->addCourse({ course_name => $course_name });
153149
return;
154150
}
155151

@@ -158,74 +154,72 @@ sub addUsers {
158154
my $perm_table = $course_name . "_permission";
159155

160156
my $sth = $dbh->prepare("SELECT * FROM `$user_table`");
161-
$sth->execute();
162-
my $ref = $sth->fetchall_arrayref({});
163-
my @keys = keys %{$ref->[0]};
157+
$sth->execute();
158+
my $ref = $sth->fetchall_arrayref({});
159+
my @keys = keys %{ $ref->[0] };
164160

165-
my @user_fields = grep {
166-
$_ ne "login_params" && $_ ne "user_id" && $_ ne "email"
167-
} $user_rs->result_source->columns;
161+
my @user_fields =
162+
grep { $_ ne "login_params" && $_ ne "user_id" && $_ ne "email" } $user_rs->result_source->columns;
168163
my @course_user_param_fields = keys %$DB::Schema::Result::CourseUser::VALID_PARAMS;
169-
my @course_user_fields = grep {
170-
$_ !~ /\_id$/x && $_ ne "params"
171-
} $schema->resultset("CourseUser")->result_source->columns;
164+
my @course_user_fields =
165+
grep { $_ !~ /\_id$/x && $_ ne "params" } $schema->resultset("CourseUser")->result_source->columns;
172166

173167
for my $r (@$ref) {
174168
my $user_params = {
175169
username => $r->{user_id},
176-
email => $r->{email_address}
170+
email => $r->{email_address}
177171
};
178-
foreach my $key (@user_fields){
172+
foreach my $key (@user_fields) {
179173
$user_params->{$key} = $r->{$key} if defined($r->{$key});
180174
}
181175
# dd $user_params;
182-
my $user = $user_rs->find({username => $user_params->{username}});
176+
my $user = $user_rs->find({ username => $user_params->{username} });
183177
$user_rs->addGlobalUser($user_params) unless $user;
184-
say "Adding user with username $r->{user_id}" if $verbose && ! defined($user);
178+
say "Adding user with username $r->{user_id}" if $verbose && !defined($user);
185179
my $course_user = {
186180
username => $r->{user_id},
187-
params => {}
181+
params => {}
188182
};
189183
for my $key (@course_user_fields) {
190184
$course_user->{$key} = $r->{$key} if defined($r->{$key});
191185
}
192-
foreach my $key (@course_user_param_fields){
186+
foreach my $key (@course_user_param_fields) {
193187
$course_user->{params}->{$key} = $r->{$key} if defined($r->{$key});
194188
}
195189
my $user_id = $r->{user_id};
196-
my $sth2 = $dbh->prepare("SELECT * FROM `$perm_table` WHERE user_id = '$user_id';");
190+
my $sth2 = $dbh->prepare("SELECT * FROM `$perm_table` WHERE user_id = '$user_id';");
197191
$sth2->execute();
198192
my $perm = $sth2->fetchrow_hashref();
199-
$course_user->{role} = $PERMISSIONS{$perm->{permission}};
200-
$user_rs->addUser({course_name => $course_name},$course_user);
193+
$course_user->{role} = $PERMISSIONS{ $perm->{permission} };
194+
$user_rs->addUser({ course_name => $course_name }, $course_user);
201195
}
202196
return;
203197
}
204198

205199
sub addProblemSets {
206200
my @hw_param_keys = keys %$DB::Schema::Result::ProblemSet::HWSet::VALID_PARAMS;
207-
my $set_table = $course_name . "_set";
208-
my $sth = $dbh->prepare("SELECT * FROM `$set_table`");
201+
my $set_table = $course_name . "_set";
202+
my $sth = $dbh->prepare("SELECT * FROM `$set_table`");
209203
$sth->execute();
210-
my $ref = $sth->fetchall_arrayref({});
211-
my @keys = keys %{$ref->[0]};
204+
my $ref = $sth->fetchall_arrayref({});
205+
my @keys = keys %{ $ref->[0] };
212206
# dd @keys;
213207
for my $r (@$ref) {
214208
my $set_params = {
215209
set_name => $r->{set_id},
216-
dates => {},
217-
params => {},
210+
dates => {},
211+
params => {},
218212
};
219-
if ($r->{assignment_type} eq 'default') { # it's a homework set
213+
if ($r->{assignment_type} eq 'default') { # it's a homework set
220214
for my $key (@hw_param_keys) {
221215
$set_params->{params}->{$key} = $r->{$key} if defined($r->{$key});
222216
}
223217
for my $key (@DB::Schema::Result::ProblemSet::HWSet::VALID_DATES) {
224-
$set_params->{dates}->{$key} = $r->{$key .'_date'} if defined($r->{$key.'_date'});
218+
$set_params->{dates}->{$key} = $r->{ $key . '_date' } if defined($r->{ $key . '_date' });
225219
}
226220
}
227221

228-
$problem_set_rs->addProblemSet({course_name => $course_name}, $set_params);
222+
$problem_set_rs->addProblemSet({ course_name => $course_name }, $set_params);
229223
say "Adding set with name: $set_params->{set_name}" if $verbose;
230224
}
231225
return;

0 commit comments

Comments
 (0)