Page MenuHomeMusing Studio

No OneTemporary

diff --git a/cmd/wf/.gitignore b/cmd/wf/.gitignore
new file mode 100644
index 0000000..89b7a51
--- /dev/null
+++ b/cmd/wf/.gitignore
@@ -0,0 +1 @@
+wf
\ No newline at end of file
diff --git a/cmd/wf/config_nix.go b/cmd/wf/config_nix.go
new file mode 100644
index 0000000..4abd334
--- /dev/null
+++ b/cmd/wf/config_nix.go
@@ -0,0 +1,7 @@
+// +build !windows
+
+package main
+
+var appInfo = map[string]string{
+ "configDir": ".writefreely",
+}
diff --git a/cmd/wf/config_win.go b/cmd/wf/config_win.go
new file mode 100644
index 0000000..e44b45b
--- /dev/null
+++ b/cmd/wf/config_win.go
@@ -0,0 +1,7 @@
+// +build windows
+
+package main
+
+var appInfo = map[string]string{
+ "configDir": "WriteFreely",
+}
diff --git a/cmd/wf/flags.go b/cmd/wf/flags.go
new file mode 100644
index 0000000..03ed17c
--- /dev/null
+++ b/cmd/wf/flags.go
@@ -0,0 +1,30 @@
+package main
+
+import (
+ "gopkg.in/urfave/cli.v1"
+)
+
+var globalFlags = []cli.Flag{
+ cli.BoolFlag{
+ Name: "tor, t",
+ Usage: "Perform action on Tor hidden service",
+ },
+ cli.IntFlag{
+ Name: "tor-port",
+ Usage: "Use a different port to connect to Tor",
+ Value: 9150,
+ },
+ cli.BoolFlag{
+ Name: "verbose, v",
+ Usage: "Make the operation more talkative",
+ },
+ cli.StringFlag{
+ Name: "user-agent",
+ Usage: "Sets the User-Agent for API requests",
+ Value: "",
+ },
+ cli.StringFlag{
+ Name: "host, H",
+ Usage: "Operate against a custom hostname",
+ },
+}
diff --git a/cmd/wf/main.go b/cmd/wf/main.go
new file mode 100644
index 0000000..8b78771
--- /dev/null
+++ b/cmd/wf/main.go
@@ -0,0 +1,266 @@
+package main
+
+import (
+ "os"
+
+ "github.com/writeas/writeas-cli/api"
+ "github.com/writeas/writeas-cli/commands"
+ "github.com/writeas/writeas-cli/config"
+ "github.com/writeas/writeas-cli/log"
+ cli "gopkg.in/urfave/cli.v1"
+)
+
+func main() {
+ initialize(appInfo["configDir"])
+ cli.VersionFlag = cli.BoolFlag{
+ Name: "version, V",
+ Usage: "print the version",
+ }
+
+ // Run the app
+ app := cli.NewApp()
+ app.Name = "wf"
+ app.Version = config.Version
+ app.Usage = "Publish text quickly"
+ // TODO: who is the author? the contributors? link to GH?
+ app.Authors = []cli.Author{
+ {
+ Name: "Write.as",
+ Email: "hello@write.as",
+ },
+ }
+ app.ExtraInfo = func() map[string]string {
+ return appInfo
+ }
+ app.Action = commands.CmdPost
+ app.Flags = globalFlags
+ app.Commands = []cli.Command{
+ {
+ Name: "post",
+ Usage: "Alias for default action: create post from stdin",
+ Action: commands.CmdPost,
+ Flags: config.PostFlags,
+ Description: `Create a new post on Write.as from stdin.
+
+ Use the --code flag to indicate that the post should use syntax
+ highlighting. Or use the --font [value] argument to set the post's
+ appearance, where [value] is mono, monospace (default), wrap (monospace
+ font with word wrapping), serif, or sans.`,
+ },
+ {
+ Name: "new",
+ Usage: "Compose a new post from the command-line and publish",
+ Description: `An alternative to piping data to the program.
+
+ On Windows, this will use 'copy con' to start reading what you input from the
+ prompt. Press F6 or Ctrl-Z then Enter to end input.
+ On *nix, this will use the best available text editor, starting with the
+ value set to the WRITEAS_EDITOR or EDITOR environment variable, or vim, or
+ finally nano.
+
+ Use the --code flag to indicate that the post should use syntax
+ highlighting. Or use the --font [value] argument to set the post's
+ appearance, where [value] is mono, monospace (default), wrap (monospace
+ font with word wrapping), serif, or sans.
+
+ If posting fails for any reason, 'writeas' will show you the temporary file
+ location and how to pipe it to 'writeas' to retry.`,
+ Action: commands.CmdNew,
+ Flags: config.PostFlags,
+ },
+ {
+ Name: "publish",
+ Usage: "Publish a file to Write.as",
+ Action: commands.CmdPublish,
+ Flags: config.PostFlags,
+ },
+ {
+ Name: "delete",
+ Usage: "Delete a post",
+ Action: commands.CmdDelete,
+ Flags: []cli.Flag{
+ cli.BoolFlag{
+ Name: "tor, t",
+ Usage: "Delete via Tor hidden service",
+ },
+ cli.IntFlag{
+ Name: "tor-port",
+ Usage: "Use a different port to connect to Tor",
+ Value: 9150,
+ },
+ cli.BoolFlag{
+ Name: "verbose, v",
+ Usage: "Make the operation more talkative",
+ },
+ },
+ },
+ {
+ Name: "update",
+ Usage: "Update (overwrite) a post",
+ Action: commands.CmdUpdate,
+ Flags: []cli.Flag{
+ cli.BoolFlag{
+ Name: "tor, t",
+ Usage: "Update via Tor hidden service",
+ },
+ cli.IntFlag{
+ Name: "tor-port",
+ Usage: "Use a different port to connect to Tor",
+ Value: 9150,
+ },
+ cli.BoolFlag{
+ Name: "code",
+ Usage: "Specifies this post is code",
+ },
+ cli.StringFlag{
+ Name: "font",
+ Usage: "Sets post font to given value",
+ },
+ cli.BoolFlag{
+ Name: "verbose, v",
+ Usage: "Make the operation more talkative",
+ },
+ },
+ },
+ {
+ Name: "get",
+ Usage: "Read a raw post",
+ Action: commands.CmdGet,
+ Flags: []cli.Flag{
+ cli.BoolFlag{
+ Name: "tor, t",
+ Usage: "Get from Tor hidden service",
+ },
+ cli.IntFlag{
+ Name: "tor-port",
+ Usage: "Use a different port to connect to Tor",
+ Value: 9150,
+ },
+ cli.BoolFlag{
+ Name: "verbose, v",
+ Usage: "Make the operation more talkative",
+ },
+ },
+ },
+ {
+ Name: "add",
+ Usage: "Add an existing post locally",
+ Description: `A way to add an existing post to your local store for easy editing later.
+
+ This requires a post ID (from https://write.as/[ID]) and an Edit Token
+ (exported from another Write.as client, such as the Android app).
+`,
+ Action: commands.CmdAdd,
+ },
+ {
+ Name: "posts",
+ Usage: "List all of your posts",
+ Description: "This will list only local posts when not currently authenticated. To list remote posts as well, first run: writeas auth <username>.",
+ Action: commands.CmdListPosts,
+ Flags: []cli.Flag{
+ cli.BoolFlag{
+ Name: "id",
+ Usage: "Show list with post IDs (default)",
+ },
+ cli.BoolFlag{
+ Name: "md",
+ Usage: "Use with --url to return URLs with Markdown enabled",
+ },
+ cli.BoolFlag{
+ Name: "url",
+ Usage: "Show list with URLs",
+ },
+ },
+ },
+ {
+ Name: "fetch",
+ Usage: "Fetch authenticated user's Write.as posts",
+ Action: api.CmdPull,
+ Flags: []cli.Flag{
+ cli.BoolFlag{
+ Name: "tor, t",
+ Usage: "Authenticate via Tor hidden service",
+ },
+ cli.IntFlag{
+ Name: "tor-port",
+ Usage: "Use a different port to connect to Tor",
+ Value: 9150,
+ },
+ cli.BoolFlag{
+ Name: "verbose, v",
+ Usage: "Make the operation more talkative",
+ },
+ },
+ },
+ {
+ Name: "auth",
+ Usage: "Authenticate with Write.as",
+ Action: commands.CmdAuth,
+ Flags: []cli.Flag{
+ cli.BoolFlag{
+ Name: "tor, t",
+ Usage: "Authenticate via Tor hidden service",
+ },
+ cli.IntFlag{
+ Name: "tor-port",
+ Usage: "Use a different port to connect to Tor",
+ Value: 9150,
+ },
+ cli.BoolFlag{
+ Name: "verbose, v",
+ Usage: "Make the operation more talkative",
+ },
+ },
+ },
+ {
+ Name: "logout",
+ Usage: "Log out of Write.as",
+ Action: commands.CmdLogOut,
+ Flags: []cli.Flag{
+ cli.BoolFlag{
+ Name: "tor, t",
+ Usage: "Authenticate via Tor hidden service",
+ },
+ cli.IntFlag{
+ Name: "tor-port",
+ Usage: "Use a different port to connect to Tor",
+ Value: 9150,
+ },
+ cli.BoolFlag{
+ Name: "verbose, v",
+ Usage: "Make the operation more talkative",
+ },
+ },
+ },
+ }
+
+ cli.CommandHelpTemplate = `NAME:
+ {{.Name}} - {{.Usage}}
+
+USAGE:
+ writeas {{.Name}}{{if .Flags}} [command options]{{end}} [arguments...]{{if .Description}}
+
+DESCRIPTION:
+ {{.Description}}{{end}}{{if .Flags}}
+
+OPTIONS:
+ {{range .Flags}}{{.}}
+ {{end}}{{ end }}
+`
+ app.Run(os.Args)
+}
+
+func initialize(dataDirName string) {
+ // Ensure we have a data directory to use
+ if !config.DataDirExists(dataDirName) {
+ err := config.CreateDataDir(dataDirName)
+ if err != nil {
+ if config.Debug() {
+ panic(err)
+ } else {
+ log.Errorln("Error creating data directory: %s", err)
+ return
+ }
+ }
+ }
+}

File Metadata

Mime Type
text/x-diff
Expires
Thu, May 15, 1:53 PM (1 d, 30 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3239764

Event Timeline