Skip to content

Commit

Permalink
prepare release
Browse files Browse the repository at this point in the history
  • Loading branch information
unidoc-build committed Jul 4, 2023
1 parent b1a55b4 commit a4479b9
Show file tree
Hide file tree
Showing 59 changed files with 19,474 additions and 19,456 deletions.
4 changes: 2 additions & 2 deletions algo/algo.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/

package algo ;import _a "strconv";func RepeatString (s string ,cnt int )string {if cnt <=0{return "";};_aa :=make ([]byte ,len (s )*cnt );_ae :=[]byte (s );for _eb :=0;_eb < cnt ;_eb ++{copy (_aa [_eb :],_ae );};return string (_aa );};func _da (_f byte )bool {return _f >='0'&&_f <='9'};
package algo ;import _b "strconv";

// NaturalLess compares two strings in a human manner so rId2 sorts less than rId10
func NaturalLess (lhs ,rhs string )bool {_daa ,_c :=0,0;for _daa < len (lhs )&&_c < len (rhs ){_dg :=lhs [_daa ];_fa :=rhs [_c ];_fac :=_da (_dg );_ag :=_da (_fa );switch {case _fac &&!_ag :return true ;case !_fac &&_ag :return false ;case !_fac &&!_ag :if _dg !=_fa {return _dg < _fa ;};_daa ++;_c ++;default:_e :=_daa +1;_de :=_c +1;for _e < len (lhs )&&_da (lhs [_e ]){_e ++;};for _de < len (rhs )&&_da (rhs [_de ]){_de ++;};_deg ,_ :=_a .ParseUint (lhs [_daa :_e ],10,64);_b ,_ :=_a .ParseUint (rhs [_daa :_de ],10,64);if _deg !=_b {return _deg < _b ;};_daa =_e ;_c =_de ;};};return len (lhs )< len (rhs );};
func NaturalLess (lhs ,rhs string )bool {_de ,_gg :=0,0;for _de < len (lhs )&&_gg < len (rhs ){_ef :=lhs [_de ];_bd :=rhs [_gg ];_bdg :=_g (_ef );_gc :=_g (_bd );switch {case _bdg &&!_gc :return true ;case !_bdg &&_gc :return false ;case !_bdg &&!_gc :if _ef !=_bd {return _ef < _bd ;};_de ++;_gg ++;default:_ec :=_de +1;_ggb :=_gg +1;for _ec < len (lhs )&&_g (lhs [_ec ]){_ec ++;};for _ggb < len (rhs )&&_g (rhs [_ggb ]){_ggb ++;};_f ,_ :=_b .ParseUint (lhs [_de :_ec ],10,64);_eg ,_ :=_b .ParseUint (rhs [_de :_ggb ],10,64);if _f !=_eg {return _f < _eg ;};_de =_ec ;_gg =_ggb ;};};return len (lhs )< len (rhs );};func _g (_d byte )bool {return _d >='0'&&_d <='9'};func RepeatString (s string ,cnt int )string {if cnt <=0{return "";};_bf :=make ([]byte ,len (s )*cnt );_a :=[]byte (s );for _df :=0;_df < cnt ;_df ++{copy (_bf [_df :],_a );};return string (_bf );};
670 changes: 335 additions & 335 deletions chart/chart.go

Large diffs are not rendered by default.

28 changes: 14 additions & 14 deletions color/color.go

Large diffs are not rendered by default.

294 changes: 147 additions & 147 deletions common/axcontrol/axcontrol.go

Large diffs are not rendered by default.

540 changes: 270 additions & 270 deletions common/common.go

Large diffs are not rendered by default.

38 changes: 19 additions & 19 deletions common/license/license.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,39 +11,39 @@

// Package license helps manage commercial licenses and check if they
// are valid for the version of UniOffice used.
package license ;import _e "github.com/unidoc/unioffice/internal/license";
package license ;import _d "github.com/unidoc/unioffice/internal/license";

// GetLicenseKey returns the currently loaded license key.
func GetLicenseKey ()*LicenseKey {return _e .GetLicenseKey ()};
// LegacyLicense holds the old-style unioffice license information.
type LegacyLicense =_d .LegacyLicense ;

// SetMeteredKey sets the metered License API key required for SaaS operation.
// Document usage is reported periodically for the product to function correctly.
func SetMeteredKey (apiKey string )error {return _e .SetMeteredKey (apiKey )};const (LicenseTierUnlicensed =_e .LicenseTierUnlicensed ;LicenseTierCommunity =_e .LicenseTierCommunity ;LicenseTierIndividual =_e .LicenseTierIndividual ;LicenseTierBusiness =_e .LicenseTierBusiness ;);

// LegacyLicenseType is the type of license
type LegacyLicenseType =_e .LegacyLicenseType ;
func SetMeteredKey (apiKey string )error {return _d .SetMeteredKey (apiKey )};

// LegacyLicense holds the old-style unioffice license information.
type LegacyLicense =_e .LegacyLicense ;
// GetMeteredState checks the currently used metered document usage status,
// documents used and credits available.
func GetMeteredState ()(_d .MeteredStatus ,error ){return _d .GetMeteredState ()};

// MakeUnlicensedKey returns a default key.
func MakeUnlicensedKey ()*LicenseKey {return _e .MakeUnlicensedKey ()};
func MakeUnlicensedKey ()*LicenseKey {return _d .MakeUnlicensedKey ()};

// SetLicenseKey sets and validates the license key.
func SetLicenseKey (content string ,customerName string )error {return _e .SetLicenseKey (content ,customerName );};
// GetLicenseKey returns the currently loaded license key.
func GetLicenseKey ()*LicenseKey {return _d .GetLicenseKey ()};

// SetMeteredKeyPersistentCache sets the metered License API Key persistent cache.
// Default value `true`, set to `false` will report the usage immediately to license server,
// this can be used when there's no access to persistent data storage.
func SetMeteredKeyPersistentCache (val bool ){_e .SetMeteredKeyPersistentCache (val )};
func SetMeteredKeyPersistentCache (val bool ){_d .SetMeteredKeyPersistentCache (val )};

// SetLegacyLicenseKey installs a legacy license code. License codes issued prior to June 2019.
// Will be removed at some point in a future major version.
func SetLegacyLicenseKey (s string )error {return _e .SetLegacyLicenseKey (s )};
func SetLegacyLicenseKey (s string )error {return _d .SetLegacyLicenseKey (s )};const (LicenseTierUnlicensed =_d .LicenseTierUnlicensed ;LicenseTierCommunity =_d .LicenseTierCommunity ;LicenseTierIndividual =_d .LicenseTierIndividual ;LicenseTierBusiness =_d .LicenseTierBusiness ;);

// LicenseKey represents a loaded license key.
type LicenseKey =_e .LicenseKey ;
// LegacyLicenseType is the type of license
type LegacyLicenseType =_d .LegacyLicenseType ;

// GetMeteredState checks the currently used metered document usage status,
// documents used and credits available.
func GetMeteredState ()(_e .MeteredStatus ,error ){return _e .GetMeteredState ()};
// SetLicenseKey sets and validates the license key.
func SetLicenseKey (content string ,customerName string )error {return _d .SetLicenseKey (content ,customerName );};

// LicenseKey represents a loaded license key.
type LicenseKey =_d .LicenseKey ;
114 changes: 57 additions & 57 deletions common/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,93 +9,93 @@
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/

package logger ;import (_b "fmt";_f "io";_ad "os";_a "path/filepath";_d "runtime";);
package logger ;import (_a "fmt";_d "io";_f "os";_e "path/filepath";_c "runtime";);

// ConsoleLogger is a logger that writes logs to the 'os.Stdout'
type ConsoleLogger struct{LogLevel LogLevel ;};
// Notice does nothing for dummy logger.
func (DummyLogger )Notice (format string ,args ...interface{}){};

// Error logs error message.
func (_fcg WriterLogger )Error (format string ,args ...interface{}){if _fcg .LogLevel >=LogLevelError {_daa :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_fcg .logToWriter (_fcg .Output ,_daa ,format ,args ...);};};
// IsLogLevel returns true if log level is greater or equal than `level`.
// Can be used to avoid resource intensive calls to loggers.
func (_bd ConsoleLogger )IsLogLevel (level LogLevel )bool {return _bd .LogLevel >=level };

// Error does nothing for dummy logger.
func (DummyLogger )Error (format string ,args ...interface{}){};func (_bde WriterLogger )logToWriter (_cbf _f .Writer ,_bf string ,_edc string ,_fdg ...interface{}){_de (_cbf ,_bf ,_edc ,_fdg );};
// Notice logs notice message.
func (_fga ConsoleLogger )Notice (format string ,args ...interface{}){if _fga .LogLevel >=LogLevelNotice {_gc :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_fga .output (_f .Stdout ,_gc ,format ,args ...);};};

// Error logs error message.
func (_ca ConsoleLogger )Error (format string ,args ...interface{}){if _ca .LogLevel >=LogLevelError {_dga :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_ca .output (_ad .Stdout ,_dga ,format ,args ...);};};
// Debug logs debug message.
func (_eb WriterLogger )Debug (format string ,args ...interface{}){if _eb .LogLevel >=LogLevelDebug {_ff :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_eb .logToWriter (_eb .Output ,_ff ,format ,args ...);};};

// Info logs info message.
func (_fe ConsoleLogger )Info (format string ,args ...interface{}){if _fe .LogLevel >=LogLevelInfo {_gg :="\u005bI\u004e\u0046\u004f\u005d\u0020";_fe .output (_ad .Stdout ,_gg ,format ,args ...);};};
// Notice logs notice message.
func (_bb WriterLogger )Notice (format string ,args ...interface{}){if _bb .LogLevel >=LogLevelNotice {_cga :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_bb .logToWriter (_bb .Output ,_cga ,format ,args ...);};};

// Debug logs debug message.
func (_ag ConsoleLogger )Debug (format string ,args ...interface{}){if _ag .LogLevel >=LogLevelDebug {_ed :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_ag .output (_f .Stdout ,_ed ,format ,args ...);};};

// LogLevel is the verbosity level for logging.
type LogLevel int ;

// IsLogLevel returns true from dummy logger.
func (DummyLogger )IsLogLevel (level LogLevel )bool {return true };

// Warning logs warning message.
func (_fec WriterLogger )Warning (format string ,args ...interface{}){if _fec .LogLevel >=LogLevelWarning {_aae :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_fec .logToWriter (_fec .Output ,_aae ,format ,args ...);};};
// Error logs error message.
func (_bda ConsoleLogger )Error (format string ,args ...interface{}){if _bda .LogLevel >=LogLevelError {_ded :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_bda .output (_f .Stdout ,_ded ,format ,args ...);};};

// WriterLogger is the logger that writes data to the Output writer
type WriterLogger struct{LogLevel LogLevel ;Output _f .Writer ;};
// DummyLogger does nothing.
type DummyLogger struct{};

// Notice logs notice message.
func (_ge ConsoleLogger )Notice (format string ,args ...interface{}){if _ge .LogLevel >=LogLevelNotice {_df :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_ge .output (_ad .Stdout ,_df ,format ,args ...);};};
// SetLogger sets 'logger' to be used by the unidoc unipdf library.
func SetLogger (logger Logger ){Log =logger };func _feb (_fadf _d .Writer ,_fab string ,_ab string ,_dc ...interface{}){_ ,_ece ,_ce ,_cbf :=_c .Caller (3);if !_cbf {_ece ="\u003f\u003f\u003f";_ce =0;}else {_ece =_e .Base (_ece );};_dgg :=_a .Sprintf ("\u0025s\u0020\u0025\u0073\u003a\u0025\u0064 ",_fab ,_ece ,_ce )+_ab +"\u000a";_a .Fprintf (_fadf ,_dgg ,_dc ...);};const (LogLevelTrace LogLevel =5;LogLevelDebug LogLevel =4;LogLevelInfo LogLevel =3;LogLevelNotice LogLevel =2;LogLevelWarning LogLevel =1;LogLevelError LogLevel =0;);

// Debug does nothing for dummy logger.
func (DummyLogger )Debug (format string ,args ...interface{}){};
// Info logs info message.
func (_gg ConsoleLogger )Info (format string ,args ...interface{}){if _gg .LogLevel >=LogLevelInfo {_afb :="\u005bI\u004e\u0046\u004f\u005d\u0020";_gg .output (_f .Stdout ,_afb ,format ,args ...);};};

// NewConsoleLogger creates new console logger.
func NewConsoleLogger (logLevel LogLevel )*ConsoleLogger {return &ConsoleLogger {LogLevel :logLevel }};func (_gc ConsoleLogger )output (_ce _f .Writer ,_ea string ,_be string ,_fc ...interface{}){_de (_ce ,_ea ,_be ,_fc ...);};
// Warning logs warning message.
func (_aag WriterLogger )Warning (format string ,args ...interface{}){if _aag .LogLevel >=LogLevelWarning {_cb :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_aag .logToWriter (_aag .Output ,_cb ,format ,args ...);};};var Log Logger =DummyLogger {};func (_fad ConsoleLogger )output (_gf _d .Writer ,_bf string ,_ac string ,_aca ...interface{}){_feb (_gf ,_bf ,_ac ,_aca ...);};

// NewWriterLogger creates new 'writer' logger.
func NewWriterLogger (logLevel LogLevel ,writer _f .Writer )*WriterLogger {logger :=WriterLogger {Output :writer ,LogLevel :logLevel };return &logger ;};
func NewWriterLogger (logLevel LogLevel ,writer _d .Writer )*WriterLogger {logger :=WriterLogger {Output :writer ,LogLevel :logLevel };return &logger ;};

// Debug logs debug message.
func (_aaee WriterLogger )Debug (format string ,args ...interface{}){if _aaee .LogLevel >=LogLevelDebug {_bd :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_aaee .logToWriter (_aaee .Output ,_bd ,format ,args ...);};};
// IsLogLevel returns true if log level is greater or equal than `level`.
// Can be used to avoid resource intensive calls to loggers.
func (_ef WriterLogger )IsLogLevel (level LogLevel )bool {return _ef .LogLevel >=level };

// Trace does nothing for dummy logger.
func (DummyLogger )Trace (format string ,args ...interface{}){};
// ConsoleLogger is a logger that writes logs to the 'os.Stdout'
type ConsoleLogger struct{LogLevel LogLevel ;};

// Info logs info message.
func (_fg WriterLogger )Info (format string ,args ...interface{}){if _fg .LogLevel >=LogLevelInfo {_db :="\u005bI\u004e\u0046\u004f\u005d\u0020";_fg .logToWriter (_fg .Output ,_db ,format ,args ...);};};
// WriterLogger is the logger that writes data to the Output writer
type WriterLogger struct{LogLevel LogLevel ;Output _d .Writer ;};

// IsLogLevel returns true if log level is greater or equal than `level`.
// Can be used to avoid resource intensive calls to loggers.
func (_eb WriterLogger )IsLogLevel (level LogLevel )bool {return _eb .LogLevel >=level };
// Info does nothing for dummy logger.
func (DummyLogger )Info (format string ,args ...interface{}){};

// Warning logs warning message.
func (_cb ConsoleLogger )Warning (format string ,args ...interface{}){if _cb .LogLevel >=LogLevelWarning {_aaa :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_cb .output (_ad .Stdout ,_aaa ,format ,args ...);};};func _de (_dba _f .Writer ,_fb string ,_ac string ,_bb ...interface{}){_ ,_gfd ,_ec ,_cge :=_d .Caller (3);if !_cge {_gfd ="\u003f\u003f\u003f";_ec =0;}else {_gfd =_a .Base (_gfd );};_ee :=_b .Sprintf ("\u0025s\u0020\u0025\u0073\u003a\u0025\u0064 ",_fb ,_gfd ,_ec )+_ac +"\u000a";_b .Fprintf (_dba ,_ee ,_bb ...);};
func (_dg ConsoleLogger )Warning (format string ,args ...interface{}){if _dg .LogLevel >=LogLevelWarning {_fge :="\u005b\u0057\u0041\u0052\u004e\u0049\u004e\u0047\u005d\u0020";_dg .output (_f .Stdout ,_fge ,format ,args ...);};};func (_cc WriterLogger )logToWriter (_cbg _d .Writer ,_aab string ,_aee string ,_cf ...interface{}){_feb (_cbg ,_aab ,_aee ,_cf );};

// Warning does nothing for dummy logger.
func (DummyLogger )Warning (format string ,args ...interface{}){};

// Notice logs notice message.
func (_edf WriterLogger )Notice (format string ,args ...interface{}){if _edf .LogLevel >=LogLevelNotice {_bef :="\u005bN\u004f\u0054\u0049\u0043\u0045\u005d ";_edf .logToWriter (_edf .Output ,_bef ,format ,args ...);};};
// NewConsoleLogger creates new console logger.
func NewConsoleLogger (logLevel LogLevel )*ConsoleLogger {return &ConsoleLogger {LogLevel :logLevel }};

// DummyLogger does nothing.
type DummyLogger struct{};
// Error logs error message.
func (_egg WriterLogger )Error (format string ,args ...interface{}){if _egg .LogLevel >=LogLevelError {_agg :="\u005b\u0045\u0052\u0052\u004f\u0052\u005d\u0020";_egg .logToWriter (_egg .Output ,_agg ,format ,args ...);};};

// IsLogLevel returns true if log level is greater or equal than `level`.
// Can be used to avoid resource intensive calls to loggers.
func (_eg ConsoleLogger )IsLogLevel (level LogLevel )bool {return _eg .LogLevel >=level };
// Error does nothing for dummy logger.
func (DummyLogger )Error (format string ,args ...interface{}){};

// LogLevel is the verbosity level for logging.
type LogLevel int ;const (LogLevelTrace LogLevel =5;LogLevelDebug LogLevel =4;LogLevelInfo LogLevel =3;LogLevelNotice LogLevel =2;LogLevelWarning LogLevel =1;LogLevelError LogLevel =0;);
// Trace logs trace message.
func (_bbb WriterLogger )Trace (format string ,args ...interface{}){if _bbb .LogLevel >=LogLevelTrace {_cdd :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_bbb .logToWriter (_bbb .Output ,_cdd ,format ,args ...);};};

// Info does nothing for dummy logger.
func (DummyLogger )Info (format string ,args ...interface{}){};
// Info logs info message.
func (_gdf WriterLogger )Info (format string ,args ...interface{}){if _gdf .LogLevel >=LogLevelInfo {_dfe :="\u005bI\u004e\u0046\u004f\u005d\u0020";_gdf .logToWriter (_gdf .Output ,_dfe ,format ,args ...);};};

// SetLogger sets 'logger' to be used by the unidoc unipdf library.
func SetLogger (logger Logger ){Log =logger };
// Debug does nothing for dummy logger.
func (DummyLogger )Debug (format string ,args ...interface{}){};

// Notice does nothing for dummy logger.
func (DummyLogger )Notice (format string ,args ...interface{}){};var Log Logger =DummyLogger {};
// Trace does nothing for dummy logger.
func (DummyLogger )Trace (format string ,args ...interface{}){};

// Debug logs debug message.
func (_ae ConsoleLogger )Debug (format string ,args ...interface{}){if _ae .LogLevel >=LogLevelDebug {_geb :="\u005b\u0044\u0045\u0042\u0055\u0047\u005d\u0020";_ae .output (_ad .Stdout ,_geb ,format ,args ...);};};
// Warning does nothing for dummy logger.
func (DummyLogger )Warning (format string ,args ...interface{}){};

// Trace logs trace message.
func (_cf WriterLogger )Trace (format string ,args ...interface{}){if _cf .LogLevel >=LogLevelTrace {_ef :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_cf .logToWriter (_cf .Output ,_ef ,format ,args ...);};};
func (_aa ConsoleLogger )Trace (format string ,args ...interface{}){if _aa .LogLevel >=LogLevelTrace {_fa :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_aa .output (_f .Stdout ,_fa ,format ,args ...);};};

// Logger is the interface used for logging in the unipdf package.
type Logger interface{Error (_ab string ,_aa ...interface{});Warning (_dg string ,_e ...interface{});Notice (_cg string ,_fd ...interface{});Info (_dc string ,_ed ...interface{});Debug (_g string ,_cd ...interface{});Trace (_ba string ,_da ...interface{});IsLogLevel (_aba LogLevel )bool ;};

// Trace logs trace message.
func (_aec ConsoleLogger )Trace (format string ,args ...interface{}){if _aec .LogLevel >=LogLevelTrace {_gf :="\u005b\u0054\u0052\u0041\u0043\u0045\u005d\u0020";_aec .output (_ad .Stdout ,_gf ,format ,args ...);};};
type Logger interface{Error (_ec string ,_df ...interface{});Warning (_ee string ,_fe ...interface{});Notice (_gd string ,_b ...interface{});Info (_af string ,_eg ...interface{});Debug (_ae string ,_fg ...interface{});Trace (_cg string ,_cd ...interface{});IsLogLevel (_de LogLevel )bool ;};
22 changes: 11 additions & 11 deletions common/tempstorage/diskstore/diskstore.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,22 @@

// Package diskstore implements tempStorage interface
// by using disk as a storage
package diskstore ;import (_bc "github.com/unidoc/unioffice/common/tempstorage";_g "io/ioutil";_d "os";_e "strings";);
package diskstore ;import (_ba "github.com/unidoc/unioffice/common/tempstorage";_e "io/ioutil";_eb "os";_bc "strings";);type diskStorage struct{};

// TempFile creates a new temp file by calling ioutil TempFile
func (_d diskStorage )TempFile (dir ,pattern string )(_ba .File ,error ){return _e .TempFile (dir ,pattern );};

// Open opens file from disk according to a path
func (_bcg diskStorage )Open (path string )(_bc .File ,error ){return _d .OpenFile (path ,_d .O_RDWR ,0644);};
func (_f diskStorage )Open (path string )(_ba .File ,error ){return _eb .OpenFile (path ,_eb .O_RDWR ,0644);};

// TempFile creates a new temp directory by calling ioutil TempDir
func (_ag diskStorage )TempDir (pattern string )(string ,error ){return _g .TempDir ("",pattern )};
func (_ga diskStorage )TempDir (pattern string )(string ,error ){return _e .TempDir ("",pattern )};

// Add is not applicable in the diskstore implementation
func (_ab diskStorage )Add (path string )error {return nil };
// SetAsStorage sets temp storage as a disk storage
func SetAsStorage (){_g :=diskStorage {};_ba .SetAsStorage (&_g )};

// TempFile creates a new temp file by calling ioutil TempFile
func (_a diskStorage )TempFile (dir ,pattern string )(_bc .File ,error ){return _g .TempFile (dir ,pattern );};
// Add is not applicable in the diskstore implementation
func (_ge diskStorage )Add (path string )error {return nil };

// RemoveAll removes all files in the directory
func (_ed diskStorage )RemoveAll (dir string )error {if _e .HasPrefix (dir ,_d .TempDir ()){return _d .RemoveAll (dir );};return nil ;};

// SetAsStorage sets temp storage as a disk storage
func SetAsStorage (){_f :=diskStorage {};_bc .SetAsStorage (&_f )};type diskStorage struct{};
func (_bf diskStorage )RemoveAll (dir string )error {if _bc .HasPrefix (dir ,_eb .TempDir ()){return _eb .RemoveAll (dir );};return nil ;};
Loading

0 comments on commit a4479b9

Please sign in to comment.