FBControlCore/Configuration/FBXCTraceConfiguration.m (85 lines of code) (raw):
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#import "FBXCTraceConfiguration.h"
#import "FBCollectionInformation.h"
@implementation FBXCTraceRecordConfiguration
#pragma mark Initializers
+ (instancetype)RecordWithTemplateName:(NSString *)templateName
timeLimit:(NSTimeInterval)timeLimit
package:(NSString *)package
allProcesses:(BOOL)allProcesses
processToAttach:(NSString *)processToAttach
processToLaunch:(NSString *)processToLaunch
launchArgs:(NSArray<NSString *> *)launchArgs
targetStdin:(NSString *)targetStdin
targetStdout:(NSString *)targetStdout
processEnv:(NSDictionary<NSString *, NSString *> *)processEnv
shim:(FBXCTestShimConfiguration *)shim
{
return [[self alloc] initWithTemplateName:templateName timeLimit:timeLimit package:package allProcesses:allProcesses processToAttach:processToAttach processToLaunch:processToLaunch launchArgs:launchArgs targetStdin:targetStdin targetStdout:targetStdout processEnv:processEnv shim:shim];
}
- (instancetype)initWithTemplateName:(NSString *)templateName
timeLimit:(NSTimeInterval)timeLimit
package:(NSString *)package
allProcesses:(BOOL)allProcesses
processToAttach:(NSString *)processToAttach
processToLaunch:(NSString *)processToLaunch
launchArgs:(NSArray<NSString *> *)launchArgs
targetStdin:(NSString *)targetStdin
targetStdout:(NSString *)targetStdout
processEnv:(NSDictionary<NSString *, NSString *> *)processEnv
shim:(FBXCTestShimConfiguration *)shim;
{
self = [super init];
if (!self) {
return nil;
}
_templateName = templateName;
_timeLimit = timeLimit;
_package = package;
_allProcesses = allProcesses;
_processToAttach = processToAttach;
_processToLaunch = processToLaunch;
_launchArgs = launchArgs;
_targetStdin = targetStdin;
_targetStdout = targetStdout;
_processEnv = processEnv;
_shim = shim;
return self;
}
- (instancetype)withShim:(FBXCTestShimConfiguration *)shim
{
return [[FBXCTraceRecordConfiguration alloc]
initWithTemplateName:self.templateName
timeLimit:self.timeLimit
package:self.package
allProcesses:self.allProcesses
processToAttach:self.processToAttach
processToLaunch:self.processToLaunch
launchArgs:self.launchArgs
targetStdin:self.targetStdin
targetStdout:self.targetStdout
processEnv:self.processEnv
shim:shim];
}
#pragma mark NSObject
- (NSString *)description
{
return [NSString stringWithFormat:
@"xctrace record: template %@ | duration %f | process to launch %@ | process to attach %@ | package %@ | target stdin %@ | target stdout %@ | target arguments %@ | target environment %@ | record all processes %@",
self.templateName,
self.timeLimit,
self.processToLaunch,
self.processToAttach,
self.package,
self.targetStdin,
self.targetStdout,
[FBCollectionInformation oneLineDescriptionFromArray:self.launchArgs],
[FBCollectionInformation oneLineDescriptionFromDictionary:self.processEnv],
self.allProcesses ? @"Yes" : @"No"
];
}
#pragma mark NSCopying
- (instancetype)copyWithZone:(NSZone *)zone
{
return self;
}
@end