mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 06:16:30 +03:00
67 lines
2.4 KiB
C++
67 lines
2.4 KiB
C++
// Copyright 2016 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "tools/gn/bundle_file_rule.h"
|
|
|
|
#include "tools/gn/output_file.h"
|
|
#include "tools/gn/settings.h"
|
|
#include "tools/gn/substitution_pattern.h"
|
|
#include "tools/gn/substitution_writer.h"
|
|
#include "tools/gn/target.h"
|
|
|
|
BundleFileRule::BundleFileRule(const Target* bundle_data_target,
|
|
const std::vector<SourceFile> sources,
|
|
const SubstitutionPattern& pattern)
|
|
: target_(bundle_data_target), sources_(sources), pattern_(pattern) {
|
|
// target_ may be null during testing.
|
|
DCHECK(!target_ || target_->output_type() == Target::BUNDLE_DATA);
|
|
}
|
|
|
|
BundleFileRule::BundleFileRule(const BundleFileRule& other) = default;
|
|
|
|
BundleFileRule::~BundleFileRule() = default;
|
|
|
|
SourceFile BundleFileRule::ApplyPatternToSource(
|
|
const Settings* settings,
|
|
const BundleData& bundle_data,
|
|
const SourceFile& source_file) const {
|
|
std::string output_path;
|
|
for (const auto& subrange : pattern_.ranges()) {
|
|
switch (subrange.type) {
|
|
case SUBSTITUTION_LITERAL:
|
|
output_path.append(subrange.literal);
|
|
break;
|
|
case SUBSTITUTION_BUNDLE_ROOT_DIR:
|
|
output_path.append(bundle_data.root_dir().value());
|
|
break;
|
|
case SUBSTITUTION_BUNDLE_CONTENTS_DIR:
|
|
output_path.append(bundle_data.contents_dir().value());
|
|
break;
|
|
case SUBSTITUTION_BUNDLE_RESOURCES_DIR:
|
|
output_path.append(bundle_data.resources_dir().value());
|
|
break;
|
|
case SUBSTITUTION_BUNDLE_EXECUTABLE_DIR:
|
|
output_path.append(bundle_data.executable_dir().value());
|
|
break;
|
|
case SUBSTITUTION_BUNDLE_PLUGINS_DIR:
|
|
output_path.append(bundle_data.plugins_dir().value());
|
|
break;
|
|
default:
|
|
output_path.append(SubstitutionWriter::GetSourceSubstitution(
|
|
target_, target_->settings(), source_file, subrange.type,
|
|
SubstitutionWriter::OUTPUT_ABSOLUTE, SourceDir()));
|
|
break;
|
|
}
|
|
}
|
|
return SourceFile(SourceFile::SWAP_IN, &output_path);
|
|
}
|
|
|
|
OutputFile BundleFileRule::ApplyPatternToSourceAsOutputFile(
|
|
const Settings* settings,
|
|
const BundleData& bundle_data,
|
|
const SourceFile& source_file) const {
|
|
return OutputFile(settings->build_settings(),
|
|
ApplyPatternToSource(settings, bundle_data, source_file));
|
|
}
|