Flutter Impeller
blobcat_main.cc
Go to the documentation of this file.
1
// Copyright 2013 The Flutter Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style license that can be
3
// found in the LICENSE file.
4
5
#include <filesystem>
6
#include <iostream>
7
8
#include "flutter/fml/command_line.h"
9
#include "
impeller/blobcat/blob_writer.h
"
10
11
namespace
impeller
{
12
13
bool
Main
(
const
fml::CommandLine& command_line) {
14
BlobWriter
writer;
15
16
std::string output;
17
if
(!command_line.GetOptionValue(
"output"
, &output)) {
18
std::cerr <<
"Output path not specified."
<< std::endl;
19
return
false
;
20
}
21
22
for
(
const
auto
& input : command_line.GetOptionValues(
"input"
)) {
23
if
(!writer.
AddBlobAtPath
(std::string{input})) {
24
std::cerr <<
"Could not add blob at path: "
<< input << std::endl;
25
return
false
;
26
}
27
}
28
29
auto
blob = writer.
CreateMapping
();
30
if
(!blob) {
31
std::cerr <<
"Could not create combined shader blob."
<< std::endl;
32
return
false
;
33
}
34
35
auto
current_directory =
36
fml::OpenDirectory(std::filesystem::current_path().
string
().c_str(),
37
false
, fml::FilePermission::kReadWrite);
38
auto
output_path =
39
std::filesystem::absolute(std::filesystem::current_path() / output);
40
if
(!fml::WriteAtomically(current_directory, output_path.string().c_str(),
41
*blob)) {
42
std::cerr <<
"Could not write shader blob to path "
<< output << std::endl;
43
return
false
;
44
}
45
46
return
true
;
47
}
48
49
}
// namespace impeller
50
51
int
main
(
int
argc,
char
const
* argv[]) {
52
return
impeller::Main
(fml::CommandLineFromPlatformOrArgcArgv(argc, argv))
53
? EXIT_SUCCESS
54
: EXIT_FAILURE;
55
}
impeller::BlobWriter::CreateMapping
std::shared_ptr< fml::Mapping > CreateMapping() const
Definition:
blob_writer.cc:98
impeller::BlobWriter
Definition:
blob_writer.h:17
impeller::Main
bool Main(const fml::CommandLine &command_line)
Definition:
blobcat_main.cc:13
main
int main(int argc, char const *argv[])
Definition:
blobcat_main.cc:51
blob_writer.h
impeller::BlobWriter::AddBlobAtPath
bool AddBlobAtPath(const std::string &path)
Definition:
blob_writer.cc:31
impeller
Definition:
aiks_context.cc:10
impeller
blobcat
blobcat_main.cc
Generated by
1.8.17