Last active
October 20, 2018 22:53
-
-
Save dgreen/dca02b0056edfe6df9697d7b99ab0ec9 to your computer and use it in GitHub Desktop.
Unpack a Canvas Submission
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env perl -w | |
# File: unpack_canvas_submissions.pl | |
# Desc: unpack submissions.zip from Canvas | |
# Vers: 1.1 dgg 20181020 - update for Mac Mojave (and any changes due to recent Canvas updates) | |
# Vers: 1.0 dgg 20171129 - fixup syntax for High Sierra Perl and declare version 1.0 | |
# Vers: 0.3 dgg 20171108 - move original submissions.zip to trash | |
# Vers: 0.2 dgg 20170910 - eliminate copy of submissions.zip | |
# Vers: 0.1 dgg 20160216 - original coding | |
# | |
# Limitation: Present version is tied to MacOS, Linux | |
# trash command which copies file to trash (on MacOS homebrew: brew install trash) | |
use File::Basename; | |
use File::Copy; | |
my $prog_name = basename $0; | |
if ( $#ARGV != 0 ) { | |
print "ARGV count = $#ARGV \n"; | |
print "$prog_name: Canvas ZIP file must be supplied.\n"; | |
exit 4; | |
} | |
my $canvas_zip_file = $ARGV[0]; | |
if ( ! -e $canvas_zip_file ) { | |
print "$prog_name: File $canvas_zip_file does not exist.\n"; | |
exit 4; | |
} | |
# Note: unlike Finder's unzip behavior no directory is necessarily made on unzipping | |
my ($submission_dir, $submission_path, $submission_ext) = fileparse($canvas_zip_file, (".zip")); | |
mkdir $submission_dir; | |
copy($canvas_zip_file, $submission_dir); | |
chdir $submission_dir; | |
`unzip $canvas_zip_file`; | |
unlink $canvas_zip_file; | |
# from http://stackoverflow.com/questions/1045792/how-can-i-list-all-of-the-files-in-a-directory-with-perl | |
# | |
opendir my $dir, '.' or die "Cannot open directory: $!"; | |
my @files = readdir $dir; | |
closedir $dir; | |
# TBD skip over | |
foreach (@files) { | |
# print "File: $_\n"; | |
my ($directory_name, $dirs, $ext) = fileparse($_, (".zip")); | |
# print " with extension = $ext\n"; | |
if ($ext eq '.zip') { | |
mkdir $directory_name; | |
move($_,$directory_name); | |
chdir $directory_name; | |
# Folowing does not like spaces in filename | |
$zip_file = quotemeta $_; | |
`unzip $zip_file`; | |
# print "Unzipped $_ file\n"; | |
unlink $_; | |
chdir '..'; | |
} | |
} | |
chdir '..'; | |
`trash $canvas_zip_file`; | |
print "Complete\n"; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment