import np from 'path' import nfs from 'fs' C = console.log def file(path) do np.join (__dirname, path) def read(file) do try nfs.readFileSync(file, 'utf-8') def run(steps) for step in steps C step.desc let result = step.run! C "[ {result.status ? "OK" : "FAILED"} ] {result.message}" def addProRouterViewsPlugin() const configFile = file "vite.config.js" const configContent = read configFile return { desc: "Adding proRouterViews() plugin to vite.config.js", run: do if configContent if /proRouterViews\(\)/.test(configContent) return status: true, message: "plugin already there" else # import pro-router-imba2/views-plugin nfs.writeFileSync(configFile, configContent.replace("imba()","proRouterViews(), imba()")) return status: true, message: "config updated" else return status: false, message: "vite.config.js not found in the project" } def generateRouterFile() const destinationFile = file 'src/router.imba' const destinationContent = read destinationFile return { desc: "Generating src/router.imba file" run: do if destinationContent if /R\.init/.test(destinationContent) return status: true, message: "router SEEMS to be already on place" else return status: false, message: "file already exist" else try const routerContent = read file('node_modules/pro-router-imba2/src/router.imba') nfs.writeFileSync(destinationFile, routerContent.replace("./", 'pro-router-imba2')) return status: true, message: "generated successfuly" catch return status: false, message: 'unable to copy router.imba template' } def initializeViewsFile() const path = 'src/views.json' const viewsFile = file path return { desc: "Initializing views list file - src/views.json" run: do if nfs.existsSync(path) return status: true, message: ["file already exists"] else nfs.writeFileSync viewsFile, "[]" return status: true, message: ["initialized successfuly"] } def importRouter const indexFile = file 'src/index.js' const indexContent = read indexFile return { desc: "Adding import definition to src/index.js" run: do if indexContent if /import '\.\/router\.imba'/.test(indexContent) return status: true, message: "import definition already there" else try nfs.writeFileSync indexFile, "import './router.imba'\n" + indexContent return status: true, message: "definition added successfuly" catch return status: false, message: "failed during writing to file" else return status: false, message: 'no such file or directory' } if process.argv.slice(2) == "init" run([addProRouterViewsPlugin(), generateRouterFile(), initializeViewsFile(), importRouter()]) else C("For initial configuration of pro router use command: pro-router init")