mirror of
https://github.com/kevin-DL/revel-cmd.git
synced 2026-01-23 07:21:28 +00:00
Moved skeleton to its own repository
This commit is contained in:
37
revel/new.go
37
revel/new.go
@@ -205,7 +205,7 @@ func setApplicationPath(c *model.CommandConfig) (err error) {
|
|||||||
// Set the skeleton path
|
// Set the skeleton path
|
||||||
func setSkeletonPath(c *model.CommandConfig) (err error) {
|
func setSkeletonPath(c *model.CommandConfig) (err error) {
|
||||||
if len(c.New.SkeletonPath) == 0 {
|
if len(c.New.SkeletonPath) == 0 {
|
||||||
c.New.SkeletonPath = RevelCmdImportPath + ":skeleton"
|
c.New.SkeletonPath = "git://" + RevelSkeletonsImportPath + ":basic/bootstrap4"
|
||||||
}
|
}
|
||||||
|
|
||||||
// First check to see the protocol of the string
|
// First check to see the protocol of the string
|
||||||
@@ -218,12 +218,13 @@ func setSkeletonPath(c *model.CommandConfig) (err error) {
|
|||||||
if err := newLoadFromGit(c, sp); err != nil {
|
if err := newLoadFromGit(c, sp); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
case "":
|
//case "":
|
||||||
if err := newLoadFromGo(c, sp); err != nil {
|
|
||||||
return err
|
//if err := newLoadFromGo(c, sp); err != nil {
|
||||||
}
|
// return err
|
||||||
|
//}
|
||||||
default:
|
default:
|
||||||
utils.Logger.Fatal("Unsupported")
|
utils.Logger.Fatal("Unsupported skeleton schema ", "path", c.New.SkeletonPath)
|
||||||
|
|
||||||
}
|
}
|
||||||
// TODO check to see if the path needs to be extracted
|
// TODO check to see if the path needs to be extracted
|
||||||
@@ -259,30 +260,6 @@ func newLoadFromGit(c *model.CommandConfig, sp *url.URL) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load from GO
|
|
||||||
func newLoadFromGo(c *model.CommandConfig, sp *url.URL) (err error) {
|
|
||||||
// Find the source paths, download packages automatically
|
|
||||||
pathpart := strings.Split(sp.Path, ":")
|
|
||||||
_, skeletonImportPath , err := utils.FindSrcPaths(c.ImportPath,sp.Host+pathpart[0],c.PackageResolver)
|
|
||||||
if err!=nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
skeletonImportPath = filepath.Join(skeletonImportPath,sp.Host,pathpart[0])
|
|
||||||
// Add in anything after the "Root" path
|
|
||||||
if len(pathpart) > 1 {
|
|
||||||
pathpart[0] = skeletonImportPath
|
|
||||||
newdir, _ := filepath.Abs(filepath.Join(pathpart...))
|
|
||||||
if !strings.HasPrefix(newdir, skeletonImportPath) {
|
|
||||||
utils.Logger.Fatal("Unusual target path outside root path", "target", newdir, "root", skeletonImportPath)
|
|
||||||
}
|
|
||||||
skeletonImportPath = newdir
|
|
||||||
}
|
|
||||||
|
|
||||||
c.New.SkeletonPath = skeletonImportPath
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func copyNewAppFiles(c *model.CommandConfig) (err error) {
|
func copyNewAppFiles(c *model.CommandConfig) (err error) {
|
||||||
err = os.MkdirAll(c.AppPath, 0777)
|
err = os.MkdirAll(c.AppPath, 0777)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -36,19 +36,13 @@ func TestNew(t *testing.T) {
|
|||||||
t.Run("Skeleton-Git", func(t *testing.T) {
|
t.Run("Skeleton-Git", func(t *testing.T) {
|
||||||
a := assert.New(t)
|
a := assert.New(t)
|
||||||
c := newApp("new/test/c/1", model.NEW, nil, a)
|
c := newApp("new/test/c/1", model.NEW, nil, a)
|
||||||
c.New.SkeletonPath = "git://github.com/revel/cmd:skeleton2"
|
c.New.SkeletonPath = "git://github.com/revel/skeletons:basicnsadnsak"
|
||||||
a.NotNil(main.Commands[model.NEW].RunWith(c), "Expected Failed to run with new")
|
a.NotNil(main.Commands[model.NEW].RunWith(c), "Expected Failed to run with new")
|
||||||
// We need to pick a different path
|
// We need to pick a different path
|
||||||
c = newApp("new/test/c/2", model.NEW, nil, a)
|
c = newApp("new/test/c/2", model.NEW, nil, a)
|
||||||
c.New.SkeletonPath = "git://github.com/revel/cmd:skeleton"
|
c.New.SkeletonPath = "git://github.com/revel/skeletons:basic/bootstrap4"
|
||||||
a.Nil(main.Commands[model.NEW].RunWith(c), "Failed to run with new skeleton git")
|
a.Nil(main.Commands[model.NEW].RunWith(c), "Failed to run with new skeleton git")
|
||||||
})
|
})
|
||||||
t.Run("Skeleton-Go", func(t *testing.T) {
|
|
||||||
a := assert.New(t)
|
|
||||||
c := newApp("new/test/d", model.NEW, nil, a)
|
|
||||||
c.New.SkeletonPath = "github.com/revel/cmd:skeleton"
|
|
||||||
a.Nil(main.Commands[model.NEW].RunWith(c), "Failed to run with new from go")
|
|
||||||
})
|
|
||||||
if !t.Failed() {
|
if !t.Failed() {
|
||||||
if err := os.RemoveAll(gopath); err != nil {
|
if err := os.RemoveAll(gopath); err != nil {
|
||||||
a.Fail("Failed to remove test path")
|
a.Fail("Failed to remove test path")
|
||||||
|
|||||||
@@ -26,6 +26,9 @@ const (
|
|||||||
// RevelCmdImportPath Revel framework cmd tool import path
|
// RevelCmdImportPath Revel framework cmd tool import path
|
||||||
RevelCmdImportPath = "github.com/revel/cmd"
|
RevelCmdImportPath = "github.com/revel/cmd"
|
||||||
|
|
||||||
|
// RevelCmdImportPath Revel framework cmd tool import path
|
||||||
|
RevelSkeletonsImportPath = "github.com/revel/skeletons"
|
||||||
|
|
||||||
// DefaultRunMode for revel's application
|
// DefaultRunMode for revel's application
|
||||||
DefaultRunMode = "dev"
|
DefaultRunMode = "dev"
|
||||||
)
|
)
|
||||||
|
|||||||
3
skeleton/.gitignore
vendored
3
skeleton/.gitignore
vendored
@@ -1,3 +0,0 @@
|
|||||||
test-results/
|
|
||||||
tmp/
|
|
||||||
routes/
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
# Welcome to Revel
|
|
||||||
|
|
||||||
A high-productivity web framework for the [Go language](http://www.golang.org/).
|
|
||||||
|
|
||||||
|
|
||||||
### Start the web server:
|
|
||||||
|
|
||||||
revel run myapp
|
|
||||||
|
|
||||||
### Go to http://localhost:9000/ and you'll see:
|
|
||||||
|
|
||||||
"It works"
|
|
||||||
|
|
||||||
## Code Layout
|
|
||||||
|
|
||||||
The directory structure of a generated Revel application:
|
|
||||||
|
|
||||||
conf/ Configuration directory
|
|
||||||
app.conf Main app configuration file
|
|
||||||
routes Routes definition file
|
|
||||||
|
|
||||||
app/ App sources
|
|
||||||
init.go Interceptor registration
|
|
||||||
controllers/ App controllers go here
|
|
||||||
views/ Templates directory
|
|
||||||
|
|
||||||
messages/ Message files
|
|
||||||
|
|
||||||
public/ Public static assets
|
|
||||||
css/ CSS files
|
|
||||||
js/ Javascript files
|
|
||||||
images/ Image files
|
|
||||||
|
|
||||||
tests/ Test suites
|
|
||||||
|
|
||||||
|
|
||||||
## Help
|
|
||||||
|
|
||||||
* The [Getting Started with Revel](http://revel.github.io/tutorial/gettingstarted.html).
|
|
||||||
* The [Revel guides](http://revel.github.io/manual/index.html).
|
|
||||||
* The [Revel sample apps](http://revel.github.io/examples/index.html).
|
|
||||||
* The [API documentation](https://godoc.org/github.com/revel/revel).
|
|
||||||
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
package controllers
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/revel/revel"
|
|
||||||
)
|
|
||||||
|
|
||||||
type App struct {
|
|
||||||
*revel.Controller
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c App) Index() revel.Result {
|
|
||||||
return c.Render()
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
package app
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/revel/revel"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
// AppVersion revel app version (ldflags)
|
|
||||||
AppVersion string
|
|
||||||
|
|
||||||
// BuildTime revel app build-time (ldflags)
|
|
||||||
BuildTime string
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
// Filters is the default set of global filters.
|
|
||||||
revel.Filters = []revel.Filter{
|
|
||||||
revel.PanicFilter, // Recover from panics and display an error page instead.
|
|
||||||
revel.RouterFilter, // Use the routing table to select the right Action
|
|
||||||
revel.FilterConfiguringFilter, // A hook for adding or removing per-Action filters.
|
|
||||||
revel.ParamsFilter, // Parse parameters into Controller.Params.
|
|
||||||
revel.SessionFilter, // Restore and write the session cookie.
|
|
||||||
revel.FlashFilter, // Restore and write the flash cookie.
|
|
||||||
revel.ValidationFilter, // Restore kept validation errors and save new ones from cookie.
|
|
||||||
revel.I18nFilter, // Resolve the requested language
|
|
||||||
HeaderFilter, // Add some security based headers
|
|
||||||
revel.InterceptorFilter, // Run interceptors around the action.
|
|
||||||
revel.CompressFilter, // Compress the result.
|
|
||||||
revel.BeforeAfterFilter, // Call the before and after filter functions
|
|
||||||
revel.ActionInvoker, // Invoke the action.
|
|
||||||
}
|
|
||||||
|
|
||||||
// Register startup functions with OnAppStart
|
|
||||||
// revel.DevMode and revel.RunMode only work inside of OnAppStart. See Example Startup Script
|
|
||||||
// ( order dependent )
|
|
||||||
// revel.OnAppStart(ExampleStartupScript)
|
|
||||||
// revel.OnAppStart(InitDB)
|
|
||||||
// revel.OnAppStart(FillCache)
|
|
||||||
}
|
|
||||||
|
|
||||||
// HeaderFilter adds common security headers
|
|
||||||
// There is a full implementation of a CSRF filter in
|
|
||||||
// https://github.com/revel/modules/tree/master/csrf
|
|
||||||
var HeaderFilter = func(c *revel.Controller, fc []revel.Filter) {
|
|
||||||
c.Response.Out.Header().Add("X-Frame-Options", "SAMEORIGIN")
|
|
||||||
c.Response.Out.Header().Add("X-XSS-Protection", "1; mode=block")
|
|
||||||
c.Response.Out.Header().Add("X-Content-Type-Options", "nosniff")
|
|
||||||
c.Response.Out.Header().Add("Referrer-Policy", "strict-origin-when-cross-origin")
|
|
||||||
|
|
||||||
fc[0](c, fc[1:]) // Execute the next filter stage.
|
|
||||||
}
|
|
||||||
|
|
||||||
//func ExampleStartupScript() {
|
|
||||||
// // revel.DevMod and revel.RunMode work here
|
|
||||||
// // Use this script to check for dev mode and set dev/prod startup scripts here!
|
|
||||||
// if revel.DevMode == true {
|
|
||||||
// // Dev mode
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
{{set . "title" "Home"}}
|
|
||||||
{{template "header.html" .}}
|
|
||||||
|
|
||||||
<header class="jumbotron" style="background-color:#A9F16C">
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<h1>It works!</h1>
|
|
||||||
<p></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<div class="container">
|
|
||||||
<div class="row">
|
|
||||||
<div class="span6">
|
|
||||||
{{template "flash.html" .}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{template "footer.html" .}}
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
<style type="text/css">
|
|
||||||
#sidebar {
|
|
||||||
position: absolute;
|
|
||||||
right: 0px;
|
|
||||||
top:69px;
|
|
||||||
max-width: 75%;
|
|
||||||
z-index: 1000;
|
|
||||||
background-color: #fee;
|
|
||||||
border: thin solid grey;
|
|
||||||
padding: 10px;
|
|
||||||
}
|
|
||||||
#toggleSidebar {
|
|
||||||
position: absolute;
|
|
||||||
right: 0px;
|
|
||||||
top: 50px;
|
|
||||||
background-color: #fee;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
<div id="sidebar" style="display:none;">
|
|
||||||
<h4>Available pipelines</h4>
|
|
||||||
<dl>
|
|
||||||
{{ range $index, $value := .}}
|
|
||||||
<dt>{{$index}}</dt>
|
|
||||||
<dd>{{$value}}</dd>
|
|
||||||
{{end}}
|
|
||||||
</dl>
|
|
||||||
<h4>Flash</h4>
|
|
||||||
<dl>
|
|
||||||
{{ range $index, $value := .flash}}
|
|
||||||
<dt>{{$index}}</dt>
|
|
||||||
<dd>{{$value}}</dd>
|
|
||||||
{{end}}
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
<h4>Errors</h4>
|
|
||||||
<dl>
|
|
||||||
{{ range $index, $value := .errors}}
|
|
||||||
<dt>{{$index}}</dt>
|
|
||||||
<dd>{{$value}}</dd>
|
|
||||||
{{end}}
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
<a id="toggleSidebar" href="#" class="toggles"><i class="glyphicon glyphicon-chevron-left"></i></a>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
$sidebar = 0;
|
|
||||||
$('#toggleSidebar').click(function() {
|
|
||||||
if ($sidebar === 1) {
|
|
||||||
$('#sidebar').hide();
|
|
||||||
$('#toggleSidebar i').addClass('glyphicon-chevron-left');
|
|
||||||
$('#toggleSidebar i').removeClass('glyphicon-chevron-right');
|
|
||||||
$sidebar = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$('#sidebar').show();
|
|
||||||
$('#toggleSidebar i').addClass('glyphicon-chevron-right');
|
|
||||||
$('#toggleSidebar i').removeClass('glyphicon-chevron-left');
|
|
||||||
$sidebar = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<title>Not found</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
{{if eq .RunMode "dev"}}
|
|
||||||
{{template "errors/404-dev.html" .}}
|
|
||||||
{{else}}
|
|
||||||
{{with .Error}}
|
|
||||||
<h1>
|
|
||||||
{{.Title}}
|
|
||||||
</h1>
|
|
||||||
<p>
|
|
||||||
{{.Description}}
|
|
||||||
</p>
|
|
||||||
{{end}}
|
|
||||||
{{end}}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Application error</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
{{if eq .RunMode "dev"}}
|
|
||||||
{{template "errors/500-dev.html" .}}
|
|
||||||
{{else}}
|
|
||||||
<h1>Oops, an error occured</h1>
|
|
||||||
<p>
|
|
||||||
This exception has been logged.
|
|
||||||
</p>
|
|
||||||
{{end}}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
{{if .flash.success}}
|
|
||||||
<div class="alert alert-success">
|
|
||||||
{{.flash.success}}
|
|
||||||
</div>
|
|
||||||
{{end}}
|
|
||||||
|
|
||||||
{{if or .errors .flash.error}}
|
|
||||||
<div class="alert alert-danger">
|
|
||||||
{{if .flash.error}}
|
|
||||||
{{.flash.error}}
|
|
||||||
{{end}}
|
|
||||||
<ul style="margin-top:10px;">
|
|
||||||
{{range .errors}}
|
|
||||||
<li>{{.}}</li>
|
|
||||||
{{end}}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
{{end}}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{{if .DevMode}}
|
|
||||||
{{template "debug.html" .}}
|
|
||||||
{{end}}
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>{{.title}}</title>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
<link rel="stylesheet" type="text/css" href="/public/css/bootstrap-3.3.6.min.css">
|
|
||||||
<link rel="shortcut icon" type="image/png" href="/public/img/favicon.png">
|
|
||||||
<script src="/public/js/jquery-2.2.4.min.js"></script>
|
|
||||||
<script src="/public/js/bootstrap-3.3.6.min.js"></script>
|
|
||||||
{{range .moreStyles}}
|
|
||||||
<link rel="stylesheet" type="text/css" href="/public/{{.}}">
|
|
||||||
{{end}}
|
|
||||||
{{range .moreScripts}}
|
|
||||||
<script src="/public/{{.}}" type="text/javascript" charset="utf-8"></script>
|
|
||||||
{{end}}
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
@@ -1,223 +0,0 @@
|
|||||||
################################################################################
|
|
||||||
# Revel configuration file
|
|
||||||
# More info at http://revel.github.io/manual/appconf.html
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Revel build section
|
|
||||||
# This section contains values that are not reloadable
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Comma delimited list of folders that are included with the package, or build commands
|
|
||||||
# If you want to not include folders within these ones prefix the folder with a . to make it hidden
|
|
||||||
package.folders = conf, public, app/views
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Revel reconfigurable section
|
|
||||||
#
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
|
|
||||||
# Sets `revel.AppName` for use in-app.
|
|
||||||
# Example:
|
|
||||||
# `if revel.AppName {...}`
|
|
||||||
app.name = {{ .AppName }}
|
|
||||||
|
|
||||||
# A secret string which is passed to cryptographically sign the cookie to prevent
|
|
||||||
# (and detect) user modification.
|
|
||||||
# Keep this string secret or users will be able to inject arbitrary cookie values
|
|
||||||
# into your application
|
|
||||||
app.secret = {{ .Secret }}
|
|
||||||
|
|
||||||
# Revel running behind proxy like nginx, haproxy, etc.
|
|
||||||
app.behind.proxy = false
|
|
||||||
|
|
||||||
|
|
||||||
# The IP address on which to listen.
|
|
||||||
http.addr =
|
|
||||||
|
|
||||||
# The port on which to listen.
|
|
||||||
http.port = 9000
|
|
||||||
|
|
||||||
# Whether to use SSL or not.
|
|
||||||
http.ssl = false
|
|
||||||
|
|
||||||
# Path to an X509 certificate file, if using SSL.
|
|
||||||
#http.sslcert =
|
|
||||||
|
|
||||||
# Path to an X509 certificate key, if using SSL.
|
|
||||||
#http.sslkey =
|
|
||||||
|
|
||||||
|
|
||||||
# Timeout specifies a time limit for request (in seconds) made by a single client.
|
|
||||||
# A Timeout of zero means no timeout.
|
|
||||||
http.timeout.read = 90
|
|
||||||
http.timeout.write = 60
|
|
||||||
|
|
||||||
|
|
||||||
# For any cookies set by Revel (Session,Flash,Error) these properties will set
|
|
||||||
# the fields of:
|
|
||||||
# http://golang.org/pkg/net/http/#Cookie
|
|
||||||
#
|
|
||||||
# Each cookie set by Revel is prefixed with this string.
|
|
||||||
cookie.prefix = REVEL
|
|
||||||
|
|
||||||
# A secure cookie has the secure attribute enabled and is only used via HTTPS,
|
|
||||||
# ensuring that the cookie is always encrypted when transmitting from client to
|
|
||||||
# server. This makes the cookie less likely to be exposed to cookie theft via
|
|
||||||
# eavesdropping.
|
|
||||||
#
|
|
||||||
# Defaults to false. If 'http.ssl' is enabled, this will be defaulted to true.
|
|
||||||
# This should only be true when Revel is handling SSL connections. If you are
|
|
||||||
# using a proxy in front of revel (Nginx, Apache, etc), then this should be left
|
|
||||||
# as false.
|
|
||||||
# cookie.secure = false
|
|
||||||
|
|
||||||
# Limit cookie access to a given domain.
|
|
||||||
#cookie.domain =
|
|
||||||
|
|
||||||
# Define when your session cookie expires.
|
|
||||||
# Values:
|
|
||||||
# "720h"
|
|
||||||
# A time duration (http://golang.org/pkg/time/#ParseDuration) after which
|
|
||||||
# the cookie expires and the session is invalid.
|
|
||||||
# "session"
|
|
||||||
# Sets a session cookie which invalidates the session when the user close
|
|
||||||
# the browser.
|
|
||||||
session.expires = 720h
|
|
||||||
|
|
||||||
|
|
||||||
# The date format used by Revel. Possible formats defined by the Go `time`
|
|
||||||
# package (http://golang.org/pkg/time/#Parse)
|
|
||||||
format.date = 2006-01-02
|
|
||||||
format.datetime = 2006-01-02 15:04
|
|
||||||
|
|
||||||
|
|
||||||
# Determines whether the template rendering should use chunked encoding.
|
|
||||||
# Chunked encoding can decrease the time to first byte on the client side by
|
|
||||||
# sending data before the entire template has been fully rendered.
|
|
||||||
results.chunked = false
|
|
||||||
|
|
||||||
|
|
||||||
# The default language of this application.
|
|
||||||
i18n.default_language = en
|
|
||||||
|
|
||||||
# The default format when message is missing.
|
|
||||||
# The original message shows in %s
|
|
||||||
#i18n.unknown_format = "??? %s ???"
|
|
||||||
|
|
||||||
|
|
||||||
# Module to serve static content such as CSS, JavaScript and Media files
|
|
||||||
# Allows Routes like this:
|
|
||||||
# `Static.ServeModule("modulename","public")`
|
|
||||||
module.static = github.com/revel/modules/static
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
# Section: dev
|
|
||||||
# This section is evaluated when running Revel in dev mode. Like so:
|
|
||||||
# `revel run path/to/myapp`
|
|
||||||
[dev]
|
|
||||||
|
|
||||||
# This sets `revel.DevMode` for use in-app.
|
|
||||||
# Example:
|
|
||||||
# `if revel.DevMode {...}`
|
|
||||||
# or in your templates with
|
|
||||||
# `{{.DevMode}}`
|
|
||||||
# Values:
|
|
||||||
# "true"
|
|
||||||
# Sets `DevMode` to `true`.
|
|
||||||
# "false"
|
|
||||||
# Sets `DevMode` to `false`.
|
|
||||||
mode.dev = true
|
|
||||||
|
|
||||||
|
|
||||||
# Pretty print JSON/XML when calling RenderJSON/RenderXML
|
|
||||||
# Values:
|
|
||||||
# "true"
|
|
||||||
# Enables pretty printing.
|
|
||||||
# "false"
|
|
||||||
# Disables pretty printing.
|
|
||||||
results.pretty = true
|
|
||||||
|
|
||||||
|
|
||||||
# Watch your applicaton files for changes and automatically rebuild
|
|
||||||
# Values:
|
|
||||||
# "true"
|
|
||||||
# Enables auto rebuilding.
|
|
||||||
# "false"
|
|
||||||
# Disables auto rebuilding.
|
|
||||||
watch = true
|
|
||||||
|
|
||||||
|
|
||||||
# Define when to rebuild new changes.
|
|
||||||
# Values:
|
|
||||||
# "normal"
|
|
||||||
# Rebuild when a new request is received and changes have been detected.
|
|
||||||
# "eager"
|
|
||||||
# Rebuild as soon as changes are detected.
|
|
||||||
watch.mode = eager
|
|
||||||
|
|
||||||
# Watch the entire `$GOPATH` for changes.
|
|
||||||
# Values:
|
|
||||||
# "true"
|
|
||||||
# Includes `$GOPATH` in watch path.
|
|
||||||
# "false"
|
|
||||||
# Excludes `$GOPATH` from watch path. Default value.
|
|
||||||
#watch.gopath = true
|
|
||||||
|
|
||||||
|
|
||||||
# Module to run code tests in the browser
|
|
||||||
# See:
|
|
||||||
# http://revel.github.io/manual/testing.html
|
|
||||||
module.testrunner = github.com/revel/modules/testrunner
|
|
||||||
|
|
||||||
|
|
||||||
# Where to log the various Revel logs
|
|
||||||
# Values:
|
|
||||||
# "off"
|
|
||||||
# Disable log output.
|
|
||||||
# "stdout"
|
|
||||||
# Log to OS's standard output.
|
|
||||||
# "stderr"
|
|
||||||
# Log to Os's standard error output. Default value.
|
|
||||||
# "relative/path/to/log"
|
|
||||||
# Log to file.
|
|
||||||
log.all.filter.module.app = stdout # Log all loggers for the application to the stdout
|
|
||||||
log.error.nfilter.module.app = stderr # Everything else that logs an error to stderr
|
|
||||||
log.crit.output = stderr # Everything that logs something as critical goes to this
|
|
||||||
|
|
||||||
# Revel request access log
|
|
||||||
# Access log line format:
|
|
||||||
# INFO 21:53:55 static server-engine.go:169: Request Stats ip=127.0.0.1 path=/public/vendors/datatables.net-buttons/js/buttons.html5.min.js method=GET start=2017/08/31 21:53:55 status=200 duration_seconds=0.0002583 section=requestlog
|
|
||||||
log.request.output = stdout
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Section: prod
|
|
||||||
# This section is evaluated when running Revel in production mode. Like so:
|
|
||||||
# `revel run path/to/myapp prod`
|
|
||||||
# See:
|
|
||||||
# [dev] section for documentation of the various settings
|
|
||||||
[prod]
|
|
||||||
|
|
||||||
mode.dev = false
|
|
||||||
|
|
||||||
results.pretty = false
|
|
||||||
|
|
||||||
watch = false
|
|
||||||
|
|
||||||
module.testrunner =
|
|
||||||
|
|
||||||
log.warn.output = log/%(app.name)s-warn.json # Log all warn messages to file
|
|
||||||
log.error.output = log/%(app.name)s-error.json # Log all errors to file
|
|
||||||
log.crit.output = log/%(app.name)s-critical.json # Log all critical to file
|
|
||||||
|
|
||||||
# Revel request access log (json format)
|
|
||||||
# Example:
|
|
||||||
# log.request.output = %(app.name)s-request.json
|
|
||||||
log.request.output = log/%(app.name)s-requests.json
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
# Routes Config
|
|
||||||
#
|
|
||||||
# This file defines all application routes (Higher priority routes first)
|
|
||||||
#
|
|
||||||
|
|
||||||
module:testrunner
|
|
||||||
# module:jobs
|
|
||||||
|
|
||||||
|
|
||||||
GET / App.Index
|
|
||||||
|
|
||||||
# Ignore favicon requests
|
|
||||||
GET /favicon.ico 404
|
|
||||||
|
|
||||||
# Map static resources from the /app/public folder to the /public path
|
|
||||||
GET /public/*filepath Static.Serve("public")
|
|
||||||
|
|
||||||
# Catch all, this will route any request into the controller path
|
|
||||||
#
|
|
||||||
# **** WARNING ****
|
|
||||||
# Enabling this exposes any controller and function to the web.
|
|
||||||
# ** This is a serious security issue if used online **
|
|
||||||
#
|
|
||||||
# For rapid development uncomment the following to add new controller.action endpoints
|
|
||||||
# without having to add them to the routes table.
|
|
||||||
# * /:controller/:action :controller.:action
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# Sample messages file for the English language (en)
|
|
||||||
# Message file extensions should be ISO 639-1 codes (http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)
|
|
||||||
# Sections within each message file can optionally override the defaults using ISO 3166-1 alpha-2 codes (http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)
|
|
||||||
# See also:
|
|
||||||
# - http://www.rfc-editor.org/rfc/bcp/bcp47.txt
|
|
||||||
# - http://www.w3.org/International/questions/qa-accept-lang-locales
|
|
||||||
[DEFAULT]
|
|
||||||
|
|
||||||
5
skeleton/public/css/bootstrap-3.3.6.min.css
vendored
5
skeleton/public/css/bootstrap-3.3.6.min.css
vendored
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 5.5 KiB |
7
skeleton/public/js/bootstrap-3.3.6.min.js
vendored
7
skeleton/public/js/bootstrap-3.3.6.min.js
vendored
File diff suppressed because one or more lines are too long
4
skeleton/public/js/jquery-2.2.4.min.js
vendored
4
skeleton/public/js/jquery-2.2.4.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -1,23 +0,0 @@
|
|||||||
package tests
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/revel/revel/testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
type AppTest struct {
|
|
||||||
testing.TestSuite
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *AppTest) Before() {
|
|
||||||
println("Set up")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *AppTest) TestThatIndexPageWorks() {
|
|
||||||
t.Get("/")
|
|
||||||
t.AssertOk()
|
|
||||||
t.AssertContentType("text/html; charset=utf-8")
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *AppTest) After() {
|
|
||||||
println("Tear down")
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user