summaryrefslogtreecommitdiff
path: root/init.nu
blob: def503fceb39369ca2ef21cbc3658c642d21f75b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#! /usr/bin/env nu

def main [ name: string idx?: int  ] {
  let name = $name | str kebab-case | str downcase
  let idx = if ($idx | is-empty) {
    (
    glob "*_*"
    | split row '/'
    | get (($in | length) - 1)
    | split row '_'
    | get 0
    | into int
    | $in + 1
    | (if $in < 10 { $"0($in)" } else { $in } )
    )

  } else { $idx }

  let problem_name = $"($idx)_($name)"
  let existing = glob * | where $it =~ $name 
  let tmp_dir = $"/tmp/($problem_name)"

  if ($existing | is-not-empty) {
    let ans = input $"Override existing '($existing)'? \(y/n\): "
    match $ans {
      'y' | 'Y' | 'yes' => { mv $problem_name $tmp_dir },
      _ => return
    }
  }

  cargo new $problem_name --name $name --vcs none

  if $env.LAST_EXIT_CODE == 0  {
    rm -r $tmp_dir
  } else {
    mv $tmp_dir $problem_name
  }

}