11# -*- coding: utf-8 -*-
2+ #========================================
3+ 4+ # Home: https://www.netkiller.cn
5+ # Callsign: BG7NYT
6+ #========================================
27import os , sys
38import copy
49import json
@@ -401,6 +406,7 @@ class Composes(Common):
401406 compose = {}
402407 daemon = False
403408 basedir = "."
409+ files = {}
404410
405411 def __init__ (self , name ):
406412 super ().__init__ ()
@@ -413,6 +419,7 @@ def __init__(self, name):
413419 self .environ = None
414420 self .projectName = None
415421 self .envFile = None
422+ self .files = {}
416423
417424 def env (self , default ):
418425 # if not self.environ :
@@ -448,6 +455,10 @@ def volumes(self, obj):
448455 self .compose ["volumes" ] = copy .deepcopy (obj .volumes )
449456 return self
450457
458+ def file (self , filename , text ):
459+ self .files [filename ]= text
460+ return self
461+
451462 def debug (self ):
452463 jsonformat = json .dumps (
453464 self .compose , sort_keys = True , indent = 4 , separators = ("," , ":" )
@@ -461,6 +472,20 @@ def filename(self):
461472 return self .basedir + "/" + self .name + "/" + "compose.yaml"
462473
463474 def save (self , filename = None ):
475+
476+ for filepath , content in self .files .items ():
477+ dirname = os .path .dirname (filepath )
478+ try :
479+ if not os .path .isdir (dirname ):
480+ os .makedirs (dirname )
481+ self .logger .info ("Create directory %s" % dirname )
482+ with open (filepath , "w" ) as file :
483+ file .writelines (content )
484+ self .logger .info ("Create file %s" % filepath )
485+
486+ except Exception as e :
487+ self .logger .error (f"Create file { filepath } { repr (e )} " )
488+
464489 if not filename :
465490 filename = self .filename ()
466491
0 commit comments