Archetypes working :)
parent
049bc2fe0f
commit
53c7ea422d
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"js": {
|
||||||
|
"allowed_file_extensions": ["js", "json", "jshintrc", "jsbeautifyrc"],
|
||||||
|
|
||||||
|
// Set brace_style
|
||||||
|
// collapse: (old default) Put braces on the same line as control statements
|
||||||
|
// collapse-preserve-inline: (new default) Same as collapse but better support for ES6 destructuring and other features. https://github.com/victorporof/Sublime-HTMLPrettify/issues/231
|
||||||
|
// expand: Put braces on own line (Allman / ANSI style)
|
||||||
|
// end-expand: Put end braces on own line
|
||||||
|
// none: Keep them where they are
|
||||||
|
"brace_style": "collapse-preserve-inline",
|
||||||
|
|
||||||
|
"break_chained_methods": false, // Break chained method calls across subsequent lines
|
||||||
|
"e4x": false, // Pass E4X xml literals through untouched
|
||||||
|
"end_with_newline": false, // End output with newline
|
||||||
|
"indent_char": " ", // Indentation character
|
||||||
|
"indent_level": 0, // Initial indentation level
|
||||||
|
"indent_size": 4, // Indentation size
|
||||||
|
"indent_with_tabs": false, // Indent with tabs, overrides `indent_size` and `indent_char`
|
||||||
|
"jslint_happy": false, // If true, then jslint-stricter mode is enforced
|
||||||
|
"keep_array_indentation": false, // Preserve array indentation
|
||||||
|
"keep_function_indentation": false, // Preserve function indentation
|
||||||
|
"max_preserve_newlines": 0, // Maximum number of line breaks to be preserved in one chunk (0 disables)
|
||||||
|
"preserve_newlines": true, // Whether existing line breaks should be preserved
|
||||||
|
"space_after_anon_function": false, // Should the space before an anonymous function's parens be added, "function()" vs "function ()"
|
||||||
|
"space_before_conditional": true, // Should the space before conditional statement be added, "if(true)" vs "if (true)"
|
||||||
|
"space_in_empty_paren": false, // Add padding spaces within empty paren, "f()" vs "f( )"
|
||||||
|
"space_in_paren": false, // Add padding spaces within paren, ie. f( a, b )
|
||||||
|
"unescape_strings": false, // Should printable characters in strings encoded in \xNN notation be unescaped, "example" vs "\x65\x78\x61\x6d\x70\x6c\x65"
|
||||||
|
"wrap_line_length": 0 // Lines should wrap at next opportunity after this number of characters (0 disables)
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,9 +8,47 @@ document.addEventListener('DOMContentLoaded', event => {
|
||||||
</a>`);
|
</a>`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
document.addEventListener('listing', event => {
|
document.addEventListener('listing', event => {
|
||||||
|
if (window.location.pathname.includes('/content/')) {
|
||||||
document.getElementById('newdir').placeholder = "file[:archetype]...";
|
document.getElementById('newdir').placeholder = "file[:archetype]...";
|
||||||
|
document.getElementById('newdir').removeEventListener('keydown', newDirEvent);
|
||||||
|
document.getElementById('newdir').addEventListener('keydown', event => {
|
||||||
|
|
||||||
|
if (event.keyCode == 27) {
|
||||||
|
document.getElementById('newdir').classList.toggle('enabled');
|
||||||
|
setTimeout(() => {
|
||||||
|
document.getElementById('newdir').value = '';
|
||||||
|
}, 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event.keyCode == 13) {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
let value = document.getElementById('newdir').value;
|
||||||
|
let index = value.lastIndexOf(':');
|
||||||
|
let name = value.substring(0, index);
|
||||||
|
let archetype = value.substring(index + 1, value.length);
|
||||||
|
if (name == "") name = archetype;
|
||||||
|
if (index == -1) archetype = "";
|
||||||
|
|
||||||
|
let button = document.getElementById('new');
|
||||||
|
let html = button.changeToLoading();
|
||||||
|
let request = new XMLHttpRequest();
|
||||||
|
request.open("POST", window.location);
|
||||||
|
request.setRequestHeader('Filename', name);
|
||||||
|
request.setRequestHeader('Archetype', archetype);
|
||||||
|
request.send();
|
||||||
|
request.onreadystatechange = function() {
|
||||||
|
if (request.readyState == 4) {
|
||||||
|
button.changeToDone((request.status != 200), html);
|
||||||
|
if (request.status == 200) {
|
||||||
|
window.location = window.location.pathname + name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
document.addEventListener('editor', event => {
|
document.addEventListener('editor', event => {
|
||||||
|
|
19
hugo.go
19
hugo.go
|
@ -67,8 +67,23 @@ func (h Hugo) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if r.Method == http.MethodPost && r.Header.Get("archetype") != "" {
|
if r.Method == http.MethodPost && r.Header.Get("archetype") != "" {
|
||||||
// TODO: this
|
filename := r.Header.Get("Filename")
|
||||||
return 0, nil
|
archetype := r.Header.Get("archetype")
|
||||||
|
|
||||||
|
if !strings.HasSuffix(filename, ".md") && !strings.HasSuffix(filename, ".markdown") {
|
||||||
|
return h.FileManager.ServeHTTP(w, r)
|
||||||
|
}
|
||||||
|
|
||||||
|
filename = strings.Replace(r.URL.Path, h.Config.BaseURL+"/content/", "", 1) + filename
|
||||||
|
filename = filepath.Clean(filename)
|
||||||
|
|
||||||
|
args := []string{"new", filename, "--kind", archetype}
|
||||||
|
|
||||||
|
if err := commands.Run(h.Config.Hugo, args, h.Config.Root); err != nil {
|
||||||
|
return http.StatusInternalServerError, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return http.StatusOK, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if directory.CanBeEdited(r.URL.Path) && r.Method == http.MethodPut {
|
if directory.CanBeEdited(r.URL.Path) && r.Method == http.MethodPut {
|
||||||
|
|
|
@ -9,7 +9,7 @@ import (
|
||||||
func Run(command string, args []string, path string) error {
|
func Run(command string, args []string, path string) error {
|
||||||
cmd := exec.Command(command, args...)
|
cmd := exec.Command(command, args...)
|
||||||
cmd.Dir = path
|
cmd.Dir = path
|
||||||
cmd.Stdout = os.Stderr
|
cmd.Stdout = os.Stdout
|
||||||
cmd.Stderr = os.Stderr
|
cmd.Stderr = os.Stderr
|
||||||
return cmd.Run()
|
return cmd.Run()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue