}
}
generateJson(project);
+ VirtualFileManager.getInstance().refreshWithoutFileWatcher(false);
packCourse(baseDir, course);
synchronize(project);
}
private void packCourse(@NotNull final VirtualFile baseDir, @NotNull final Course course) {
try {
- File zipFile = new File(myLocationDir, myZipName + ".zip");
+ final File zipFile = new File(myLocationDir, myZipName + ".zip");
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile)));
final CCLanguageManager manager = CCUtils.getStudyLanguageManager(course);
- for (Lesson lesson : course.getLessons()) {
- final VirtualFile lessonDir = baseDir.findChild(EduNames.LESSON + String.valueOf(lesson.getIndex()));
- if (lessonDir == null) continue;
- ZipUtil.addFileOrDirRecursively(zos, null, new File(lessonDir.getPath()), lessonDir.getName(), new FileFilter() {
+ VirtualFile[] courseFiles = baseDir.getChildren();
+ for (VirtualFile file : courseFiles) {
+ ZipUtil.addFileOrDirRecursively(zos, null, new File(file.getPath()), file.getName(), new FileFilter() {
@Override
public boolean accept(File pathname) {
String name = pathname.getName();
String nameWithoutExtension = FileUtil.getNameWithoutExtension(pathname);
- if (nameWithoutExtension.endsWith(".answer") || name.contains("_windows")) {
+ if (nameWithoutExtension.endsWith(".answer") || name.contains("_windows") || name.contains(".idea")
+ || FileUtil.filesEqual(pathname, zipFile)) {
return false;
}
- return manager == null || manager.packFile(pathname);
+ return manager != null && !manager.doNotPackFile(pathname);
}
}, null);
}
- packFile("hints", zos, baseDir);
- packFile("course.json", zos, baseDir);
- if (manager != null) {
- String[] additionalFilesToPack = manager.getAdditionalFilesToPack();
- for (String filename: additionalFilesToPack) {
- packFile(filename, zos, baseDir);
- }
- }
zos.close();
Messages.showInfoMessage("Course archive was saved to " + zipFile.getPath(), "Course Archive Was Created Successfully");
}
}
}
}
-
- private static void packFile(@NotNull final String filename,
- @NotNull final ZipOutputStream zipOutputStream,
- @NotNull final VirtualFile baseDir) {
- try {
- File file = new File(baseDir.getPath(), filename);
- if (!file.exists()) {
- return;
- }
- ZipUtil.addFileOrDirRecursively(zipOutputStream, null, file, filename, null, null);
- }
- catch (IOException e) {
- LOG.error(e);
- }
- }
}
\ No newline at end of file