occam-verify-cli 0.0.309 → 0.0.311

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/bin/abbreviations.js +2 -4
  2. package/bin/main.js +10 -10
  3. package/bin/options.js +1 -3
  4. package/bin/utilities/logging.js +42 -0
  5. package/bin/utilities/release.js +77 -0
  6. package/lib/context/file.js +33 -16
  7. package/lib/context/metaproof.js +13 -13
  8. package/lib/context/proof.js +13 -13
  9. package/lib/context/release.js +37 -68
  10. package/lib/mixins/log.js +41 -0
  11. package/lib/utilities/customGrammar.js +32 -0
  12. package/lib/utilities/tokens.js +63 -0
  13. package/lib/verify/assertion/type.js +4 -4
  14. package/lib/verify/axiom.js +3 -3
  15. package/lib/verify/label.js +2 -2
  16. package/lib/verify/metastatement/qualified.js +2 -2
  17. package/lib/verify/metastatement/unqualified.js +2 -2
  18. package/lib/verify/release.js +8 -9
  19. package/lib/verify/rule.js +3 -3
  20. package/lib/verify/statement.js +3 -3
  21. package/lib/verify/statementAsCombinator.js +4 -4
  22. package/lib/verify/term.js +2 -2
  23. package/lib/verify/termAsConstructor.js +7 -7
  24. package/lib/verify/termAsVariable.js +2 -2
  25. package/lib/verify/type.js +5 -5
  26. package/lib/verify/variable.js +4 -4
  27. package/package.json +2 -2
  28. package/src/context/file.js +26 -10
  29. package/src/context/metaproof.js +6 -6
  30. package/src/context/proof.js +6 -6
  31. package/src/context/release.js +37 -58
  32. package/src/mixins/log.js +28 -0
  33. package/src/utilities/customGrammar.js +27 -0
  34. package/src/utilities/tokens.js +67 -0
  35. package/src/verify/assertion/type.js +3 -3
  36. package/src/verify/axiom.js +2 -2
  37. package/src/verify/label.js +1 -1
  38. package/src/verify/metastatement/qualified.js +1 -1
  39. package/src/verify/metastatement/unqualified.js +1 -1
  40. package/src/verify/release.js +8 -11
  41. package/src/verify/rule.js +2 -2
  42. package/src/verify/statement.js +2 -2
  43. package/src/verify/statementAsCombinator.js +3 -3
  44. package/src/verify/term.js +1 -1
  45. package/src/verify/termAsConstructor.js +6 -6
  46. package/src/verify/termAsVariable.js +1 -1
  47. package/src/verify/type.js +4 -4
  48. package/src/verify/variable.js +3 -3
  49. package/bin/loadReleaseContexts.js +0 -68
@@ -15,7 +15,7 @@ export default function verifyTermAsConstructor(termNode, typeNode, context) {
15
15
 
16
16
  const termString = nodeAsString(termNode);
17
17
 
18
- context.debug(`Verifying the '${termString}' term as a constructor...`);
18
+ context.debug(`Verifying the '${termString}' term as a constructor...`, termNode);
19
19
 
20
20
  const nonTerminalNode = termNode, ///
21
21
  childNodes = nonTerminalNode.getChildNodes(),
@@ -36,7 +36,7 @@ export default function verifyTermAsConstructor(termNode, typeNode, context) {
36
36
  } else {
37
37
  const termString = nodeAsString(termNode);
38
38
 
39
- context.error(`The '${termString}' constructor's '${typeName}' type is missing.`);
39
+ context.error(`The '${termString}' constructor's '${typeName}' type is missing.`, termNode);
40
40
  }
41
41
  }
42
42
  }
@@ -48,7 +48,7 @@ export default function verifyTermAsConstructor(termNode, typeNode, context) {
48
48
 
49
49
  const termString = nodeAsString(termNode);
50
50
 
51
- context.info(`Verified the '${termString}' constructor.`);
51
+ context.info(`Verified the '${termString}' constructor.`, termNode);
52
52
  }
53
53
 
54
54
  return termVerifiedAsConstructor;
@@ -121,7 +121,7 @@ function verifyNonTerminalNode(nonTerminalNode, context) {
121
121
  if (type !== null) {
122
122
  const termString = nodeAsString(termNode);
123
123
 
124
- context.error(`The type of the constructor's compound '${termString}' term node is not null.`);
124
+ context.error(`The type of the constructor's compound '${termString}' term node is not null.`, termNode);
125
125
  } else {
126
126
  nonTerminalNodeVerified = true; ///
127
127
  }
@@ -151,13 +151,13 @@ function verifyArgumentNode(argumentNode, context) {
151
151
  if (typeNode === null) {
152
152
  const argumentString = nodeAsString(argumentNode);
153
153
 
154
- context.error(`The ${argumentString} argument should be a type.`);
154
+ context.error(`The ${argumentString} argument should be a type.`, argumentNode);
155
155
  } else {
156
156
  const typeName = typeNameFromTypeNode(typeNode),
157
157
  typePresent = context.isTypePresentByTypeName(typeName);
158
158
 
159
159
  if (!typePresent) {
160
- context.error(`The type '${typeName}' is missing.`);
160
+ context.error(`The type '${typeName}' is missing.`, typeNode);
161
161
  } else {
162
162
  typeNodeVerified = true;
163
163
  }
@@ -14,7 +14,7 @@ export default function verifyTermAsVariable(termNode, types, names, values, con
14
14
  variablePresent = context.isVariablePresentByVariableName(variableName);
15
15
 
16
16
  if (!variablePresent) {
17
- context.error(`The ${variableName} variable is not present.`)
17
+ context.error(`The ${variableName} variable is not present.`, variableNode)
18
18
  } else {
19
19
  const variable = context.findVariableByVariableName(variableName),
20
20
  type = variable.getType(),
@@ -11,7 +11,7 @@ export default function verifyType(typeNode, superTypeNode, context) {
11
11
  typePresent = context.isTypePresentByTypeName(typeName);
12
12
 
13
13
  if (typePresent) {
14
- context.error(`The type '${typeName}' is already present.`);
14
+ context.error(`The type '${typeName}' is already present.`, typeNode);
15
15
  } else {
16
16
  const superTypeName = typeNameFromTypeNode(superTypeNode);
17
17
 
@@ -23,12 +23,12 @@ export default function verifyType(typeNode, superTypeNode, context) {
23
23
 
24
24
  typeVerified = true;
25
25
 
26
- context.info(`Verified the '${typeString}' type.`);
26
+ context.info(`Verified the '${typeString}' type.`, typeNode);
27
27
  } else {
28
28
  const superType = context.findTypeByTypeName(superTypeName);
29
29
 
30
30
  if (superType === null) {
31
- context.error(`The super-type '${superTypeName}' is missing.`);
31
+ context.error(`The super-type '${superTypeName}' is missing.`, typeNode);
32
32
  } else {
33
33
  const type = Type.fromTypeNameAndSuperType(typeName, superType),
34
34
  typeString = type.asString();
@@ -37,7 +37,7 @@ export default function verifyType(typeNode, superTypeNode, context) {
37
37
 
38
38
  typeVerified = true;
39
39
 
40
- context.info(`Verified the '${typeString}' type.`);
40
+ context.info(`Verified the '${typeString}' type.`, typeNode);
41
41
  }
42
42
  }
43
43
  }
@@ -11,7 +11,7 @@ export default function verifyVariable(variableNode, typeNode, context) {
11
11
  variablePresent = context.isVariablePresentByVariableName(variableName);
12
12
 
13
13
  if (variablePresent) {
14
- context.error(`The variable '${variableName}' is already present.`);
14
+ context.error(`The variable '${variableName}' is already present.`, variableNode);
15
15
  } else {
16
16
  let variable = null;
17
17
 
@@ -26,7 +26,7 @@ export default function verifyVariable(variableNode, typeNode, context) {
26
26
  const type = context.findTypeByTypeName(typeName);
27
27
 
28
28
  if (type === null) {
29
- context.error(`The '${variableName}' variable's '${typeName}' type is missing.`);
29
+ context.error(`The '${variableName}' variable's '${typeName}' type is missing.`, variableNode);
30
30
  } else {
31
31
  const name = variableName; ///
32
32
 
@@ -41,7 +41,7 @@ export default function verifyVariable(variableNode, typeNode, context) {
41
41
 
42
42
  variableVerified = true;
43
43
 
44
- context.info(`Verified the '${variableString}' variable.`);
44
+ context.info(`Verified the '${variableString}' variable.`, variableNode);
45
45
  }
46
46
  }
47
47
 
@@ -1,68 +0,0 @@
1
- "use strict";
2
-
3
- const { ReleaseContext } = require("../lib/index"),
4
- { fileSystemUtilities } = require("occam-file-system"),
5
- { arrayUtilities, loggingUtilities } = require("necessary");
6
-
7
- const { PERIOD } = require("./constants");
8
-
9
- const { log } = loggingUtilities,
10
- { first } = arrayUtilities,
11
- { loadRelease } = fileSystemUtilities;
12
-
13
- function loadReleaseContexts(releaseName, releaseContextMap = {}, dependentReleaseNames = []) {
14
- const cyclicDependencyExists = checkCyclicDependencyExists(releaseName, dependentReleaseNames);
15
-
16
- if (!cyclicDependencyExists) {
17
- const releaseContext = releaseContextMap[releaseName] || null;
18
-
19
- if (releaseContext === null) {
20
- const topmostDirectoryName = releaseName, ///
21
- projectsDirectoryPath = PERIOD,
22
- release = loadRelease(topmostDirectoryName, projectsDirectoryPath);
23
-
24
- if (release === null) {
25
- log.error(`The '${releaseName}' package cannot be loaded.`);
26
- } else {
27
- const releaseContext = ReleaseContext.fromLogAndRelease(log, release);
28
-
29
- releaseContextMap[releaseName] = releaseContext;
30
-
31
- const dependencies = releaseContext.getDependencies(),
32
- dependencyReleaseNames = dependencies.mapDependency((dependency) => {
33
- const dependencyName = dependency.getName(),
34
- dependencyReleaseName = dependencyName; ///
35
-
36
- return dependencyReleaseName;
37
- });
38
-
39
- dependentReleaseNames = [ ...dependentReleaseNames, releaseName ]; ///
40
-
41
- dependencyReleaseNames.forEach((dependencyReleaseName) => {
42
- const releaseName = dependencyReleaseName; ///
43
-
44
- loadReleaseContexts(releaseName, releaseContextMap, dependentReleaseNames);
45
- });
46
- }
47
- }
48
- }
49
-
50
- return releaseContextMap;
51
- }
52
-
53
- module.exports = loadReleaseContexts;
54
-
55
- function checkCyclicDependencyExists(releaseName, dependentReleaseNames) {
56
- const dependentReleaseNamesIncludesReleaseName = dependentReleaseNames.includes(releaseName),
57
- cyclicDependencyExists = dependentReleaseNamesIncludesReleaseName; ///
58
-
59
- if (cyclicDependencyExists) {
60
- const firstDependentReleaseName = first(dependentReleaseNames),
61
- releaseNames = dependentReleaseNames.concat(firstDependentReleaseName),
62
- releaseNamesString = releaseNames.join(`' -> '`);
63
-
64
- log.error(`There is a cyclic dependency: '${releaseNamesString}'.`);
65
- }
66
-
67
- return cyclicDependencyExists;
68
- }