Добавлена возможность запуска drawio внутри xvfb-run
This commit is contained in:
parent
b02cc1a22c
commit
6a7fc32d1b
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -33,6 +33,7 @@
|
|||||||
"tamerh",
|
"tamerh",
|
||||||
"usestdlibvars",
|
"usestdlibvars",
|
||||||
"wdir",
|
"wdir",
|
||||||
"xmlparser"
|
"xmlparser",
|
||||||
|
"Xvfb"
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -19,6 +19,9 @@ func init() {
|
|||||||
// Application
|
// Application
|
||||||
flag.StringVar(&opts.Application, "A", "", "Draw.io Desktop Application")
|
flag.StringVar(&opts.Application, "A", "", "Draw.io Desktop Application")
|
||||||
flag.StringVar(&opts.Application, "application", "", "Draw.io Desktop Application")
|
flag.StringVar(&opts.Application, "application", "", "Draw.io Desktop Application")
|
||||||
|
// EnableXvfb
|
||||||
|
flag.BoolVar(&opts.EnableXvfb, "X", false, "Run drawio inside xvfb-run")
|
||||||
|
flag.BoolVar(&opts.EnableXvfb, "enable-xvfb", false, "Run drawio inside xvfb-run")
|
||||||
// Output
|
// Output
|
||||||
flag.StringVar(&opts.Output, "o", "", "Exported folder name [default: export]")
|
flag.StringVar(&opts.Output, "o", "", "Exported folder name [default: export]")
|
||||||
flag.StringVar(&opts.Output, "output", "", "Exported folder name [default: export]")
|
flag.StringVar(&opts.Output, "output", "", "Exported folder name [default: export]")
|
||||||
|
@ -149,14 +149,17 @@ func (exp Exporter) ExportFile(
|
|||||||
outName += "-" + name
|
outName += "-" + name
|
||||||
}
|
}
|
||||||
outName += exp.opts.OutExt()
|
outName += exp.opts.OutExt()
|
||||||
drawioArgs := make([]string, len(args), len(args)+4)
|
drawioArgs := make([]string, len(args), len(args)+10)
|
||||||
copy(drawioArgs, args)
|
copy(drawioArgs, args)
|
||||||
drawioArgs = append(drawioArgs,
|
drawioArgs = append(drawioArgs,
|
||||||
"--page-index", strconv.Itoa(i),
|
"--page-index", strconv.Itoa(i),
|
||||||
"--output", path.Join(output, outName),
|
"--output", path.Join(output, outName),
|
||||||
"--export", filePath,
|
"--export", filePath,
|
||||||
"--no-sandbox",
|
|
||||||
)
|
)
|
||||||
|
if exp.opts.EnableXvfb {
|
||||||
|
drawioArgs = append(drawioArgs,
|
||||||
|
"--disable-gpu", "--headless", "--no-sandbox")
|
||||||
|
}
|
||||||
cmd := exec.Command(exp.opts.App(), drawioArgs...)
|
cmd := exec.Command(exp.opts.App(), drawioArgs...)
|
||||||
cmd.Stdout = os.Stdout
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
|
@ -142,7 +142,6 @@ var testData = []exportTest{
|
|||||||
"drawio", "--page-index", "0",
|
"drawio", "--page-index", "0",
|
||||||
"--output", "export/diagrams-1.pdf",
|
"--output", "export/diagrams-1.pdf",
|
||||||
"--export", "source/diagrams.drawio",
|
"--export", "source/diagrams.drawio",
|
||||||
"--no-sandbox",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -151,7 +150,6 @@ var testData = []exportTest{
|
|||||||
"drawio", "--page-index", "1",
|
"drawio", "--page-index", "1",
|
||||||
"--output", "export/diagrams-2.pdf",
|
"--output", "export/diagrams-2.pdf",
|
||||||
"--export", "source/diagrams.drawio",
|
"--export", "source/diagrams.drawio",
|
||||||
"--no-sandbox",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -160,7 +158,6 @@ var testData = []exportTest{
|
|||||||
"drawio", "--page-index", "2",
|
"drawio", "--page-index", "2",
|
||||||
"--output", "export/diagrams-3.pdf",
|
"--output", "export/diagrams-3.pdf",
|
||||||
"--export", "source/diagrams.drawio",
|
"--export", "source/diagrams.drawio",
|
||||||
"--no-sandbox",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -230,7 +227,6 @@ var testData = []exportTest{
|
|||||||
"drawio", "--page-index", "0",
|
"drawio", "--page-index", "0",
|
||||||
"--output", "export/diagrams-1.pdf",
|
"--output", "export/diagrams-1.pdf",
|
||||||
"--export", "source/diagrams.drawio",
|
"--export", "source/diagrams.drawio",
|
||||||
"--no-sandbox",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -239,7 +235,6 @@ var testData = []exportTest{
|
|||||||
"drawio", "--page-index", "1",
|
"drawio", "--page-index", "1",
|
||||||
"--output", "export/diagrams-2.pdf",
|
"--output", "export/diagrams-2.pdf",
|
||||||
"--export", "source/diagrams.drawio",
|
"--export", "source/diagrams.drawio",
|
||||||
"--no-sandbox",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -248,7 +243,6 @@ var testData = []exportTest{
|
|||||||
"drawio", "--page-index", "2",
|
"drawio", "--page-index", "2",
|
||||||
"--output", "export/diagrams-3.pdf",
|
"--output", "export/diagrams-3.pdf",
|
||||||
"--export", "source/diagrams.drawio",
|
"--export", "source/diagrams.drawio",
|
||||||
"--no-sandbox",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -272,7 +266,6 @@ var testData = []exportTest{
|
|||||||
"drawio", "--page-index", "0",
|
"drawio", "--page-index", "0",
|
||||||
"--output", "export/additional-Один.pdf",
|
"--output", "export/additional-Один.pdf",
|
||||||
"--export", "source/additional.xml",
|
"--export", "source/additional.xml",
|
||||||
"--no-sandbox",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -281,7 +274,6 @@ var testData = []exportTest{
|
|||||||
"drawio", "--page-index", "1",
|
"drawio", "--page-index", "1",
|
||||||
"--output", "export/additional-Два.pdf",
|
"--output", "export/additional-Два.pdf",
|
||||||
"--export", "source/additional.xml",
|
"--export", "source/additional.xml",
|
||||||
"--no-sandbox",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -306,7 +298,6 @@ var testData = []exportTest{
|
|||||||
"drawio", "--page-index", "0",
|
"drawio", "--page-index", "0",
|
||||||
"--output", "export/subdir/Вложенные диаграммы-Первая диаграмма.pdf",
|
"--output", "export/subdir/Вложенные диаграммы-Первая диаграмма.pdf",
|
||||||
"--export", "source/subdir/Вложенные диаграммы.drawio",
|
"--export", "source/subdir/Вложенные диаграммы.drawio",
|
||||||
"--no-sandbox",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -315,7 +306,6 @@ var testData = []exportTest{
|
|||||||
"drawio", "--page-index", "1",
|
"drawio", "--page-index", "1",
|
||||||
"--output", "export/subdir/Вложенные диаграммы-Вторая диаграмма.pdf",
|
"--output", "export/subdir/Вложенные диаграммы-Вторая диаграмма.pdf",
|
||||||
"--export", "source/subdir/Вложенные диаграммы.drawio",
|
"--export", "source/subdir/Вложенные диаграммы.drawio",
|
||||||
"--no-sandbox",
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -76,6 +76,7 @@ func (f Format) ext() string {
|
|||||||
// Параметры экспортёра диаграмм
|
// Параметры экспортёра диаграмм
|
||||||
type Options struct {
|
type Options struct {
|
||||||
Application string // Путь к приложению drawio
|
Application string // Путь к приложению drawio
|
||||||
|
EnableXvfb bool // Запускать drawio внутри xvfb-run
|
||||||
Output string // Путь к папке с экспортированными файлами
|
Output string // Путь к папке с экспортированными файлами
|
||||||
Format Format // Формат экспортированных файлов
|
Format Format // Формат экспортированных файлов
|
||||||
Recursive bool // Рекурсивно сканировать вложенные папки с файлами
|
Recursive bool // Рекурсивно сканировать вложенные папки с файлами
|
||||||
@ -104,9 +105,12 @@ type ReadDirFunc func(string) ([]os.DirEntry, error)
|
|||||||
|
|
||||||
// Путь к приложению drawio
|
// Путь к приложению drawio
|
||||||
func (opts Options) App() string {
|
func (opts Options) App() string {
|
||||||
|
if opts.EnableXvfb {
|
||||||
|
return "xvfb"
|
||||||
|
}
|
||||||
app := opts.Application
|
app := opts.Application
|
||||||
if len(app) == 0 {
|
if len(app) == 0 {
|
||||||
app = "drawio"
|
return "drawio"
|
||||||
}
|
}
|
||||||
return app
|
return app
|
||||||
}
|
}
|
||||||
@ -132,6 +136,13 @@ func (opts Options) OutExt() string {
|
|||||||
// Аргументы командной строки drawio
|
// Аргументы командной строки drawio
|
||||||
func (opts Options) Args() []string {
|
func (opts Options) Args() []string {
|
||||||
args := []string{}
|
args := []string{}
|
||||||
|
if opts.EnableXvfb {
|
||||||
|
app := "drawio"
|
||||||
|
if len(opts.Application) > 0 {
|
||||||
|
app = opts.Application
|
||||||
|
}
|
||||||
|
args = append(args, "-a", "-l", app)
|
||||||
|
}
|
||||||
if len(opts.Format) > 0 {
|
if len(opts.Format) > 0 {
|
||||||
args = append(args, "--format", string(opts.Format))
|
args = append(args, "--format", string(opts.Format))
|
||||||
}
|
}
|
||||||
@ -184,6 +195,19 @@ func (opt optionApplication) apply(opts *Options) {
|
|||||||
opts.Application = string(opt)
|
opts.Application = string(opt)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Запускать drawio внутри xvfb-run
|
||||||
|
func WithXvfb() Option {
|
||||||
|
return optionXvfb{}
|
||||||
|
}
|
||||||
|
|
||||||
|
type optionXvfb struct{}
|
||||||
|
|
||||||
|
var _ Option = optionXvfb{}
|
||||||
|
|
||||||
|
func (opt optionXvfb) apply(opts *Options) {
|
||||||
|
opts.EnableXvfb = true
|
||||||
|
}
|
||||||
|
|
||||||
// Путь к папке с экспортированными файлами
|
// Путь к папке с экспортированными файлами
|
||||||
func WithOutput(path string) Option {
|
func WithOutput(path string) Option {
|
||||||
return optionOutput(path)
|
return optionOutput(path)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user