Browse Source

Implement versioning system with 'npm run compile'

The script now builds the software and creates a gzip file with all the required files for it run properly
Lucas de Souza 5 years ago
parent
commit
5885f7a4e1
14 changed files with 341 additions and 59859 deletions
  1. 1 1
      .gitignore
  2. 1 1
      .ima_version.json
  3. 0 59588
      build/ivprog.bundle.js
  4. 0 1
      build/ivprog.bundle.js.map
  5. 29 0
      changeScriptSourcePlugin.js
  6. 0 118
      index.html
  7. BIN
      ivprog.tar.gz
  8. 245 41
      package-lock.json
  9. 5 3
      package.json
  10. 0 77
      runner.html
  11. 3 3
      templates/index.html
  12. 2 21
      updateVersionPlugin.js
  13. 25 0
      versionFileHelper.js
  14. 30 5
      webpack.config.js

+ 1 - 1
.gitignore

@@ -1,5 +1,5 @@
 #compiled files
-#/build
+/build
 
 # dependencies
 /node_modules

+ 1 - 1
.ima_version.json

@@ -1 +1 @@
-{ "version":"2019_03_12 17_04" }
+{ "version":"2019_03_15 17_18" }

File diff suppressed because it is too large
+ 0 - 59588
build/ivprog.bundle.js


File diff suppressed because it is too large
+ 0 - 1
build/ivprog.bundle.js.map


+ 29 - 0
changeScriptSourcePlugin.js

@@ -0,0 +1,29 @@
+// If your plugin is direct dependent to the html webpack plugin:
+var HtmlWebpackPlugin = require('html-webpack-plugin');
+
+function ChangeScriptSourcePlugin () {}
+
+ChangeScriptSourcePlugin.prototype.apply = function (compiler) {
+  compiler.hooks.compilation.tap('ChangeScriptSourcePlugin', function (compilation) {
+    console.log('The compiler is starting a new compilation...')
+    // Staic Plugin interface |compilation |HOOK NAME | register listener 
+    HtmlWebpackPlugin.getHooks(compilation).alterAssetTags.tapAsync(
+      'ChangeScriptSourcePlugin', // <-- Set a meaningful name here for stacktraces
+      function (data, cb) {
+        // Manipulate the content
+        const listSize = data.assetTags.scripts.length;
+        for (let i = 0; i < listSize; ++i) {
+          const tag = data.assetTags.scripts[i];
+          var path = tag.attributes.src;
+          // remove build/ from src...
+          data.assetTags.scripts[i].attributes.src = path.substring(path.indexOf("/") + 1);
+        }
+
+        // Tell webpack to move on
+        cb(null, data);
+      }
+    )
+  })
+}
+
+module.exports = ChangeScriptSourcePlugin

+ 0 - 118
index.html

@@ -1,118 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
-    <meta http-equiv="cache-control" content="no-cache">
-    <meta http-equiv="cache-control" content="no-store">
-    <meta http-equiv="cache-control" content="max-age=0">
-    <meta http-equiv="expires" content="-1">
-    <meta http-equiv="pragma" content="no-cache">
-    <title></title>
-    <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
-    <link rel="stylesheet" type="text/css" href="js/semantic/semantic.min.css">
-    <link rel="stylesheet" type="text/css" href="css/ivprog-visual-1.0.css">
-    <link rel="stylesheet" type="text/css" href="css/ivprog-term.css">
-    <script src="js/jquery-3.3.1.min.js"></script>
-    
-  </head>
-  <body>
-
-    <div class="ui height_100 add_accordion" id="ui_main_div">
-
-      <div class="title default_visual_title">
-        <i class="dropdown icon"></i>
-      </div>
-
-    <div class="content height_100">
-   
-      <div class="ui raised container segment div_to_body">
-
-        <div class="ui container main_title only_in_frame">
-          <h2>iVProg</h2>
-        </div>
-
-        <div class="ui icon menu center aligned container" style="width: 438px; margin-top: -20px;">
-          <a class="item active visual_coding_button">
-            <i class="window maximize outline icon"></i>
-          </a>
-          <a class="item textual_coding_button">
-            <i class="code icon"></i>
-          </a>
-          <a class="item upload_file_button disabled">
-            <i class="upload icon"></i>
-          </a>
-          <a class="item download_file_button disabled">
-            <i class="download icon"></i>
-          </a>
-          <a class="item undo_button disabled">
-            <i class="undo icon"></i>
-          </a>
-          <a class="item redo_button disabled">
-            <i class="redo icon"></i>
-          </a>
-          <a class="item run_button">
-            <i class="play icon"></i>
-          </a>
-          <a class="item assessment assessment_button">
-            <i class="check icon"></i>
-          </a>
-          <!--<a class="item expand_button">
-            <i class="expand arrows alternate icon"></i>
-          </a>-->
-          <a class="item help_button">
-            <i class="help icon"></i>
-          </a>
-        </div>
-
-        <div class="ui one column container segment ivprog_visual_panel loading">
-
-          <div class="global_var">
-            <i class="icon plus circle purple add_global_button"></i>
-            <i class="icon circle white back"></i>
-
-            <div class="ui icon button add-globalVar-button add_global_button purple"><i class="icon superscript"></i></div>
-
-            <div class="list_globals" id="listGlobalsHandle"></div>
-
-          </div>
-
-          <div class="all_functions list-group" id="listWithHandle">
-
-          </div>
-
-
-          <div class="ui teal small labeled icon button add_function_button">
-            <data class="i18n" value="ui:btn_function">Function</data>
-            <i class="add icon"></i>
-          </div>
-          <div class="program_final"></div>
-
-        </div>
-
-
-        <div class="ui one column container segment ivprog_textual_panel loading" style="display: none;">
-          <textarea class="ivprog_textual_code" readonly></textarea>
-        </div>
-
-        <div id='ivprog-term' class="six column wide">
-          <div class="div_toggle_console"><i class="inverted terminal icon green button_toggle_console"></i></div>
-        </div>
-      </div>
-
-    </div>
-
-  </div>
-  <script type="text/javascript" src="build/vendors~main.3159d28bcf7272c02dde.js"></script><script type="text/javascript" src="build/main.2d3af48627bfedf98bba.js"></script></body>
-  <script src="js/semantic/semantic.min.js"></script>
-  <script src="js/semantic/semantic-buttons.js"></script>
-  <script src="js/jquery-ui.js"></script>
-  <script src="js/Sortable.js"></script>
-  <script src="js/iassign-integration-functions.js"></script>
-  <script>
-    $(document).ready(() => {
-      ivprogCore.LocalizedStrings.updateTagText();
-      ivprogCore.initVisualUI();
-      prepareEnvironment();
-    });
-  </script>
-</html>

BIN
ivprog.tar.gz


+ 245 - 41
package-lock.json

@@ -1106,6 +1106,12 @@
         }
       }
     },
+    "ansi-colors": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
+      "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
+      "dev": true
+    },
     "ansi-regex": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
@@ -1310,6 +1316,21 @@
       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
       "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
     },
+    "array-union": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+      "dev": true,
+      "requires": {
+        "array-uniq": "^1.0.1"
+      }
+    },
+    "array-uniq": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+      "dev": true
+    },
     "array-unique": {
       "version": "0.3.2",
       "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
@@ -1994,6 +2015,15 @@
         }
       }
     },
+    "clean-webpack-plugin": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-2.0.1.tgz",
+      "integrity": "sha512-vway5pXGVd91bicwjaf8j188Al6VMf9R9Ekl6q0qeiaWStRsOOXuh4qtjX1UrUvmz5XevQVCdjBuzr4Tzsnpog==",
+      "dev": true,
+      "requires": {
+        "del": "^4.0.0"
+      }
+    },
     "cliui": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz",
@@ -2246,6 +2276,43 @@
       "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
       "dev": true
     },
+    "copy-webpack-plugin": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.1.tgz",
+      "integrity": "sha512-yMTURAkYZO/6h6pGMbHQl2jpKtRNC+0Cy/4kRRP6qUHmpbGGAzNnyMecE6aHgGFCb4ksrL3YcDqYGb8ds3J9cw==",
+      "dev": true,
+      "requires": {
+        "cacache": "^11.3.1",
+        "find-cache-dir": "^2.0.0",
+        "glob-parent": "^3.1.0",
+        "globby": "^7.1.1",
+        "is-glob": "^4.0.0",
+        "loader-utils": "^1.1.0",
+        "minimatch": "^3.0.4",
+        "normalize-path": "^3.0.0",
+        "p-limit": "^2.1.0",
+        "serialize-javascript": "^1.4.0",
+        "webpack-log": "^2.0.0"
+      },
+      "dependencies": {
+        "normalize-path": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+          "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+          "dev": true
+        },
+        "webpack-log": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
+          "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
+          "dev": true,
+          "requires": {
+            "ansi-colors": "^3.0.0",
+            "uuid": "^3.3.2"
+          }
+        }
+      }
+    },
     "core-js": {
       "version": "2.5.7",
       "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
@@ -2508,6 +2575,49 @@
         }
       }
     },
+    "del": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/del/-/del-4.0.0.tgz",
+      "integrity": "sha512-/BnSJ+SuZyLu7xMn48kZY0nMXDi+5KNmR4g8n21Wivsl8+B9njV6/5kcTNE9juSprp0zRWBU28JuHUq0FqK1Nw==",
+      "dev": true,
+      "requires": {
+        "globby": "^6.1.0",
+        "is-path-cwd": "^2.0.0",
+        "is-path-in-cwd": "^2.0.0",
+        "p-map": "^2.0.0",
+        "pify": "^4.0.1",
+        "rimraf": "^2.6.2"
+      },
+      "dependencies": {
+        "globby": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+          "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+          "dev": true,
+          "requires": {
+            "array-union": "^1.0.1",
+            "glob": "^7.0.3",
+            "object-assign": "^4.0.1",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          },
+          "dependencies": {
+            "pify": {
+              "version": "2.3.0",
+              "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+              "dev": true
+            }
+          }
+        },
+        "pify": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+          "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+          "dev": true
+        }
+      }
+    },
     "depd": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@@ -2551,6 +2661,26 @@
         "randombytes": "^2.0.0"
       }
     },
+    "dir-glob": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
+      "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
+      "dev": true,
+      "requires": {
+        "path-type": "^3.0.0"
+      },
+      "dependencies": {
+        "path-type": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+          "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+          "dev": true,
+          "requires": {
+            "pify": "^3.0.0"
+          }
+        }
+      }
+    },
     "dns-prefetch-control": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/dns-prefetch-control/-/dns-prefetch-control-0.1.0.tgz",
@@ -3479,7 +3609,8 @@
         "ansi-regex": {
           "version": "2.1.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "aproba": {
           "version": "1.2.0",
@@ -3500,12 +3631,14 @@
         "balanced-match": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "brace-expansion": {
           "version": "1.1.11",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "balanced-match": "^1.0.0",
             "concat-map": "0.0.1"
@@ -3520,17 +3653,20 @@
         "code-point-at": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "concat-map": {
           "version": "0.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "console-control-strings": {
           "version": "1.1.0",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "core-util-is": {
           "version": "1.0.2",
@@ -3647,7 +3783,8 @@
         "inherits": {
           "version": "2.0.3",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "ini": {
           "version": "1.3.5",
@@ -3659,6 +3796,7 @@
           "version": "1.0.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "number-is-nan": "^1.0.0"
           }
@@ -3673,6 +3811,7 @@
           "version": "3.0.4",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "brace-expansion": "^1.1.7"
           }
@@ -3680,12 +3819,14 @@
         "minimist": {
           "version": "0.0.8",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "minipass": {
           "version": "2.2.4",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "safe-buffer": "^5.1.1",
             "yallist": "^3.0.0"
@@ -3704,6 +3845,7 @@
           "version": "0.5.1",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "minimist": "0.0.8"
           }
@@ -3784,7 +3926,8 @@
         "number-is-nan": {
           "version": "1.0.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "object-assign": {
           "version": "4.1.1",
@@ -3796,6 +3939,7 @@
           "version": "1.4.0",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "wrappy": "1"
           }
@@ -3881,7 +4025,8 @@
         "safe-buffer": {
           "version": "5.1.1",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "safer-buffer": {
           "version": "2.1.2",
@@ -3917,6 +4062,7 @@
           "version": "1.0.2",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "code-point-at": "^1.0.0",
             "is-fullwidth-code-point": "^1.0.0",
@@ -3936,6 +4082,7 @@
           "version": "3.0.1",
           "bundled": true,
           "dev": true,
+          "optional": true,
           "requires": {
             "ansi-regex": "^2.0.0"
           }
@@ -3979,12 +4126,14 @@
         "wrappy": {
           "version": "1.0.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         },
         "yallist": {
           "version": "3.0.2",
           "bundled": true,
-          "dev": true
+          "dev": true,
+          "optional": true
         }
       }
     },
@@ -4073,6 +4222,20 @@
         "which": "^1.2.14"
       }
     },
+    "globby": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
+      "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
+      "dev": true,
+      "requires": {
+        "array-union": "^1.0.1",
+        "dir-glob": "^2.0.0",
+        "glob": "^7.1.2",
+        "ignore": "^3.3.5",
+        "pify": "^3.0.0",
+        "slash": "^1.0.0"
+      }
+    },
     "graceful-fs": {
       "version": "4.1.11",
       "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
@@ -4314,31 +4477,24 @@
       }
     },
     "html-webpack-plugin": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
-      "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
+      "version": "4.0.0-beta.5",
+      "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.5.tgz",
+      "integrity": "sha512-y5l4lGxOW3pz3xBTFdfB9rnnrWRPVxlAhX6nrBYIcW+2k2zC3mSp/3DxlWVCMBfnO6UAnoF8OcFn0IMy6kaKAQ==",
       "dev": true,
       "requires": {
-        "html-minifier": "^3.2.3",
-        "loader-utils": "^0.2.16",
-        "lodash": "^4.17.3",
-        "pretty-error": "^2.0.2",
-        "tapable": "^1.0.0",
-        "toposort": "^1.0.0",
+        "html-minifier": "^3.5.20",
+        "loader-utils": "^1.1.0",
+        "lodash": "^4.17.11",
+        "pretty-error": "^2.1.1",
+        "tapable": "^1.1.0",
         "util.promisify": "1.0.0"
       },
       "dependencies": {
-        "loader-utils": {
-          "version": "0.2.17",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
-          "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
-          "dev": true,
-          "requires": {
-            "big.js": "^3.1.3",
-            "emojis-list": "^2.0.0",
-            "json5": "^0.5.0",
-            "object-assign": "^4.0.1"
-          }
+        "tapable": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz",
+          "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==",
+          "dev": true
         }
       }
     },
@@ -4449,6 +4605,12 @@
       "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
       "dev": true
     },
+    "ignore": {
+      "version": "3.3.10",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+      "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+      "dev": true
+    },
     "import-local": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
@@ -4683,6 +4845,30 @@
         }
       }
     },
+    "is-path-cwd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.0.0.tgz",
+      "integrity": "sha512-m5dHHzpOXEiv18JEORttBO64UgTEypx99vCxQLjbBvGhOJxnTNglYoFXxwo6AbsQb79sqqycQEHv2hWkHZAijA==",
+      "dev": true
+    },
+    "is-path-in-cwd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.0.0.tgz",
+      "integrity": "sha512-6Vz5Gc9s/sDA3JBVu0FzWufm8xaBsqy1zn8Q6gmvGP6nSDMw78aS4poBNeatWjaRpTpxxLn1WOndAiOlk+qY8A==",
+      "dev": true,
+      "requires": {
+        "is-path-inside": "^1.0.0"
+      }
+    },
+    "is-path-inside": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
+      "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+      "dev": true,
+      "requires": {
+        "path-is-inside": "^1.0.1"
+      }
+    },
     "is-plain-object": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
@@ -5738,6 +5924,12 @@
         "p-limit": "^2.0.0"
       }
     },
+    "p-map": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.0.0.tgz",
+      "integrity": "sha512-GO107XdrSUmtHxVoi60qc9tUl/KkNKm+X2CF4P9amalpGxv5YqVPJNfSb0wcA+syCopkZvYYIzW8OVTQW59x/w==",
+      "dev": true
+    },
     "p-try": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
@@ -5849,6 +6041,12 @@
       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
       "dev": true
     },
+    "path-is-inside": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+      "dev": true
+    },
     "path-key": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
@@ -6873,6 +7071,12 @@
       "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
       "dev": true
     },
+    "slash": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+      "dev": true
+    },
     "snapdragon": {
       "version": "0.8.2",
       "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
@@ -7475,12 +7679,6 @@
       "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz",
       "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo="
     },
-    "toposort": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
-      "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=",
-      "dev": true
-    },
     "trim-right": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
@@ -7539,15 +7737,21 @@
       "dev": true
     },
     "uglify-js": {
-      "version": "3.4.9",
-      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
-      "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
+      "version": "3.4.10",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz",
+      "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==",
       "dev": true,
       "requires": {
-        "commander": "~2.17.1",
+        "commander": "~2.19.0",
         "source-map": "~0.6.1"
       },
       "dependencies": {
+        "commander": {
+          "version": "2.19.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
+          "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
+          "dev": true
+        },
         "source-map": {
           "version": "0.6.1",
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",

+ 5 - 3
package.json

@@ -4,10 +4,10 @@
   "description": "IMA para o ensino de programação",
   "main": "js/main.js",
   "scripts": {
-    "start": "http-server",
+    "start": "http-server ./build",
     "build": "webpack --mode=development",
     "watch": "webpack --watch --mode=development",
-    "compile": "webpack --mode=production"
+    "compile": "webpack --mode=production && tar -zcvf ivprog.tar.gz build/"
   },
   "repository": {
     "type": "git",
@@ -29,7 +29,9 @@
     "@babel/preset-env": "^7.3.4",
     "antlr4-webpack-loader": "^0.1.1",
     "babel-loader": "^8.0.5",
-    "html-webpack-plugin": "^3.2.0",
+    "clean-webpack-plugin": "^2.0.1",
+    "copy-webpack-plugin": "^5.0.1",
+    "html-webpack-plugin": "^4.0.0-beta.5",
     "jasmine-core": "^3.3.0",
     "karma": "^4.0.1",
     "karma-chrome-launcher": "^2.2.0",

+ 0 - 77
runner.html

@@ -1,77 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-
-  <link rel="stylesheet" type="text/css" href="css/ivprog-term.css">
-
-  <link rel="stylesheet" type="text/css" href="js/semantic/semantic.min.css">
-  <style>
-    .ivprog-io-output {
-      border: 1px solid gainsboro;
-      width: 80%;
-      height: 360px;
-      overflow-y: scroll;
-      background-color: black;
-      color: white;
-    }
-
-    .ivprog-io-input {
-      width: 80%;
-      margin-top: 10px;
-      border: 1.5px solid green;
-      height: 3rem;
-      color: black;
-      font-size: 12pt;
-    }
-  </style>
-  <title></title>
-  <script src="js/jquery-3.3.1.min.js"></script>
-  <script type="text/javascript" src="js/jquery.json-editor.min.js"></script>
-</head>
-<body>
-    <div style="padding-top: 50px;content: ''"></div>
-  <div class="ui container grid">
-    
-    <div class="four wide column">
-      <div class="row">
-        <textarea class="ui form control" name="input" id="input" cols="100" rows="30">
-            programa {
-
-              const real C = 5.5
-             
-              funcao inicio() {
-
-               inteiro a = 8
-               se (a * C > 80) {
-                a = 0
-               } senao {
-                 a = -1
-               }
-              }
-             }
-        </textarea>
-      </div>
-      <div class="row">
-          <button class="ui button" id="btn">Run</button>
-      </div>
-    </div>
-    <div class="six wide column">
-      <div id="console">
-      </div>
-    </div>
-    <div class="six wide column">
-        <div style="overflow-y: scroll; height: 70%;">
-            <pre id="json-renderer" class="ui right floated"></pre>
-        </div>
-    </div>
-  </div>
-  
-  
-<script type="text/javascript" src="build/vendors~main.3159d28bcf7272c02dde.js"></script><script type="text/javascript" src="build/main.2d3af48627bfedf98bba.js"></script></body>
-
-<script>
-  ( function () {
-    ivprogCore.runner();
-  })();
-</script>
-</html>

+ 3 - 3
templates/index.html

@@ -9,7 +9,7 @@
     <meta http-equiv="pragma" content="no-cache">
     <title></title>
     <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
-    <link rel="stylesheet" type="text/css" href="js/semantic/semantic.min.css">
+    <link rel="stylesheet" type="text/css" href="css/semantic.min.css">
     <link rel="stylesheet" type="text/css" href="css/ivprog-visual-1.0.css">
     <link rel="stylesheet" type="text/css" href="css/ivprog-term.css">
     <script src="js/jquery-3.3.1.min.js"></script>
@@ -103,8 +103,8 @@
 
   </div>
   </body>
-  <script src="js/semantic/semantic.min.js"></script>
-  <script src="js/semantic/semantic-buttons.js"></script>
+  <script src="js/semantic.min.js"></script>
+  <script src="js/semantic-buttons.js"></script>
   <script src="js/jquery-ui.js"></script>
   <script src="js/Sortable.js"></script>
   <script src="js/iassign-integration-functions.js"></script>

+ 2 - 21
updateVersionPlugin.js

@@ -1,28 +1,9 @@
 var fs = require('fs');
 var path = require('path');
-
-function processDate () {
-  var date = new Date();
-  var day = date.getUTCDate();
-  day = day > 9 ? day : '0' + day;
-  var month = date.getMonth() + 1;
-  month = month > 9 ? month : '0' + month;
-  var minutes = date.getMinutes();
-  minutes = minutes > 9 ? minutes : '0' + minutes;
-  var hour = date.getHours();
-  hour = hour > 9 ? hour : '0' + hour;
-  return {
-    year: date.getFullYear(),
-    month: month,
-    day: day,
-    hour: hour,
-    minutes: minutes
-  }
-}
+var versionStringFun = require('./versionFileHelper');
 
 function writeVersionFile () {
-  var versionInfo = processDate();
-  var versionString = `${versionInfo.year}_${versionInfo.month}_${versionInfo.day} ${versionInfo.hour}_${versionInfo.minutes}`;
+  var versionString = versionStringFun();
   var fileData = `{ "version":"${versionString}" }`;
   var filePath = path.join(__dirname, '.ima_version.json');
   fs.writeFileSync(filePath, fileData);

+ 25 - 0
versionFileHelper.js

@@ -0,0 +1,25 @@
+function processDate () {
+  var date = new Date();
+  var day = date.getUTCDate();
+  day = day > 9 ? day : '0' + day;
+  var month = date.getMonth() + 1;
+  month = month > 9 ? month : '0' + month;
+  var minutes = date.getMinutes();
+  minutes = minutes > 9 ? minutes : '0' + minutes;
+  var hour = date.getHours();
+  hour = hour > 9 ? hour : '0' + hour;
+  return {
+    year: date.getFullYear(),
+    month: month,
+    day: day,
+    hour: hour,
+    minutes: minutes
+  }
+}
+
+function formatVersionString () {
+  var versionInfo = processDate();
+  return `${versionInfo.year}_${versionInfo.month}_${versionInfo.day} ${versionInfo.hour}_${versionInfo.minutes}`;
+}
+
+module.exports = formatVersionString;

+ 30 - 5
webpack.config.js

@@ -1,11 +1,14 @@
 var path = require('path');
 var HtmlWebpackPlugin = require('html-webpack-plugin');
 var UpdateVersionPlugin = require('./updateVersionPlugin');
+//var ChangeScriptSourcePlugin = require('./changeScriptSourcePlugin');
+var CopyPlugin = require('copy-webpack-plugin');
+var CleanWebpackPlugin = require('clean-webpack-plugin');
 
 module.exports = {
     entry: path.resolve(__dirname, 'js/main.js'),
     output: {
-        path: path.resolve(__dirname, 'build'),
+        path: path.resolve(__dirname, 'build',"js"),
         filename: '[name].[contenthash].js',
         library: 'ivprogCore',
         libraryTarget: 'umd'
@@ -38,15 +41,33 @@ module.exports = {
         colors: true
     },
     plugins: [
+      new CleanWebpackPlugin({
+        cleanOnceBeforeBuildPatterns:[path.resolve(__dirname, 'build/**/*')],
+        watch: true
+      }),
       new UpdateVersionPlugin(),
       new HtmlWebpackPlugin({
         template: 'templates/index.html',
-        filename: '../index.html'
+        filename: path.resolve(__dirname, 'build', 'index.html')
       }),
       new HtmlWebpackPlugin({
         template: 'templates/runner.html',
-        filename: '../runner.html'
-      })
+        filename: path.resolve(__dirname, 'build', 'runner.html')
+      }),
+      /*new ChangeScriptSourcePlugin(),*/
+      new CopyPlugin([
+        {from:"js/semantic/", to:path.resolve(__dirname, 'build/css')},
+        {from:"css/ivprog-visual-1.0.css", to:path.resolve(__dirname, 'build/css')},
+        {from:"css/ivprog-term.css", to:path.resolve(__dirname, 'build/css')},
+        {from:'js/jquery-3.3.1.min.js', to:path.resolve(__dirname, 'build/js')},
+        {from:'js/semantic/semantic.min.js', to:path.resolve(__dirname, 'build/js')},
+        {from:'js/semantic/semantic-buttons.js', to:path.resolve(__dirname, 'build/js')},
+        {from:'js/jquery-ui.js', to:path.resolve(__dirname, 'build/js')},
+        {from:'js/Sortable.js', to:path.resolve(__dirname, 'build/js')},
+        {from:'js/iassign-integration-functions.js', to:path.resolve(__dirname, 'build/js')},
+        /*{from:'index.html', to:path.resolve(__dirname, 'build')},
+        {from:'runner.html', to:path.resolve(__dirname, 'build')},*/
+      ])
     ],
     optimization: {
         splitChunks: {
@@ -55,6 +76,10 @@ module.exports = {
     },
     devtool: 'source-map',
     watchOptions: {
-        ignored: path.resolve(__dirname, '.ima_version.json')
+        ignored: [
+          path.resolve(__dirname, '.ima_version.json'),
+          path.resolve(__dirname, 'index.html'),
+          path.resolve(__dirname, 'runner.html')
+        ]
     }
 };