summaryrefslogtreecommitdiff
path: root/xmake/scripts/action/_create.lua
blob: 133e688d33467a2eb27c48b0053ef894ce526b3c (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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
--!The Automatic Cross-platform Build Tool
-- 
-- XMake is free software; you can redistribute it and/or modify
-- it under the terms of the GNU Lesser General Public License as published by
-- the Free Software Foundation; either version 2.1 of the License, or
-- (at your option) any later version.
-- 
-- XMake is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU Lesser General Public License for more details.
-- 
-- You should have received a copy of the GNU Lesser General Public License
-- along with XMake; 
-- If not, see <a href="http://www.gnu.org/licenses/"> http://www.gnu.org/licenses/</a>
-- 
-- Copyright (C) 2009 - 2015, ruki All rights reserved.
--
-- @author      ruki
-- @file        _create.lua
--

-- define module: _create
local _create = _create or {}

-- load modules
local utils     = require("base/utils")
local config    = require("base/config")
local template  = require("base/template")
local platform  = require("platform/platform")
    
-- need access to the given file?
function _create.need(name)

    -- no accessors
    return false
end

-- done the given config
function _create.done()

    -- the options
    local options = xmake._OPTIONS
    assert(options)

    -- the language
    local language = options.language 
    if not language then
        utils.error("no language!")
        return false
    end

    -- the target name
    local target_name = options.target or path.basename(xmake._PROJECT_DIR)
    print(language, target_name)

    -- ok
    return true
end

-- the menu
function _create.menu()

    return {
                -- xmake p
                shortname = 'p'

                -- usage
            ,   usage = "xmake create|p [options] [target]"

                -- description
            ,   description = "Create a new project."

                -- options
            ,   options = 
                {
                    {'n', "name",       "kv", nil,          "The project name."                                             }
                ,   {'f', "file",       "kv", "xmake.lua",  "Create a given xmake.lua file."                                }
                ,   {'P', "project",    "kv", nil,          "Create from the given project directory."
                                                          , "Search priority:"
                                                          , "    1. The Given Command Argument"
                                                          , "    2. The Envirnoment Variable: XMAKE_PROJECT_DIR"
                                                          , "    3. The Current Directory"                                  }
                ,   {'l', "language",   "kv", "c",          "The project language"
                                                          , function ()
                                                                local descriptions = {}
                                                                local languages = template.languages()
                                                                for _, language in ipairs(languages) do
                                                                    table.insert(descriptions, "    - " .. language)
                                                                end
                                                                return descriptions
                                                            end                                                             }
                ,   {'t', "template",   "kv", "1",          "Select the project template id of the given language."
                                                          , function ()
                                                                local descriptions = {}
                                                                local languages = template.languages()
                                                                for _, language in ipairs(languages) do
                                                                    table.insert(descriptions, string.format("    - language: %s", language))
                                                                    local templates = template.loadall(language)
                                                                    if templates then
                                                                        for i, template in ipairs(templates) do
                                                                            table.insert(descriptions, string.format("      %d. %s", i, utils.ifelse(template.description, template.description, "The Unknown Project")))
                                                                        end
                                                                    end
                                                                end
                                                                return descriptions
                                                            end                                                             }

                ,   {}
                ,   {'v', "verbose",    "k",  nil,          "Print lots of verbose information."                            }
                ,   {nil, "version",    "k",  nil,          "Print the version number and exit."                            }
                ,   {'h', "help",       "k",  nil,          "Print this help message and exit."                             }
         
                ,   {}
                ,   {nil, "target",     "v",  nil,          "Create the given target."                     
                                                          , "Uses the project name as target if not exists."                }
                }
            }
end

-- return module: _create
return _create