Skip to content

Commit 51e33b7

Browse files
committed
accept JS files as additional output (fixes #111)
1 parent 9c5cfe3 commit 51e33b7

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

build/build.go

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ func (o *Options) PrintSuccess(format string, a ...interface{}) {
206206

207207
type PackageData struct {
208208
*build.Package
209+
JsFiles []string
209210
SrcModTime time.Time
210211
UpToDate bool
211212
Archive *compiler.Archive
@@ -283,10 +284,17 @@ func (s *Session) BuildFiles(filenames []string, pkgObj string, packagePath stri
283284
Name: "main",
284285
ImportPath: "main",
285286
Dir: packagePath,
286-
GoFiles: filenames,
287287
},
288288
}
289289

290+
for _, file := range filenames {
291+
if strings.HasSuffix(file, ".js") {
292+
pkg.JsFiles = append(pkg.JsFiles, file)
293+
continue
294+
}
295+
pkg.GoFiles = append(pkg.GoFiles, file)
296+
}
297+
290298
if err := s.BuildPackage(pkg); err != nil {
291299
return err
292300
}
@@ -309,6 +317,17 @@ func (s *Session) ImportPackage(path string) (*compiler.Archive, error) {
309317
return nil, err
310318
}
311319
pkg := &PackageData{Package: buildPkg}
320+
321+
files, err := ioutil.ReadDir(pkg.Dir)
322+
if err != nil {
323+
return nil, err
324+
}
325+
for _, file := range files {
326+
if strings.HasSuffix(file.Name(), ".js") {
327+
pkg.JsFiles = append(pkg.JsFiles, filepath.Join(pkg.Dir, file.Name()))
328+
}
329+
}
330+
312331
if err := s.BuildPackage(pkg); err != nil {
313332
return nil, err
314333
}
@@ -417,6 +436,18 @@ func (s *Session) BuildPackage(pkg *PackageData) error {
417436
return err
418437
}
419438

439+
var jsDecls []compiler.Decl
440+
for _, jsFile := range pkg.JsFiles {
441+
code, err := ioutil.ReadFile(jsFile)
442+
if err != nil {
443+
return err
444+
}
445+
jsDecls = append(jsDecls, compiler.Decl{
446+
BodyCode: append(code, '\n'),
447+
})
448+
}
449+
pkg.Archive.Declarations = append(jsDecls, pkg.Archive.Declarations...)
450+
420451
if s.options.Verbose {
421452
fmt.Println(pkg.ImportPath)
422453
}

tool.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ func main() {
7272
return s.BuildDir(currentDirectory, currentDirectory, pkgObj)
7373
}
7474

75-
if strings.HasSuffix(args[0], ".go") {
75+
if strings.HasSuffix(args[0], ".go") || strings.HasSuffix(args[0], ".js") {
7676
for _, arg := range args {
77-
if !strings.HasSuffix(arg, ".go") {
77+
if !strings.HasSuffix(arg, ".go") && !strings.HasSuffix(arg, ".js") {
7878
return fmt.Errorf("named files must be .go files")
7979
}
8080
}
@@ -201,7 +201,7 @@ func main() {
201201
os.Exit(handleError(func() error {
202202
lastSourceArg := 0
203203
for {
204-
if lastSourceArg == len(args) || !strings.HasSuffix(args[lastSourceArg], ".go") {
204+
if lastSourceArg == len(args) || !(strings.HasSuffix(args[lastSourceArg], ".go") || strings.HasSuffix(args[lastSourceArg], ".js")) {
205205
break
206206
}
207207
lastSourceArg++

0 commit comments

Comments
 (0)