Skip to content

Commit d864c0d

Browse files
committed
Adds login command for easy of use
1 parent 8fe879e commit d864c0d

File tree

3 files changed

+21
-7
lines changed

3 files changed

+21
-7
lines changed

cli.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
#!/usr/bin/env node
22
import {Command} from 'commander';
33

4-
import {
5-
getPackageJson,
6-
} from './src/utils.js';
4+
import {getPackageJson} from './src/utils.js';
75

6+
import {loginCommand} from './src/circuitscan.js';
87
import circomCommands from './src/circom/index.js';
98
import circomMultiCommands from './src/circomMulti/index.js';
109
import noirCommands from './src/noir/index.js';
@@ -16,6 +15,7 @@ program
1615
.description('CLI tool to verify verifier contracts by their circom sources')
1716
.version(getPackageJson().version);
1817

18+
loginCommand(program);
1919
// Each pipeline adds its commands
2020
circomCommands(program);
2121
circomMultiCommands(program);

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "circuitscan",
3-
"version": "0.1.1",
3+
"version": "0.1.2",
44
"main": "cli.js",
55
"type": "module",
66
"author": "numtel <[email protected]>",

src/circuitscan.js

+17-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {join} from 'node:path';
2-
import {readFileSync, appendFileSync} from 'node:fs';
2+
import {readFileSync, appendFileSync, writeFileSync} from 'node:fs';
33
import {homedir} from 'node:os';
44

55
import {
@@ -132,19 +132,33 @@ function appendRequest(reqId) {
132132
appendFileSync(join(homedir(), '.circuitscan-history'), `${reqId}\n`);
133133
}
134134

135+
export function loginCommand(program) {
136+
program
137+
.command('login <apiKey>')
138+
.description('Save API Key in home directory for later use.')
139+
.action((apiKey) => {
140+
const config = loadUserConfig() || {};
141+
config.apiKey = apiKey;
142+
writeFileSync(join(homedir(), '.circuitscan'), JSON.stringify(config, null, 2));
143+
});
144+
}
145+
135146
function loadUserConfig() {
136147
try {
137148
return JSON.parse(readFileSync(join(homedir(), '.circuitscan'), 'utf8'));
138149
} catch(error) {
139-
console.error(error);
140-
process.exit(1);
150+
// Do nothing
141151
}
142152
}
143153

144154
function activeApiKey(options) {
145155
if(options.apiKey) return options.apiKey;
146156
if(process.env.CIRCUITSCAN_API_KEY) return process.env.CIRCUITSCAN_API_KEY;
147157
const config = loadUserConfig() || {};
158+
if(!config.apiKey) {
159+
console.error('\n\nMissing API Key!\n\nGenerate one at https://circuitscan.org/manage-api-key\nThen use "circuitscan login <apiKey>"');
160+
process.exit(1);
161+
}
148162
return config.apiKey;
149163
}
150164

0 commit comments

Comments
 (0)