@hologit/lens-lib 0.1.6 → 0.2.0

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 (2) hide show
  1. package/index.js +35 -48
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -48,13 +48,6 @@ class LensRunner {
48
48
  return this.execCommand(cmd, args, { ...options, $captureOutput: true });
49
49
  }
50
50
 
51
- // Log environment variables starting with HOLO
52
- logHoloEnv() {
53
- Object.entries(process.env)
54
- .filter(([key]) => key.startsWith('HOLO'))
55
- .forEach(([key, value]) => console.error(`${key}=${value}`));
56
- }
57
-
58
51
  // Export git tree
59
52
  async exportTree(treeHash) {
60
53
  console.error(`Exporting tree to scratch directory: ${treeHash}`);
@@ -76,8 +69,35 @@ class LensRunner {
76
69
  return await this.captureCommand('git', args);
77
70
  }
78
71
 
72
+ // Log environment variables starting with HOLO
73
+ logHoloEnv() {
74
+ Object.entries(process.env)
75
+ .filter(([key]) => key.startsWith('HOLO'))
76
+ .forEach(([key, value]) => console.error(`${key}=${value}`));
77
+ }
78
+
79
+ // Helper to override environment variables
80
+ overrideEnv(envVars) {
81
+ Object.entries(envVars).forEach(([key, value]) => {
82
+ if (value !== undefined) {
83
+ process.env[key] = value;
84
+ }
85
+ });
86
+ }
87
+
88
+ // Helper to ensure required environment variables exist
89
+ requireEnv(...vars) {
90
+ vars.forEach(varName => {
91
+ if (!process.env[varName]) {
92
+ throw new Error(`${varName} environment variable is required`);
93
+ }
94
+ });
95
+ }
96
+
79
97
  // Run the lens with common setup and error handling
80
- async run(callback) {
98
+ static async run({ exportTree = false } = {}, callback) {
99
+ const runner = new LensRunner();
100
+
81
101
  try {
82
102
  const inputTree = process.argv[2];
83
103
  if (!inputTree) {
@@ -85,16 +105,18 @@ class LensRunner {
85
105
  }
86
106
 
87
107
  // Log HOLO environment variables
88
- this.logHoloEnv();
108
+ runner.logHoloEnv();
89
109
 
90
110
  // Change to work tree directory
91
- process.chdir(this.workTree);
111
+ process.chdir(runner.workTree);
92
112
 
93
- // Export git tree
94
- await this.exportTree(inputTree);
113
+ // Export git tree if needed
114
+ if (exportTree) {
115
+ await runner.exportTree(inputTree);
116
+ }
95
117
 
96
118
  // Run the lens-specific logic
97
- const result = await callback(this);
119
+ const result = await callback(runner, inputTree);
98
120
 
99
121
  // Output result
100
122
  if (typeof result === 'string') {
@@ -106,41 +128,6 @@ class LensRunner {
106
128
  process.exit(1);
107
129
  }
108
130
  }
109
-
110
- // Helper to set up common environment variables
111
- setupEnv(envVars) {
112
- Object.entries(envVars).forEach(([key, value]) => {
113
- if (value !== undefined) {
114
- process.env[key] = value;
115
- }
116
- });
117
- }
118
-
119
- // Helper to ensure required environment variables exist
120
- requireEnv(...vars) {
121
- vars.forEach(varName => {
122
- if (!process.env[varName]) {
123
- throw new Error(`${varName} environment variable is required`);
124
- }
125
- });
126
- }
127
-
128
- // Helper to get environment variables with defaults
129
- getEnv(varName, defaultValue) {
130
- return process.env[varName] || defaultValue;
131
- }
132
-
133
- // Helper to create output directory
134
- async createOutputDir(dir) {
135
- const fs = require('fs');
136
- fs.mkdirSync(dir, { recursive: true });
137
- }
138
-
139
- // Helper to write file
140
- async writeFile(path, content) {
141
- const fs = require('fs');
142
- fs.writeFileSync(path, content);
143
- }
144
131
  }
145
132
 
146
133
  module.exports = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hologit/lens-lib",
3
- "version": "0.1.6",
3
+ "version": "0.2.0",
4
4
  "description": "Shared library for hologit lenses",
5
5
  "main": "index.js",
6
6
  "scripts": {