The smpl Command-line Utility

Simple ships with a command-line utility, smpl, that helps bootstrap applications as well as run then in development mode.

Synopsis

Global Options

Creating an application

Creates a new Simple application in the directory app_name. The Haskell module for the new application is the CamelCase derivation of app_name. For example, an app with the name test_app would be created with the module nameTestApp.

By default, only minimal functionality is included in generated apps. The following options add additional functionality:

  • --templates includes support for rendering templates taken from the “views” subdirectory.
  • --postgresql adds support for creating models that serialize to PostgreSQL, as well as convenience methods for accessing a global PostgreSQL connection.
  • --sessions adds the ability to interact with a cookie-based session map.
  • --all includes all of the above.

All of these options modify the [AppName].Common module by adding various instances for AppSettings type, as well as add dependencies on necessary packages in the app’s cabal file. The --templates flag also changes the default app handler to use render a placeholder view instead of a simple string.

Running an application

Running the above command from within an application directory invokeswai-handler-devel to run an application in development mode. In particular, it expects app function from the Application module to have the type signature (Application -> IO()) -> IO () and passes in a continuation to run the Application. The server will watch for changed files, and recompile and reload the application as necessary.

READ  Reverse LinkedList {Loop implementation}

By default, the server runs on port 3000, but this can be changed with -p PORTor --port=PORT. If your app function resides in a different module, use--module=MODULE to specify it.

The server sets the ENV environment variable to development. This can be used by the application that it is running in development mode. For example,simple-postgresql-orm uses this to start a PostgreSQL server in a subdirectory of the app as well as run all migrations when in development mode.

Leave a Reply

Your email address will not be published. Required fields are marked *