Skip to content

Commit e12c241

Browse files
committed
Simplify template code
1 parent 7afa122 commit e12c241

11 files changed

+78
-64
lines changed

README.md

+7-13
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,19 @@
1-
# CLI template for Scala
1+
# Command line application template for Scala
22

3-
This is template app for making CLI application with Scala.
4-
You can make CLI application by editing [src/main/scala/App.scala](src/main/scala/App.scala)
5-
6-
This app uses [scopt](https://github.com/scopt/scopt) to parse command line parameters.
7-
You can parse any additional option parameters by editing [Parameter.scala](src/main/scala/Parameters.scala)
3+
Implement CLI application by editing [App.java](src/main/scala/Main.scala)
84

95
## How to get input parameters
10-
As default, Parameters has all commandline parameters as args: Array[String].
6+
You can get arguments as `args` in `main` method.
117

128
``` scala
13-
object App {
14-
def apply(params: Parameters) = {
15-
params.args.foreach(println)
16-
}
9+
def main(args: Array[String]): Unit = {
10+
// code to run
1711
}
1812
```
1913

2014
## How to output result
21-
You can use `println` method
15+
You can use `println` method to output your result into stdout.
2216

2317
``` scala
24-
println(params.args(0))
18+
println("Hellow world")
2519
```

README_ja.md

+8-15
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,20 @@
1-
# CLIアプリケーション作成用テンプレート(Scala)
1+
# コマンドラインアプリケーション(CLI アプリ)作成用テンプレート(Scala)
22

3-
ScalaでCLIアプリケーションを作成するためのテンプレートです。
4-
5-
[src/main/scala/App.scala](src/main/scala/App.scala)を編集することでCLIアプリケーションを作成することができます。
6-
7-
このテンプレートではコマンドラインオプションの解析ユーティリティとして、[scopt](https://github.com/scopt/scopt)を使用していsます。
8-
[Parametersクラス](src/main/scala/Parameters.scala)を修正することで任意のコマンドラインオプションを定義することも可能です。
3+
[Main.scala](src/main/scala/Main.java)を編集して、CLIアプリを実装してください。
4+
チャレンジ内でファイルの作成が許可されていれば、可読性等のためにファイルを分割する事も可能です。
95

106
## コマンドライン引数の取得方法
11-
デフォルトのParametersクラスではすべてのコマンドライン引数はargs: Array[String]に配列として設定されます
7+
コマンドライン引数は `main` メソッドの `args` として取得可能です
128

139
``` scala
14-
object App {
15-
def apply(params: Parameters) = {
16-
params.args.foreach(println)
17-
}
10+
def main(args: Array[String]): Unit = {
11+
// code to run
1812
}
1913
```
2014

2115
## コマンド実行結果の標準出力への出力
22-
標準の`println`メソッドを使用してください
16+
標準の `println` メソッド等が使用可能です
2317

2418
``` scala
25-
println(params.args(0))
19+
println(params.args
2620
```
27-

build.sbt

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
1-
name := """myapp"""
1+
name := """theapp"""
22

33
version := "1.0"
44

55
scalaVersion := "2.11.8"
66

7-
libraryDependencies += "com.github.scopt" %% "scopt" % "3.5.0"
8-
97
resolvers += Resolver.sonatypeRepo("public")
10-
118
enablePlugins(JavaAppPackaging)

cli-template.yml

+3-5
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ build:
22
- sbt stage
33
files:
44
- .gitignore
5-
- src/main/scala/App.scala
6-
- src/main/scala/Main.scala
7-
- src/main/scala/Parameters.scala
85
- build.sbt
96
- project/plugins.sbt
10-
main: src/main/scala/App.scala
11-
command: target/universal/stage/bin/myapp
7+
- src/main/scala/Main.scala
8+
main: src/main/scala/Main.scala
9+
command: target/universal/stage/bin/theapp

codecheck.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
build:
22
- sbt stage
33
env:
4-
APP_COMMAND: target/universal/stage/bin/myapp
4+
APP_COMMAND: target/universal/stage/bin/theapp
55
test: mocha

package.json

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"name": "codecheck-cli-template",
3+
"version": "1.0.0",
4+
"description": "",
5+
"main": "index.js",
6+
"scripts": {
7+
"test": "codecheck"
8+
},
9+
"repository": {
10+
"type": "git",
11+
"url": "git+https://github.com/code-check/cli-template-scala.git"
12+
},
13+
"keywords": [
14+
"codecheck",
15+
"cli",
16+
"scala"
17+
],
18+
"author": "Givery Inc.",
19+
"license": "ISC",
20+
"bugs": {
21+
"url": "https://github.com/code-check/cli-template-scala/issues"
22+
},
23+
"homepage": "https://github.com/code-check/cli-template-scala#readme",
24+
"dependencies": { },
25+
"devDependencies": {
26+
"chai": "^3.5.0",
27+
"codecheck": "^0.5.3"
28+
}
29+
}

src/main/scala/App.scala

-7
This file was deleted.

src/main/scala/Main.scala

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11

22
object Main {
33
def main(args: Array[String]) = {
4-
Parameters.parser.parse(args, Parameters()) match {
5-
case Some(p) =>
6-
App(p)
7-
case None =>
8-
}
4+
args.foreach(println)
95
}
10-
}
6+
}

src/main/scala/Parameters.scala

-13
This file was deleted.

test/cases.json

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[
2+
{ "it": "hoge ->-> hoge",
3+
"input": ["hoge"], "output": ["hoge"]},
4+
{ "it": "hoge, fuga ->-> hoge, fuga",
5+
"input": ["hoge", "fuga"], "output": ["hoge", "fuga"]},
6+
{ "it": "hoge fuga ->-> hoge fuga",
7+
"input": ["hoge fuga"], "output": ["hoge fuga"]}
8+
]

test/test.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
"use strict";
2+
3+
const assert = require("chai").assert;
4+
const codecheck = require("codecheck");
5+
const app = codecheck.consoleApp(process.env.APP_COMMAND);
6+
7+
describe("Echo", function() {
8+
let cases = require("./cases.json");
9+
cases.forEach(v => {
10+
let desc = v.it || `${v.input.join(", ")} ->-> ${v.output.join(", ")}`;
11+
it(desc, () => {
12+
return app.codecheck(v.input).then(result => {
13+
assert.equal(result.code, 0);
14+
assert.deepEqual(result.stdout, v.output);
15+
});
16+
});
17+
});
18+
});
19+

0 commit comments

Comments
 (0)