mirror of
https://github.com/selfxyz/self.git
synced 2026-01-11 07:38:00 -05:00
* refactor: remove namespace imports * refactor: use named fs imports * refactor(app): replace path and fs namespace imports * format * format
139 lines
3.7 KiB
JavaScript
Executable File
139 lines
3.7 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
// SPDX-FileCopyrightText: 2025 Social Connect Labs, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
// NOTE: Converts to Apache-2.0 on 2029-06-11 per LICENSE.
|
|
|
|
const { readFileSync, writeFileSync } = require('fs');
|
|
const { join } = require('path');
|
|
|
|
const VERSION_FILE = join(__dirname, '..', 'version.json');
|
|
const PACKAGE_JSON = join(__dirname, '..', 'package.json');
|
|
|
|
function readVersionFile() {
|
|
try {
|
|
const data = readFileSync(VERSION_FILE, 'utf8');
|
|
return JSON.parse(data);
|
|
} catch (error) {
|
|
console.error('Error reading version.json:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
function writeVersionFile(data) {
|
|
try {
|
|
writeFileSync(VERSION_FILE, JSON.stringify(data, null, 2) + '\n');
|
|
} catch (error) {
|
|
console.error('Error writing version.json:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
function getPackageVersion() {
|
|
try {
|
|
const packageData = JSON.parse(readFileSync(PACKAGE_JSON, 'utf8'));
|
|
return packageData.version;
|
|
} catch (error) {
|
|
console.error('Error reading package.json:', error);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
function bumpBuild(platform = 'both') {
|
|
const validPlatforms = ['ios', 'android', 'both'];
|
|
if (!validPlatforms.includes(platform)) {
|
|
console.error(
|
|
`Invalid platform: ${platform}. Must be one of: ${validPlatforms.join(', ')}`,
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
const versionData = readVersionFile();
|
|
|
|
if (platform === 'ios' || platform === 'both') {
|
|
versionData.ios.build += 1;
|
|
console.log(`✅ iOS build number bumped to ${versionData.ios.build}`);
|
|
}
|
|
|
|
if (platform === 'android' || platform === 'both') {
|
|
versionData.android.build += 1;
|
|
console.log(
|
|
`✅ Android build number bumped to ${versionData.android.build}`,
|
|
);
|
|
}
|
|
|
|
writeVersionFile(versionData);
|
|
}
|
|
|
|
function setDeploymentTime(platform) {
|
|
const validPlatforms = ['ios', 'android', 'both'];
|
|
if (!validPlatforms.includes(platform)) {
|
|
console.error(
|
|
`Invalid platform: ${platform}. Must be one of: ${validPlatforms.join(', ')}`,
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
const versionData = readVersionFile();
|
|
const timestamp = new Date().toISOString();
|
|
|
|
if (platform === 'ios' || platform === 'both') {
|
|
versionData.ios.lastDeployed = timestamp;
|
|
}
|
|
|
|
if (platform === 'android' || platform === 'both') {
|
|
versionData.android.lastDeployed = timestamp;
|
|
}
|
|
|
|
writeVersionFile(versionData);
|
|
console.log(`✅ Updated ${platform} deployment timestamp`);
|
|
}
|
|
|
|
function getCurrentInfo() {
|
|
const versionData = readVersionFile();
|
|
const version = getPackageVersion();
|
|
|
|
console.log(`Current version: ${version} (from package.json)`);
|
|
console.log(`iOS build: ${versionData.ios.build}`);
|
|
console.log(`Android build: ${versionData.android.build}`);
|
|
|
|
if (versionData.ios.lastDeployed) {
|
|
console.log(`iOS last deployed: ${versionData.ios.lastDeployed}`);
|
|
}
|
|
if (versionData.android.lastDeployed) {
|
|
console.log(`Android last deployed: ${versionData.android.lastDeployed}`);
|
|
}
|
|
|
|
return { version, ...versionData };
|
|
}
|
|
|
|
// CLI handling
|
|
const command = process.argv[2];
|
|
const arg = process.argv[3];
|
|
|
|
switch (command) {
|
|
case 'bump-build':
|
|
bumpBuild(arg || 'both');
|
|
break;
|
|
case 'deployed':
|
|
setDeploymentTime(arg || 'both');
|
|
break;
|
|
case 'get':
|
|
case 'info':
|
|
getCurrentInfo();
|
|
break;
|
|
default:
|
|
console.log('Usage:');
|
|
console.log(
|
|
' node version.cjs bump-build [ios|android|both] - Bump build number',
|
|
);
|
|
console.log(
|
|
' node version.cjs deployed [ios|android|both] - Update deployment timestamp',
|
|
);
|
|
console.log(
|
|
' node version.cjs info - Get current version info',
|
|
);
|
|
console.log('');
|
|
console.log('Note: Version numbers are managed by npm version command');
|
|
process.exit(1);
|
|
}
|