Skip to content

Commit

Permalink
Merge branch 'development'
Browse files Browse the repository at this point in the history
  • Loading branch information
darashi committed Mar 11, 2015
2 parents 15e62f0 + 41875ca commit dbb382a
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 20 deletions.
5 changes: 3 additions & 2 deletions build.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ var cmdBuild = &Command{
Run: runBuild,
Name: "build",
Short: "build stanza provider",
UsageLine: "server [-stanza-base-dir dir]",
UsageLine: "server [-stanza-base-dir dir] [-development=false]",
Long: "Build stanza provider",
}

Expand All @@ -26,6 +26,7 @@ func addBuildFlags(cmd *Command) {

func init() {
addBuildFlags(cmdBuild)
cmdBuild.Flag.BoolVar(&flagBuildDevelopment, "development", false, "development mode")
}

func runBuild(cmd *Command, args []string) {
Expand All @@ -35,7 +36,7 @@ func runBuild(cmd *Command, args []string) {
}
distPath := path.Join(flagStanzaBaseDir, "dist")
distStanzaPath := path.Join(distPath, "stanza")
if err := sp.Build(distStanzaPath); err != nil {
if err := sp.Build(distStanzaPath, flagBuildDevelopment); err != nil {
log.Fatal(err)
}
}
1 change: 1 addition & 0 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import (
var VERSION = "snapshot"
var flagPort int
var flagStanzaBaseDir string
var flagBuildDevelopment bool

type Command struct {
Run func(cmd *Command, args []string)
Expand Down
22 changes: 13 additions & 9 deletions provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ func (sp *StanzaProvider) Load() error {
return nil
}

func (sp *StanzaProvider) build(distDir string) error {
func (sp *StanzaProvider) build(distDir string, development bool) error {
t0 := time.Now()

if err := sp.Load(); err != nil {
Expand All @@ -91,7 +91,7 @@ func (sp *StanzaProvider) build(distDir string) error {
return err
}

if err := sp.buildStanzas(distDir); err != nil {
if err := sp.buildStanzas(distDir, development); err != nil {
return err
}
if err := sp.extractAssets(distDir); err != nil {
Expand All @@ -108,20 +108,20 @@ func (sp *StanzaProvider) build(distDir string) error {
return nil
}

func (sp *StanzaProvider) Build(distDir string) error {
func (sp *StanzaProvider) Build(distDir string, development bool) error {
lm, err := sp.LastModified()
if err != nil {
return err
}
sp.lastModified = lm

if err := sp.build(distDir); err != nil {
if err := sp.build(distDir, development); err != nil {
return err
}
return nil
}

func (sp *StanzaProvider) RebuildIfRequired(distDir string) error {
func (sp *StanzaProvider) RebuildIfRequired(distDir string, development bool) error {
lm, err := sp.LastModified()
if err != nil {
return err
Expand All @@ -130,19 +130,23 @@ func (sp *StanzaProvider) RebuildIfRequired(distDir string) error {
if lm.After(sp.lastModified) {
sp.lastModified = lm
log.Println("update detected; rebuilding ...")
if err := sp.Build(distDir); err != nil {
if err := sp.Build(distDir, development); err != nil {
return err
}
}
return nil
}

func (sp *StanzaProvider) buildStanzas(distDir string) error {
log.Println("building stanzas")
func (sp *StanzaProvider) buildStanzas(distDir string, development bool) error {
if development {
log.Println("building stanzas (development mode)")
} else {
log.Println("building stanzas (production mode)")
}
numBuilt := 0
for name, stanza := range sp.stanzas {
destStanzaBase := path.Join(distDir, name)
if err := stanza.Build(destStanzaBase); err != nil {
if err := stanza.Build(destStanzaBase, development); err != nil {
return err
}
numBuilt++
Expand Down
8 changes: 5 additions & 3 deletions server.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,16 @@ var cmdServer = &Command{
Run: runServer,
Name: "server",
Short: "run server",
UsageLine: "server [-port port] [-stanza-base-dir dir]",
UsageLine: "server [-port port] [-stanza-base-dir dir] [-development]",
Long: "Run ts server for development",
}

var REGEXP_STANZA_PATH = regexp.MustCompile(`^/stanza/([^/]+)/`)
var flagServerDevelopment bool

func init() {
cmdServer.Flag.IntVar(&flagPort, "port", 8080, "port to listen on")
cmdServer.Flag.BoolVar(&flagServerDevelopment, "development", true, "development mode")
addBuildFlags(cmdServer)
}

Expand All @@ -33,7 +35,7 @@ func runServer(cmd *Command, args []string) {

distPath := path.Join(flagStanzaBaseDir, "dist")
distStanzaPath := path.Join(distPath, "stanza")
if err := sp.Build(distStanzaPath); err != nil {
if err := sp.Build(distStanzaPath, flagServerDevelopment); err != nil {
log.Fatal(err)
}

Expand All @@ -48,7 +50,7 @@ func runServer(cmd *Command, args []string) {
}
if m := REGEXP_STANZA_PATH.FindStringSubmatch(req.URL.Path); len(m) > 0 {
if m[1] != "assets" {
err := sp.RebuildIfRequired(distStanzaPath)
err := sp.RebuildIfRequired(distStanzaPath, flagServerDevelopment)
if err != nil {
log.Println("ERROR during rebuild:", err)
}
Expand Down
42 changes: 39 additions & 3 deletions stanza/data/stanza.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,61 @@
function Stanza(execute) {
var proto = Object.create(HTMLElement.prototype);
var development = descriptor.development;

function template(name) {
var t = descriptor.templates[name];
if (!t) {
throw new Error("template \"" + name + "\" is not found");
}
return t;
}

function createStanzaHelper(element) {
return {
query: function(params) {
var queryTemplate = Handlebars.compile(descriptor.templates[params.template], {noEscape: true});
if (development) {
console.log("query: called", params);
}
var t = template(params.template);
var queryTemplate = Handlebars.compile(t, {noEscape: true});
var query = queryTemplate(params.parameters);

return $.ajax({
if (development) {
console.log("query: query built:\n" + query);
console.log("query: sending to", params.endpoint);
}

var p = $.ajax({
url: params.endpoint,
data: {
format: "json",
query: query
}
});

if (development) {
p.then(function(value, textStatus) {
console.log("query:", textStatus, "data", value);
});
}

return p;
},
render: function(params) {
var htmlTemplate = Handlebars.compile(descriptor.templates[params.template]);
if (development) {
console.log("render: called", params)
}
var t = template(params.template);
var htmlTemplate = Handlebars.compile(t);
var htmlFragment = htmlTemplate(params.parameters);
if (development) {
console.log("render: built:\n", htmlFragment)
}
var selector = params.selector || "main";
$(selector, element.shadowRoot).html(htmlFragment);
if (development) {
console.log("render: wrote to \"" + selector + "\"")
}
},
root: element.shadowRoot,
select: function(selector) {
Expand Down
8 changes: 5 additions & 3 deletions stanza/stanza.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,11 +149,11 @@ func (st *Stanza) ElementName() string {
return "togostanza-" + st.Name
}

func (st *Stanza) Build(destStanzaBase string) error {
func (st *Stanza) Build(destStanzaBase string, development bool) error {
if err := os.MkdirAll(destStanzaBase, os.FileMode(0755)); err != nil {
return err
}
if err := st.buildIndexHtml(destStanzaBase); err != nil {
if err := st.buildIndexHtml(destStanzaBase, development); err != nil {
return err
}
if err := st.buildHelpHtml(destStanzaBase); err != nil {
Expand Down Expand Up @@ -252,7 +252,7 @@ func (st *Stanza) headerHtml() ([]byte, error) {
return ioutil.ReadFile(path)
}

func (st *Stanza) buildIndexHtml(destStanzaBase string) error {
func (st *Stanza) buildIndexHtml(destStanzaBase string, development bool) error {
indexHtmlTmpl := MustTemplateAsset("data/index.html")

indexJs, err := ioutil.ReadFile(st.IndexJsPath())
Expand Down Expand Up @@ -280,11 +280,13 @@ func (st *Stanza) buildIndexHtml(destStanzaBase string) error {
Parameters []string `json:"parameters"`
ElementName string `json:"elementName"`
Stylesheet string `json:"stylesheet"`
Development bool `json:"development"`
}{
Templates: templates,
Parameters: st.Metadata.ParameterKeys(),
ElementName: st.ElementName(),
Stylesheet: string(stylesheet),
Development: development,
}
descriptorJson, err := json.Marshal(descriptor)
if err != nil {
Expand Down

0 comments on commit dbb382a

Please sign in to comment.