mirror of
https://github.com/bitwarden/browser.git
synced 2024-12-23 16:38:45 +01:00
f16bfa4cd2
* feat: scaffold desktop_objc * feat: rename fido2 to autofill * feat: scaffold electron autofill * feat: auto call hello world on init * feat: scaffold call to basic objc function * feat: simple log that checks if autofill is enabled * feat: adding some availability guards * feat: scaffold services and allow calls from inspector * feat: create custom type for returning strings across rust/objc boundary * chore: clean up comments * feat: enable ARC * feat: add util function `c_string_to_nsstring` * chore: refactor and rename to `run_command` * feat: add try-catch around command execution * feat: properly implement command calling Add static typing. Add proper error handling. * feat: add autoreleasepool to avoid memory leaks * chore: change objc names to camelCase * fix: error returning * feat: extract some helper functions into utils class * feat: scaffold status command * feat: implement status command * feat: implement password credential mapping * wip: implement sync command This crashes because we are not properly handling the fact that `saveCredentialIdentities` uses callbacks, resulting in a race condition where we try to access a variable (result) that has already gotten dealloc'd. * feat: first version of callback * feat: make run_command async * feat: functioning callback returns * chore: refactor to make objc code easier to read and use * feat: refactor everything to use new callback return method * feat: re-implement status command with callback * fix: warning about CommandContext not being FFI-safe * feat: implement sync command using callbacks * feat: implement manual password credential sync * feat: add auto syncing * docs: add todo * feat: add support for passkeys * chore: move desktop autofill service to init service * feat: auto-add all .m files to builder * fix: native build on unix and windows * fix: unused compiler warnings * fix: napi type exports * feat: add corresponding dist command * feat: comment signing profile until we fix signing * fix: build breaking on non-macOS platforms * chore: cargo lock update * chore: revert accidental version change * feat: put sync behind feature flag * chore: put files in autofill folder * fix: obj-c code not recompiling on changes * feat: add `namespace` to commands * fix: linting complaining about flag * feat: add autofill as owner of their objc code * chore: make autofill owner of run_command in core crate * fix: re-add napi annotation * fix: remove dev bypass
64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
/* eslint-disable @typescript-eslint/no-var-requires, no-console */
|
|
const child = require("child_process");
|
|
const { exit } = require("process");
|
|
|
|
const fse = require("fs-extra");
|
|
|
|
const paths = {
|
|
macosBuild: "./macos/build",
|
|
extensionBuild: "./macos/build/Release/autofill-extension.appex",
|
|
extensionDistDir: "./macos/dist",
|
|
extensionDist: "./macos/dist/autofill-extension.appex",
|
|
macOsProject: "./macos/desktop.xcodeproj",
|
|
macOsConfig: "./macos/production.xcconfig",
|
|
};
|
|
|
|
async function buildMacOs() {
|
|
if (fse.existsSync(paths.macosBuild)) {
|
|
fse.removeSync(paths.macosBuild);
|
|
}
|
|
|
|
if (fse.existsSync(paths.extensionDistDir)) {
|
|
fse.removeSync(paths.extensionDistDir);
|
|
}
|
|
|
|
const proc = child.spawn("xcodebuild", [
|
|
"-project",
|
|
paths.macOsProject,
|
|
"-alltargets",
|
|
"-configuration",
|
|
"Release",
|
|
// Uncomment when signing is fixed
|
|
// "-xcconfig",
|
|
// paths.macOsConfig,
|
|
]);
|
|
stdOutProc(proc);
|
|
await new Promise((resolve, reject) =>
|
|
proc.on("close", (code) => {
|
|
if (code > 0) {
|
|
console.error("xcodebuild failed with code", code);
|
|
return reject(new Error(`xcodebuild failed with code ${code}`));
|
|
}
|
|
console.log("xcodebuild success");
|
|
resolve();
|
|
}),
|
|
);
|
|
|
|
fse.mkdirSync(paths.extensionDistDir);
|
|
fse.copySync(paths.extensionBuild, paths.extensionDist);
|
|
// Delete the build dir, otherwise MacOS will load the extension from there instead of the Bitwarden.app bundle
|
|
fse.removeSync(paths.macosBuild);
|
|
}
|
|
|
|
function stdOutProc(proc) {
|
|
proc.stdout.on("data", (data) => console.log(data.toString()));
|
|
proc.stderr.on("data", (data) => console.error(data.toString()));
|
|
}
|
|
|
|
buildMacOs()
|
|
.then(() => console.log("macOS build complete"))
|
|
.catch((err) => {
|
|
console.error("macOS build failed", err);
|
|
exit(-1);
|
|
});
|