A clean, Markdown-based publishing platform made for writers. Write together, and build a community. https://writefreely.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

100 lines
2.6 KiB

  1. /*
  2. * Copyright © 2018-2019 A Bunch Tell LLC.
  3. *
  4. * This file is part of WriteFreely.
  5. *
  6. * WriteFreely is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU Affero General Public License, included
  8. * in the LICENSE file in this source code package.
  9. */
  10. package main
  11. import (
  12. "flag"
  13. "github.com/writeas/web-core/log"
  14. "github.com/writeas/writefreely"
  15. "os"
  16. )
  17. func main() {
  18. // General options usable with other commands
  19. debugPtr := flag.Bool("debug", false, "Enables debug logging.")
  20. configFile := flag.String("c", "config.ini", "The configuration file to use")
  21. // Setup actions
  22. createConfig := flag.Bool("create-config", false, "Creates a basic configuration and exits")
  23. doConfig := flag.Bool("config", false, "Run the configuration process")
  24. genKeys := flag.Bool("gen-keys", false, "Generate encryption and authentication keys")
  25. createSchema := flag.Bool("init-db", false, "Initialize app database")
  26. migrate := flag.Bool("migrate", false, "Migrate the database")
  27. // Admin actions
  28. createAdmin := flag.String("create-admin", "", "Create an admin with the given username:password")
  29. createUser := flag.String("create-user", "", "Create a regular user with the given username:password")
  30. resetPassUser := flag.String("reset-pass", "", "Reset the given user's password")
  31. outputVersion := flag.Bool("v", false, "Output the current version")
  32. flag.Parse()
  33. app := writefreely.NewApp(*configFile)
  34. if *outputVersion {
  35. writefreely.OutputVersion()
  36. os.Exit(0)
  37. } else if *createConfig {
  38. err := writefreely.CreateConfig(app)
  39. if err != nil {
  40. log.Error(err.Error())
  41. os.Exit(1)
  42. }
  43. os.Exit(0)
  44. } else if *doConfig {
  45. writefreely.DoConfig(app)
  46. os.Exit(0)
  47. } else if *genKeys {
  48. err := writefreely.GenerateKeys(app)
  49. if err != nil {
  50. log.Error(err.Error())
  51. os.Exit(1)
  52. }
  53. os.Exit(0)
  54. } else if *createSchema {
  55. err := writefreely.CreateSchema(app)
  56. if err != nil {
  57. log.Error(err.Error())
  58. os.Exit(1)
  59. }
  60. os.Exit(0)
  61. } else if *createAdmin != "" {
  62. err := writefreely.CreateUser(app, *createAdmin, true)
  63. if err != nil {
  64. log.Error(err.Error())
  65. os.Exit(1)
  66. }
  67. os.Exit(0)
  68. } else if *createUser != "" {
  69. err := writefreely.CreateUser(app, *createUser, false)
  70. if err != nil {
  71. log.Error(err.Error())
  72. os.Exit(1)
  73. }
  74. os.Exit(0)
  75. } else if *resetPassUser != "" {
  76. err := writefreely.ResetPassword(app, *resetPassUser)
  77. if err != nil {
  78. log.Error(err.Error())
  79. os.Exit(1)
  80. }
  81. os.Exit(0)
  82. } else if *migrate {
  83. err := writefreely.Migrate(app)
  84. if err != nil {
  85. log.Error(err.Error())
  86. os.Exit(1)
  87. }
  88. os.Exit(0)
  89. }
  90. writefreely.Serve(app, *debugPtr)
  91. }