mirror of
https://github.com/neynarxyz/create-farcaster-mini-app.git
synced 2025-11-16 08:08:56 -05:00
Ask SPONSOR_SIGNER
This commit is contained in:
parent
bed12bd303
commit
1d736d823e
34
bin/init.js
34
bin/init.js
@ -221,6 +221,8 @@ export async function init(projectName = null, autoAcceptDefaults = false) {
|
|||||||
useWallet: true,
|
useWallet: true,
|
||||||
useTunnel: true,
|
useTunnel: true,
|
||||||
enableAnalytics: true,
|
enableAnalytics: true,
|
||||||
|
seedPhrase: null,
|
||||||
|
sponsorSigner: false,
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
// If autoAcceptDefaults is false but we have a projectName, we still need to ask for other options
|
// If autoAcceptDefaults is false but we have a projectName, we still need to ask for other options
|
||||||
@ -347,6 +349,34 @@ export async function init(projectName = null, autoAcceptDefaults = false) {
|
|||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
answers.enableAnalytics = analyticsAnswer.enableAnalytics;
|
answers.enableAnalytics = analyticsAnswer.enableAnalytics;
|
||||||
|
|
||||||
|
// Ask about SEED_PHRASE
|
||||||
|
const seedPhraseAnswer = await inquirer.prompt([
|
||||||
|
{
|
||||||
|
type: 'password',
|
||||||
|
name: 'seedPhrase',
|
||||||
|
message:
|
||||||
|
'⚠️ If SEED_PHRASE is not provided, you will not be able to use Sign In With Neynar.\n\n' +
|
||||||
|
'Enter your SEED_PHRASE (or press enter to skip):',
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
answers.seedPhrase = seedPhraseAnswer.seedPhrase;
|
||||||
|
|
||||||
|
// Ask about sponsor signer if SEED_PHRASE is provided
|
||||||
|
if (answers.seedPhrase) {
|
||||||
|
const sponsorSignerAnswer = await inquirer.prompt([
|
||||||
|
{
|
||||||
|
type: 'confirm',
|
||||||
|
name: 'sponsorSigner',
|
||||||
|
message:
|
||||||
|
'Do you want to sponsor the signer? (This will be used in Sign In With Neynar)\n' +
|
||||||
|
'Note: If you choose to sponsor the signer, Neynar will sponsor it for you and you will be charged in CUs.',
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
answers.sponsorSigner = sponsorSignerAnswer.sponsorSigner;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const finalProjectName = answers.projectName;
|
const finalProjectName = answers.projectName;
|
||||||
@ -598,6 +628,10 @@ export async function init(projectName = null, autoAcceptDefaults = false) {
|
|||||||
'\n⚠️ Could not find a Neynar client ID and/or API key. Please configure Neynar manually in .env.local with NEYNAR_API_KEY and NEYNAR_CLIENT_ID'
|
'\n⚠️ Could not find a Neynar client ID and/or API key. Please configure Neynar manually in .env.local with NEYNAR_API_KEY and NEYNAR_CLIENT_ID'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
if (answers.seedPhrase) {
|
||||||
|
fs.appendFileSync(envPath, `\nSEED_PHRASE="${answers.seedPhrase}"`);
|
||||||
|
fs.appendFileSync(envPath, `\nSPONSOR_SIGNER="${answers.sponsorSigner}"`);
|
||||||
|
}
|
||||||
fs.appendFileSync(envPath, `\nUSE_TUNNEL="${answers.useTunnel}"`);
|
fs.appendFileSync(envPath, `\nUSE_TUNNEL="${answers.useTunnel}"`);
|
||||||
|
|
||||||
fs.unlinkSync(envExamplePath);
|
fs.unlinkSync(envExamplePath);
|
||||||
|
|||||||
@ -65,7 +65,7 @@ async function loadEnvLocal() {
|
|||||||
let newEnvContent = envContent;
|
let newEnvContent = envContent;
|
||||||
|
|
||||||
for (const [key, value] of Object.entries(localEnv)) {
|
for (const [key, value] of Object.entries(localEnv)) {
|
||||||
if (key !== 'SEED_PHRASE') {
|
if (key !== 'SEED_PHRASE' && key !== 'SPONSOR_SIGNER') {
|
||||||
// Update process.env
|
// Update process.env
|
||||||
process.env[key] = value;
|
process.env[key] = value;
|
||||||
// Add to .env content if not already there
|
// Add to .env content if not already there
|
||||||
@ -87,6 +87,9 @@ async function loadEnvLocal() {
|
|||||||
if (localEnv.SEED_PHRASE) {
|
if (localEnv.SEED_PHRASE) {
|
||||||
process.env.SEED_PHRASE = localEnv.SEED_PHRASE;
|
process.env.SEED_PHRASE = localEnv.SEED_PHRASE;
|
||||||
}
|
}
|
||||||
|
if (localEnv.SPONSOR_SIGNER) {
|
||||||
|
process.env.SPONSOR_SIGNER = localEnv.SPONSOR_SIGNER;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Error reading .env.local, which is fine
|
// Error reading .env.local, which is fine
|
||||||
@ -370,6 +373,8 @@ async function main() {
|
|||||||
[`NEYNAR_API_KEY="${process.env.NEYNAR_API_KEY}"`] : []),
|
[`NEYNAR_API_KEY="${process.env.NEYNAR_API_KEY}"`] : []),
|
||||||
...(neynarClientId ?
|
...(neynarClientId ?
|
||||||
[`NEYNAR_CLIENT_ID="${neynarClientId}"`] : []),
|
[`NEYNAR_CLIENT_ID="${neynarClientId}"`] : []),
|
||||||
|
...(process.env.SPONSOR_SIGNER ?
|
||||||
|
[`SPONSOR_SIGNER="${process.env.SPONSOR_SIGNER}"`] : []),
|
||||||
|
|
||||||
// FID (if it exists in current env)
|
// FID (if it exists in current env)
|
||||||
...(process.env.FID ? [`FID="${process.env.FID}"`] : []),
|
...(process.env.FID ? [`FID="${process.env.FID}"`] : []),
|
||||||
|
|||||||
@ -115,6 +115,7 @@ async function loadEnvLocal() {
|
|||||||
|
|
||||||
const allowedVars = [
|
const allowedVars = [
|
||||||
'SEED_PHRASE',
|
'SEED_PHRASE',
|
||||||
|
'SPONSOR_SIGNER',
|
||||||
'NEXT_PUBLIC_MINI_APP_NAME',
|
'NEXT_PUBLIC_MINI_APP_NAME',
|
||||||
'NEXT_PUBLIC_MINI_APP_DESCRIPTION',
|
'NEXT_PUBLIC_MINI_APP_DESCRIPTION',
|
||||||
'NEXT_PUBLIC_MINI_APP_PRIMARY_CATEGORY',
|
'NEXT_PUBLIC_MINI_APP_PRIMARY_CATEGORY',
|
||||||
@ -131,7 +132,7 @@ async function loadEnvLocal() {
|
|||||||
for (const [key, value] of Object.entries(localEnv)) {
|
for (const [key, value] of Object.entries(localEnv)) {
|
||||||
if (allowedVars.includes(key)) {
|
if (allowedVars.includes(key)) {
|
||||||
process.env[key] = value;
|
process.env[key] = value;
|
||||||
if (key !== 'SEED_PHRASE' && !envContent.includes(`${key}=`)) {
|
if (key !== 'SEED_PHRASE' && key !== 'SPONSOR_SIGNER' && !envContent.includes(`${key}=`)) {
|
||||||
newEnvContent += `${key}="${value}"\n`;
|
newEnvContent += `${key}="${value}"\n`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -224,6 +225,35 @@ async function checkRequiredEnvVars() {
|
|||||||
} else {
|
} else {
|
||||||
console.log('ℹ️ Seed phrase will only be used for this deployment');
|
console.log('ℹ️ Seed phrase will only be used for this deployment');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ask about sponsor signer if SEED_PHRASE is provided
|
||||||
|
if (!process.env.SPONSOR_SIGNER) {
|
||||||
|
const { sponsorSigner } = await inquirer.prompt([
|
||||||
|
{
|
||||||
|
type: 'confirm',
|
||||||
|
name: 'sponsorSigner',
|
||||||
|
message:
|
||||||
|
'Do you want to sponsor the signer? (This will be used in Sign In With Neynar)\n' +
|
||||||
|
'Note: If you choose to sponsor the signer, Neynar will sponsor it for you and you will be charged in CUs.',
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
process.env.SPONSOR_SIGNER = sponsorSigner.toString();
|
||||||
|
|
||||||
|
if (storeSeedPhrase) {
|
||||||
|
fs.appendFileSync('.env.local', `\nSPONSOR_SIGNER="${sponsorSigner}"`);
|
||||||
|
console.log('✅ Sponsor signer preference stored in .env.local');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load SPONSOR_SIGNER from .env.local if SEED_PHRASE exists but SPONSOR_SIGNER doesn't
|
||||||
|
if (process.env.SEED_PHRASE && !process.env.SPONSOR_SIGNER && fs.existsSync('.env.local')) {
|
||||||
|
const localEnv = dotenv.parse(fs.readFileSync('.env.local'));
|
||||||
|
if (localEnv.SPONSOR_SIGNER) {
|
||||||
|
process.env.SPONSOR_SIGNER = localEnv.SPONSOR_SIGNER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -585,6 +615,7 @@ async function deployToVercel(useGitHub = false) {
|
|||||||
|
|
||||||
...(process.env.NEYNAR_API_KEY && { NEYNAR_API_KEY: process.env.NEYNAR_API_KEY }),
|
...(process.env.NEYNAR_API_KEY && { NEYNAR_API_KEY: process.env.NEYNAR_API_KEY }),
|
||||||
...(process.env.NEYNAR_CLIENT_ID && { NEYNAR_CLIENT_ID: process.env.NEYNAR_CLIENT_ID }),
|
...(process.env.NEYNAR_CLIENT_ID && { NEYNAR_CLIENT_ID: process.env.NEYNAR_CLIENT_ID }),
|
||||||
|
...(process.env.SPONSOR_SIGNER && { SPONSOR_SIGNER: process.env.SPONSOR_SIGNER }),
|
||||||
...(miniAppMetadata && { MINI_APP_METADATA: miniAppMetadata }),
|
...(miniAppMetadata && { MINI_APP_METADATA: miniAppMetadata }),
|
||||||
|
|
||||||
...Object.fromEntries(
|
...Object.fromEntries(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user